1. 程式人生 > >三維重建技術概述

三維重建技術概述

基於視覺的三維重建,指的是通過攝像機獲取場景物體的資料影象,並對此影象進行分析處理,再結合計算機視覺知識推匯出現實環境中物體的三維資訊。

1. 相關概念

(1)彩色影象與深度影象

彩色影象也叫作RGB影象,R、G、B三個分量對應於紅、綠、藍三個通道的顏色,它們的疊加組成了影象畫素的不同灰度級。RGB顏色空間是構成多彩現實世界的基礎。深度影象又被稱為距離影象,與灰度影象中畫素點儲存亮度值不同,其畫素點儲存的是該點到相機的距離,即深度值。圖2-1表示深度影象與灰度影象之間的關係。

這裡寫圖片描述
圖2-1 深度影象與灰度影象
Fig.2-1 The depth image and gray image

深度值指的目標物體與測量器材之間的距離。由於深度值的大小隻與距離有關,而與環境、光線、方向等因素無關,所以深度影象能夠真實準確的體現景物的幾何深度資訊。通過建立物體的空間模型,能夠為深層次的計算機視覺應用提供更堅實的基礎。

這裡寫圖片描述
圖2-2 人物的彩色影象與深度影象
Fig.2-2 Color image and depth image of the characters

(2)PCL

PCL(Point Cloud Library,點雲庫)是由斯坦福大學的Dr.Radu等學者基於ROS(Robot Operating System,機器人作業系統)下開發與維護的開源專案,最初被用來輔助機器人感測、認知和驅動等領域的開發。2011年PCL正式向公眾開放。隨著對三維點雲演算法的加入與擴充,PCL逐步發展為免費、開源、大規模、跨平臺的C++程式設計庫。

PCL框架包括很多先進的演算法和典型的資料結構,如濾波、分割、配準、識別、追蹤、視覺化、模型擬合、表面重建等諸多功能。能夠在各種作業系統和大部分嵌入式系統上執行,具有較強的軟體可移植性。鑑於PCL的應用範圍非常廣,專家學者們對點雲庫的更新維護也非常及時。PCL的發展時至今日,已經來到了1.7.0版本。相較於早期的版本,加入了更多新鮮、實用、有趣的功能,為點雲資料的利用提供了模組化、標準化的解決方案。再通過諸如圖形處理器、共享儲存並行程式設計、統一計算裝置架構等領先的高效能技術,提升PCL相關程序的速率,實現實時性的應用開發。

在演算法方面,PCL是一套包括資料濾波、點雲配準、表面生成、影象分割和定位搜尋等一系列處理點雲資料的演算法。基於不同型別區分每一套演算法,以此把整合所有三維重建流水線功能,保證每套演算法的緊湊性、可重用性與可執行性。例如PCL中實現管道運算的介面流程:

①建立處理物件,例如濾波、特徵估計、影象分割等;
②通過setInputCloud輸入初始點雲資料,進入處理模組;
③設定演算法相關引數;
④呼叫不同功能的函式實現運算,並輸出結果。

為了實現模組化的應用與開發,PCL被細分成多組獨立的程式碼集合。因此便可方便快捷的應用於嵌入式系統中,實現可移植的單獨編譯。如下列舉了部分常用的演算法模組:

libpcl I/O:完成資料的輸入、輸出過程,如點雲資料的讀寫;
libpcl filters:完成資料取樣、特徵提取、引數擬合等過程;
libpcl register:完成深度影象的配準過程,例如迭代最近點演算法;
libpcl surface:完成三維模型的表面生成過程,包括三角網格化、表面平滑等。

此類常用的演算法模組均具有迴歸測試功能,以確保使用過程中沒有引進錯誤。測試一般由專門的機構負責編寫用例庫。檢測到迴歸錯誤時,會立即將訊息反饋給相應的作者。因此能提升PCL和整個系統的安全穩定性。

(3)點雲資料

如圖2-3所示,展示了典型的點雲資料(Point Cloud Data,PCD)模型。

這裡寫圖片描述
圖2-3 點雲資料及其放大效果

