歡迎光臨蘇州中飛遙感技術服務有限公司,主營:無人機傾斜攝影,數字孿生建模,三維實景建模,無人機航拍

網站地圖

咨詢熱線:

18051783950

蘇州中飛遙感技術服務有限公司

新聞資訊

新聞資訊

聯系我們

手機:18051783950

電話:0512-69221005

郵箱:773537975@qq.com

地址:蘇州相城區元和街道嘉元路959號元和大廈4樓404C室

行業動態

三維重建技術概述——重建流程

  • 作者:蘇州中飛
  • 發布時間:2023-06-14
  • 點擊:

三維重建流程

本文使用Kinect采集景物的點云數據,經過深度圖像增強、點云計算與配準、數據融合、表面生成等步驟,完成對景物的三維重建。

圖2-6 基于深度傳感器的三維重建流程圖

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

2.1 深度圖像的獲取

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

2.2 預處理

受到設備分辨率等限制,它的深度信息也存在著許多缺點。為了更好的促進后續基于深度圖像的應用,必須對深度圖像進行去噪和修復等圖像增強過程。作為本文的重點問題,具體的處理方法將在第四章進行詳細的解釋說明。

2.3 點云計算

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

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

2.4 點云配準

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

三維深度信息的配準按不同的圖像輸入條件與重建輸出需求被分為:粗糙配準、精細配準和全局配準等三類方法。

(1)粗糙配準(Coarse Registration)

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

隨后根據特征方程實現初步的配準。粗糙配準后的點云和目標點云將處于同一尺度像素采樣間隔與參考坐標系內,通過自動記錄坐標,得到粗匹配初始值。

(2)精細配準(Fine Registration)

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

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

(3)全局配準(Global Registration)

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

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

2.5 數據融合

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

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

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

圖2-7 基于空間體的點云融合

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

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

鑒于TSDF算法采用了z小二乘法進行了優化,點云融合時又利用了權重值,所有該算法對點云數據有著明顯的降噪功能。

2.6 表面生成

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

然后計算該體元中十二條棱和等值面的交點,并構造體元中的三角面片,所有的三角面片把體元分成了等值面內與等值面外兩塊區域。z后連接此數據場中的所有體元的三角面片,構成等值面。合并所有立方體的等值面便可生成完整的三維表面。

性能優化

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)三級架構,計算過程一般由單一的網格完成,網格被平均分成多個程序塊,每個程序塊又由多個線程組成,z終由單個線程完成每個基本運算,如圖2-8所示。

圖2-8 CUDA模型

為了更深入的理解CUDA模型的計算過程,計算某點的深度值與三維坐標之間的轉換:

上式中的表示深度值,內參數矩陣是已知量,是該點的坐標??梢园l現這個點的轉換過程與其他點轉換過程是相互立的,所以整幅圖像中各點的坐標轉換能夠并行執行。這種并行計算可以大幅提升整體計算的速率。例如,利用一個網格來計算一幅像素的深度圖像到三維坐標的轉換,只需要將此網格均分成塊,每塊包括個線程,每個線程分別操作一個像素點,便可以便捷的完成所有的坐標轉換運算。

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

在線客服
聯系方式

18051783950

微信掃一掃

中文字幕乱码一区二区免费_免费人成在线观看网站免费_国产无码性爱_欧美日韩在线观看精品