點雲資料通常出現在逆向工程中,是由測距裝置獲取的物體表面的資訊集合。其掃描資料以點的形式進行記錄,這些點既可以是三維座標,也可以是顏色或者光照強度等資訊。通常所使用的點雲資料一般包括點座標精度、空間解析度和表面法向量等內容。點雲一般以PCD格式進行儲存,這種格式的點雲資料可操作性較強,同時能夠提高點雲配準融合的速度。本文研究的點雲資料為非結構化的散亂點雲,屬於三維重建特有的點雲特點。

(4)座標系
在三維空間中,所有的點必須以座標的形式來表示,並且可以在不同的座標系之間進行轉換。首先介紹基本座標系的概念、計算及相互關係。

①影象座標系

影象座標系分為畫素和物理兩個座標系種類。數字影象的資訊以矩陣形式儲存,即一副畫素的影象資料儲存在維矩陣中。影象畫素座標系以為原點、以畫素為基本單位,U、V分別為水平、垂直方向軸。影象物理座標系以攝像機光軸與影象平面的交點作為原點、以米或毫米為基本單位,其X、Y軸分別與U、V軸平行。圖2-4展示的是兩種座標系之間的位置關係:

這裡寫圖片描述
圖2-4 影象畫素座標系與物理座標系
Fig.2-4 Image pixel coordinate system and physical coordinate system

令U-V座標系下的座標點(u0,v0),與代表畫素點在X軸與Y軸上的物理尺寸。那麼影象中的所有畫素點在U-V座標系與在X-Y座標系下的座標間有著如式(2-1)表示的關係:
這裡寫圖片描述

其中指的是影象座標系的座標軸傾斜相交而形成的傾斜因子(Skew Factor)。

②攝像機座標系
攝像機座標系由攝像機的光心及三條、、軸所構成。它的、軸對應平行於影象物理座標系中的、軸,軸為攝像機的光軸,並與由原點、、軸所組成的平面垂直。如圖2-5所示:

這裡寫圖片描述
圖2-5攝像機座標系

令攝像機的焦距是f,則影象物理座標系中的點與攝像機座標系中的點的關係為:

③世界座標系

考慮到攝像機位置具有不確定性,因此有必要採用世界座標系來統一攝像機和物體的座標關係。世界座標系由原點及、、三條軸組成。世界座標與攝像機座標間有著(2-3)所表達的轉換關係:

這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述

( 23 )
其中,是旋轉矩陣,代表攝像機在世界座標系下的指向;是平移向量,代表了攝像機的位置。

2.三維重建流程

本文使用Kinect採集景物的點雲資料,經過深度影象增強、點雲端計算與配準、資料融合、表面生成等步驟,完成對景物的三維重建。

這裡寫圖片描述
圖2-6 基於深度感測器的三維重建流程圖
Fig.2-6 Flow chart of 3D reconstruction based on depth sensor

圖2-6顯示的流程表明,對獲取到的每一幀深度影象均進行前六步操作,直到處理完若干幀。最後完成紋理對映。下面對每個步驟作詳細的說明。

2.1 深度影象的獲取

景物的深度影象由Kinect在Windows平臺下拍攝獲取,同時可以獲取其對應的彩色影象。為了獲取足夠多的影象,需要變換不同的角度來拍攝同一景物,以保證包含景物的全部資訊。具體方案既可以是固定Kinect感測器來拍攝旋轉平臺上的物體;也可以是旋轉Kinect感測器來拍攝固定的物體。價格低廉、操作簡單的深度感測器裝置能夠獲取實時的景物深度影象,極大的方便了人們的應用。

2.2 預處理

受到裝置解析度等限制,它的深度資訊也存在著許多缺點。為了更好的促進後續基於深度影象的應用,必須對深度影象進行去噪和修復等影象增強過程。作為本文的重點問題,具體的處理方法將在第四章進行詳細的解釋說明。

2.3 點雲端計算

經過預處理後的深度影象具有二維資訊,畫素點的值是深度資訊,表示物體表面到Kinect感測器之間的直線距離,以毫米為單位。以攝像機成像原理為基礎,可以計算出世界座標系與影象畫素座標系之間具有下式的轉換關係:

這裡寫圖片描述
這裡寫圖片描述

則k值只與有關,而等引數只與攝像機的內部構造有關,所以稱為像機的內參數矩陣。以攝像機作為世界座標系,即,則深度值即為世界座標系中的值,與之對應的影象座標就是影象平面的點。

2.4 點雲配準

對於多幀通過不同角度拍攝的景物影象,各幀之間包含一定的公共部分。為了利用深度影象進行三維重建,需要對影象進行分析,求解各幀之間的變換引數。深度影象的配準是以場景的公共部分為基準,把不同時間、角度、照度獲取的多幀影象疊加匹配到統一的座標系中。計算出相應的平移向量與旋轉矩陣,同時消除冗餘資訊。點雲配準除了會制約三維重建的速度,也會影響到最終模型的精細程度和全域性效果。因此必須提升點雲配准算法的效能。

三維深度資訊的配準按不同的影象輸入條件與重建輸出需求被分為:粗糙配準、精細配準和全域性配準等三類方法。

(1)粗糙配準(Coarse Registration)

粗糙配準研究的是多幀從不同角度採集的深度影象。首先提取兩幀影象之間的特徵點,這種特徵點可以是直線、拐點、曲線曲率等顯式特徵,也可以是自定義的符號、旋轉圖形、軸心等型別的特徵。

隨後根據特徵方程實現初步的配準。粗糙配準後的點雲和目標點雲將處於同一尺度(畫素取樣間隔)與參考座標系內,通過自動記錄座標,得到粗匹配初始值。

(2)精細配準(Fine Registration)

精細配準是一種更深層次的配準方法。經過前一步粗配準,得到了變換估計值。將此值作為初始值,在經過不斷收斂與迭代的精細配準後,達到更加精準的效果。以經典的由Besl和Mckay[49]提出的ICP(Iterative Closest Point,迭代最近點)演算法為例,該演算法首先計算初始點雲上所有點與目標點雲的距離,保證這些點和目標點雲的最近點相互對應,同時構造殘差平方和的目標函式。

基於最小二乘法對誤差函式進行最小化處理,經過反覆迭代,直到均方誤差小於設定的閾值。ICP演算法能夠獲得精正確無誤的配準結果,對自由形態曲面配準問題具有重要意義。另外還有如SAA(Simulate Anneal Arithmetic,模擬退火)演算法、GA(Genetic Algorithm,遺傳)演算法等也有各自的特點與使用範疇。

(3)全域性配準(Global Registration)

全域性配準是使用整幅影象直接計算轉換矩陣。通過對兩幀精細配準結果,按照一定的順序或一次性的進行多幀影象的配準。這兩種配準方式分別稱為序列配準(Sequential Registration)和同步配準(Simultaneous Registration)。

配準過程中,匹配誤差被均勻的分散到各個視角的多幀影象中,達到削減多次迭代引起的累積誤差的效果。值得注意的是,雖然全域性配準可以減小誤差,但是其消耗了較大的記憶體儲存空間,大幅度提升了演算法的時間複雜度。

2.5 資料融合

經過配準後的深度資訊仍為空間中散亂無序的點雲資料,僅能展現景物的部分資訊。因此必須對點雲資料進行融合處理,以獲得更加精細的重建模型。以Kinect感測器的初始位置為原點構造體積網格,網格把點雲空間分割成極多的細小立方體,這種立方體叫做體素(Voxel)。通過為所有體素賦予SDF(Signed Distance Field,有效距離場)值,來隱式的模擬表面。

SDF值等於此體素到重建表面的最小距離值。當SDF值大於零,表示該體素在表面前;當SDF小於零時,表示該體素在表面後;當SDF值越接近於零,表示該體素越貼近於場景的真實表面。KinectFusion技術雖然對場景的重建具有高效實時的效能,但是其可重建的空間範圍卻較小,主要體現在消耗了極大的空間用來存取數目繁多的體素。

為了解決體素佔用大量空間的問題,Curless[50]等人提出了TSDF (Truncated Signed Distance Field,截斷符號距離場)演算法,該方法只儲存距真實表面較近的數層體素,而非所有體素。因此能夠大幅降低KinectFusion的記憶體消耗,減少模型冗餘點。

這裡寫圖片描述
圖2-7 基於空間體的點雲融合

TSDF演算法採用柵格立方體代表三維空間,每個柵格中存放的是其到物體表面的距離。TSDF值的正負分別代表被遮擋面與可見面,而表面上的點則經過零點,如圖2-7中左側展示的是柵格立方體中的某個模型。若有另外的模型進入立方體,則按照下式(2-9)與(2-10)實現融合處理。

其中,指的是此時點雲到柵格的距離,是柵格的初始距離,是用來對同一個柵格距離值進行融合的權重。如圖2-7中右側所示,兩個權重之和為新的權重。對於KinectFusion演算法而言,當前點雲的權重值設定為1。

鑑於TSDF演算法採用了最小二乘法進行了優化,點雲融合時又利用了權重值,所有該演算法對點雲資料有著明顯的降噪功能。

2.6 表面生成

表面生成的目的是為了構造物體的可視等值面,常用體素級方法直接處理原始灰度體資料。Lorensen[51]提出了經典體素級重建演算法:MC(Marching Cube,移動立方體)法。移動立方體法首先將資料場中八個位置相鄰的資料分別存放在一個四面體體元的八個頂點處。對於一個邊界體素上一條稜邊的兩個端點而言,當其值一個大於給定的常數T,另一個小於T時,則這條稜邊上一定有等值面的一個頂點。

然後計算該體元中十二條稜和等值面的交點,並構造體元中的三角面片,所有的三角面片把體元分成了等值面內與等值面外兩塊區域。最後連線此資料場中的所有體元的三角面片,構成等值面。合併所有立方體的等值面便可生成完整的三維表面。

3 效能優化

Kinect等深度感測器的出現,不僅給娛樂應用帶來了變革,同樣對科學研究提供了新的方向。尤其是在三維重建領域。然而由於三維重建過程涉及到大量密集的點雲資料處理,計算量巨大,所以對系統進行相應的效能優化顯得非常的重要。本文采用基於GPU(Graphic Processing Unit,圖形處理器)並行運算功能,以提高整體的執行效率。

NVIDIA公司於1999年提出了GPU概念。在這十幾年間,依靠硬體行業的改革創新,晶片上電晶體數量持續增多,GPU效能以半年翻一番的速度成倍提升。GPU的浮點運算能力遠超CPU上百倍,卻具有非常低的能耗,極具價效比。因GPU不僅廣泛應用於圖形影象處理中,也在如視訊處理、石油勘探、生物化學、衛星遙感資料分析、氣象預報、資料探勘等方面嶄露頭角。

作為GPU的提出者,NVIDIA公司一直致力於GPU效能提升的研究工作,並在2007年推出了CUDA架構。CUDA(Compute Unified Device Architecture,統一計算裝置架構)是一種平行計算程式架構。在CUDA的支援下,使用者可以編寫程式以利用NVIDIA系列GPU完成大規模平行計算。GPU在CUDA中被用作通用計算裝置,而不只是處理影象。在CUDA中,將計算機CPU稱為主機(Host),GPU稱為裝置(Device)。

主機端和裝置端都有程式執行,主機端主要完成程式的流程與序列計算模組,而裝置端則專門處理平行計算。其中,裝置端的平行計算過程被記錄在Kernel核心函式中,主機端可以從Kernel函式入口執行平行計算的呼叫功能。在此過程中,雖然Kernel函式執行同一程式碼,但卻處理著不同的資料內容。

Kernel函式採用擴充套件的C語言來程式設計,稱為CUDAC語言。需要注意的是,並不是所有的運算都可以採用CUDA平行計算。只有獨立性的計算,如矩陣的加減,因為只涉及到對應下標的元素的加減,不同下標元素毫無關聯,所以適用於平行計算;而對於如階乘的計算則必須對所有數累積相乘,故無法採用平行計算。

CUDA具有執行緒(Thread)、程式塊(Block)、網格(Grid)三級架構,計算過程一般由單一的網格完成,網格被平均分成多個程式塊,每個程式塊又由多個執行緒組成,最終由單個執行緒完成每個基本運算,如圖2-8所示。
這裡寫圖片描述
圖2-8 CUDA模型

為了更深入的理解CUDA模型的計算過程,這裡以前一章中提到的公式(2-11)為例,計算某點的深度值與三維座標之間的轉換:
這裡寫圖片描述
上式中的表示深度值,內參數矩陣是已知量,是該點的座標。可以發現這個點的轉換過程與其他點轉換過程是相互獨立的,所以整幅影象中各點的座標轉換能夠並行執行。這種平行計算可以大幅提升整體計算的速率。例如,利用一個網格來計算一幅畫素的深度影象到三維座標的轉換,只需要將此網格均分成塊,每塊包括個執行緒,每個執行緒分別操作一個畫素點,便可以便捷的完成所有的座標轉換運算。

通過GPU的平行計算,三維重建效能得到了大幅的提升,實現了實時的輸入輸出。對於Kinect在實際生產生活中的應用奠定了基礎。

小結

首先介紹了與三維重建相關的基本概念,包括深度影象、點雲資料、四種座標系及其之間的轉換關係等。

相關推薦

重建技術概述

基於視覺的三維重建,指的是通過攝像機獲取場景物體的資料影象,並對此影象進行分析處理,再結合計算機視覺知識推匯出現實環境中物體的三維資訊。 1. 相關概念 (1)彩色影象與深度影象 彩色影象也叫作RGB影象,R、G、B三個分量對應於紅、綠、藍三個通道的顏色,它們的疊加組成

重建技術(2)各種方法簡介

轉自:三維重建技術 各種方法簡介, G換一種活法 這個博主也是轉載的,可是來源不可查,所以暫把來源寫為這個博主的部落格 三維重建技術通過深度資料獲取、預處理、點雲配準與融合、生成表面等過程,把真實場景刻畫成符合計算機邏輯表達的數學模型。這種模型可以對如文物保護、

重建技術 各種方法簡介

三維重建技術通過深度資料獲取、預處理、點雲配準與融合、生成表面等過程,把真實場景刻畫成符合計算機邏輯表達的數學模型。這種模型可以對如文物保護、遊戲開發、建築設計、臨床醫學等研究起到輔助的作用。 1.1 研究背景及意義 人類通過雙眼來探索與發現世界。人類接收外部資訊的方

重建:深度感測技術的中外差異

本文只有幾條簡介,請拜訪原文... 3D感測技術在智慧手機使用者中很流行嗎?它會是未來每一支智慧手機的必備功能嗎?手機的發展推動了3D相機的發展應用,而不是工業應用,也算是另一種路徑。 3D技術生態系統 然而,從工程的角度來看,最耐人尋味之處在於揭密移動

重建概述

三維重建技術通過深度資料獲取、預處理、點雲配準與融合、生成表面等過程,把真實場景刻畫成符合計算機邏輯表達的數學模型。這種模型可以對如文物保護、遊戲開發、建築設計、臨床醫學等研究起到輔助的作用。 1.1 研究背景及意義 人類通過雙眼來探索與發現世界。人類接收外部資訊的方

重建概述

基於視覺的三維重建,指的是通過攝像機獲取場景物體的資料影象,並對此影象進行分析處理,再結合計算機視覺知識推匯出現實環境中物體的三維資訊。 1. 相關概念 (1)彩色影象與深度影象 彩色影象也叫作RGB影象,R、G、B三個分量對應於紅、綠、藍三個通道的顏色,它們的疊加

重建

class con ++ git tlab iss mat bsp const Poission Reconstruction matlab源碼 c++源碼 實時稠密三維重建 三維重建

重建方法

光學 條件 可靠 投影儀 調制 三角形 坐標 角點 標定 最近在看三維重建方面的論文,進行一下知識總結。 三維重建技術 三維重建技術就是要在計算機中真實地重建出該物體表面的三維虛擬模型,構建一個物體完整的三維模型,大致可以分為三步: 利用攝像機等圖像采集設備對物體的點雲數

【計算機視覺】opencv靶標相機姿態解算2 根據四個特徵點估計相機姿態 及 實時位姿估計與重建相機姿態

https://blog.csdn.net/kyjl888/article/details/71305149 1 基本原理之如何解PNP問題 轉載 基本原理之如何解PNP問題 http://www.cnblogs.com/singlex/p/pose_estimati

《基於影象點特徵的多檢視重建》——相關概念彙總筆記

1.    基於影象的影象3D重建 傳統上首先使用 Structure-from-Motion 恢復場景的稀疏表示和輸入影象的相機姿勢。 然後,此輸出用作Multi-View Stereo(多檢視立體)的輸入,以恢復場景衝密集表示。     

初探重建

三維重建分類   分為主動式重建與被動式重建。目前最主要的是立體視覺重建(被動式重建中的一種方法)。其主要包括1、直接利用測距器獲取程距資訊;2、通過一幅影象推測三維資訊;3、利用不同視點上的兩幅或是多幅影象恢復三維資訊(最常用)。   立體視覺法   傳統的立體成像系統使用兩個放在一起的攝

雙目立體視覺重建

雙目立體視覺的整體流程包括:影象獲取、雙目標定、雙目矯正、立體匹配、三維重建。 影象獲取 雙目相機拍攝獲取 左右目影象 雙目標定 內參 外參 相機矩陣

基於數字光柵投影的結構光測量技術(總結)

概述 三維重建 光學三維測量 被動三維測量 主動三維測量 基於PMP的結構光三維測量技術 結

VS2017+Opencv3.2.0SFM實現多目重建

實驗大致步驟: 開發環境:VS2017+opencv3.2.0+opencv_contrib(因為要用到sift運算元提取特徵點) 1.首先需要已知相機的內部引數矩陣f為相機焦距,Cx,Cy分別為相機光心位置; 2.以第一次相機的座標系為世界座標系,對第一次和第二次拍攝的圖片做特

光柵投影和重建

光柵投影和三維重建 客觀物體在空間上是三維的,但是人們從客觀景物上得到的影象往往是二維的。光柵投影就是通過獲取的二維資訊來反映並還原物體的三維資訊。 一、三維形貌測量技術的發展 三維形貌測量技術又稱3D 輪廓術(3DProfilometry),是一種通過運用儀器獲取被測物體外部形

新一代GIS技術體系再升

編者按:在2018 GIS 軟體技術大會上,超圖釋出了SuperMap GIS 9D(2019)系列產品,該版本全面擁抱空間大資料技術,並在微服務、容器化、雲原生、自動化運維等方面全新升級,進一步優化和提升了雲GIS功能,構建了新一代三維GIS技術體系。即日起,我們將陸續在“超圖集團”公

SFM重建原始碼(Matlab)

這裡採用的是Yi Ma , Stefano Soatto. An Invitation to 3-D Vision , From Images to Geometric Models 的演算法 %// Algorithm 8.1. also 

VS2013 + Kinect v2.0 + infiniTAM 重建

最近在做深度相機進行三維重建的工作,想配置一下非常有名的Kinect Fusion,也就是 PCL_KinFu 這個功能,PCL的庫很好配,但是 KinFu 就異常難配了,windows下試了5次左右沒有成功,每次都是最後編譯生成出一部分的exe和dll,但是就是沒有跟 kinfu 有關的,然後在U

快速重建 快速光柵投影

          以前做的三維掃描裝置的打光速度不高,主要受限於HDMI的資料傳輸和非觸發相機採集的關係。 最近搞了一款可以帶觸發的投影儀終於可以實現快速光柵投射了,投影儀幀率120,相機幀率36.具體如下:   1:將光柵資

指紋重建

     基於多頻外差單目三維重建,單目重建精度驗證,從之前測試的精度看500w相機的精度在0.005mm左右。 這個精度一直在考慮對指紋的重建效果,如下圖所示,測量距離在20cm,測量範圍8cm*10cm,從重建的點雲看 紋理比較清晰。之前也接觸過指紋三維