三維重建的英文術(shù)語(yǔ)名稱(chēng)是3D Reconstruction. 三維重建是指對(duì)三維物體建立適合計(jì)算機(jī)表示和處理的數(shù)學(xué)模型,是在計(jì)算機(jī)環(huán)境下對(duì)其進(jìn)行處理、操作和分析其性質(zhì)的基礎(chǔ),也是在計(jì)算機(jī)中建立表達(dá)客觀世界的虛擬現(xiàn)實(shí)的關(guān)鍵技術(shù)。 三維重建的步驟 (1) 圖像獲?。涸谶M(jìn)行圖像處理之前,先要用攝像機(jī)獲取三維物體的二維圖像。光照條件、相機(jī)的幾何特性等對(duì)后續(xù)的圖像處理造成很大的影響。 (2)攝像機(jī)標(biāo)定:通過(guò)攝像機(jī)標(biāo)定來(lái)建立有效的成像模型,求解出攝像機(jī)的內(nèi)外參數(shù),這樣就可以結(jié)合圖像的匹配結(jié)果得到空間中的三維點(diǎn)坐標(biāo),從而達(dá)到進(jìn)行三維重建的目的。 (3)特征提?。禾卣髦饕ㄌ卣鼽c(diǎn)、特征線和區(qū)域。大多數(shù)情況下都是以特征點(diǎn)為匹配基元,特征點(diǎn)以何種形式提取與用何種匹配策略緊密聯(lián)系。因此在進(jìn)行特征點(diǎn)的提取時(shí)需要先確定用哪種匹配方法。 特征點(diǎn)提取算法可以總結(jié)為:基于方向?qū)?shù)的方法,基于圖像亮度對(duì)比關(guān)系的方法,基于數(shù)學(xué)形態(tài)學(xué)的方法三種。 (4)立體匹配:立體匹配是指根據(jù)所提取的特征來(lái)建立圖像對(duì)之間的一種對(duì)應(yīng)關(guān)系,也就是將同一物理空間點(diǎn)在兩幅不同圖像中的成像點(diǎn)進(jìn)行一一對(duì)應(yīng)起來(lái)。在進(jìn)行匹配時(shí)要注意場(chǎng)景中一些因素的干擾,比如光照條件、噪聲干擾、景物幾何形狀畸變、表面物理特性以及攝像機(jī)機(jī)特性等諸多變化因素。 (5)三維重建:有了比較精確的匹配結(jié)果,結(jié)合攝像機(jī)標(biāo)定的內(nèi)外參數(shù),就可以恢復(fù)出三維場(chǎng)景信息。由于三維重建精度受匹配精度,攝像機(jī)的內(nèi)外參數(shù)誤差等因素的影響,因此首先需要做好前面幾個(gè)步驟的工作,使得各個(gè)環(huán)節(jié)的精度高,誤差小,這樣才能設(shè)計(jì)出一個(gè)比較精確的立體視覺(jué)系統(tǒng)。 基于視覺(jué)的三維重建,指的是通過(guò)攝像機(jī)獲取場(chǎng)景物體的數(shù)據(jù)圖像,并對(duì)此圖像進(jìn)行分析處理,再結(jié)合計(jì)算機(jī)視覺(jué)知識(shí)推導(dǎo)出現(xiàn)實(shí)環(huán)境中物體的三維信息。 1. 相關(guān)概念 (1)彩色圖像與深度圖像 彩色圖像也叫作RGB圖像,R、G、B三個(gè)分量對(duì)應(yīng)于紅、綠、藍(lán)三個(gè)通道的顏色,它們的疊加組成了圖像像素的不同灰度級(jí)。RGB顏色空間是構(gòu)成多彩現(xiàn)實(shí)世界的基礎(chǔ)。深度圖像又被稱(chēng)為距離圖像,與灰度圖像中像素點(diǎn)存儲(chǔ)亮度值不同,其像素點(diǎn)存儲(chǔ)的是該點(diǎn)到相機(jī)的距離,即深度值。圖2-1表示深度圖像與灰度圖像之間的關(guān)系。
深度值指的目標(biāo)物體與測(cè)量器材之間的距離。由于深度值的大小只與距離有關(guān),而與環(huán)境、光線、方向等因素?zé)o關(guān),所以深度圖像能夠真實(shí)準(zhǔn)確的體現(xiàn)景物的幾何深度信息。通過(guò)建立物體的空間模型,能夠?yàn)樯顚哟蔚挠?jì)算機(jī)視覺(jué)應(yīng)用提供更堅(jiān)實(shí)的基礎(chǔ)。
圖2-2 人物的彩色圖像與深度圖像 (2)PCL PC++L(Point Cloud Library,點(diǎn)云庫(kù))是由斯坦福大學(xué)的Dr.Radu等學(xué)者基于ROS(Robot Operating System,機(jī)器人操作系統(tǒng))下開(kāi)發(fā)與維護(hù)的開(kāi)源項(xiàng)目,最初被用來(lái)輔助機(jī)器人傳感、認(rèn)知和驅(qū)動(dòng)等領(lǐng)域的開(kāi)發(fā)。2011年P(guān)CL正式向公眾開(kāi)放。隨著對(duì)三維點(diǎn)云算法的加入與擴(kuò)充,PCL逐步發(fā)展為免費(fèi)、開(kāi)源、大規(guī)模、跨平臺(tái)的C++編程庫(kù)。 PCL框架包括很多先進(jìn)的算法和典型的數(shù)據(jù)結(jié)構(gòu),如濾波、分割、配準(zhǔn)、識(shí)別、追蹤、可視化、模型擬合、表面重建等諸多功能。能夠在各種操作系統(tǒng)和大部分嵌入式系統(tǒng)上運(yùn)行,具有較強(qiáng)的軟件可移植性。鑒于PCL的應(yīng)用范圍非常廣,專(zhuān)家學(xué)者們對(duì)點(diǎn)云庫(kù)的更新維護(hù)也非常及時(shí)。PCL的發(fā)展時(shí)至今日,已經(jīng)來(lái)到了1.7.0版本。相較于早期的版本,加入了更多新鮮、實(shí)用、有趣的功能,為點(diǎn)云數(shù)據(jù)的利用提供了模塊化、標(biāo)準(zhǔn)化的解決方案。再通過(guò)諸如圖形處理器、共享存儲(chǔ)并行編程、統(tǒng)一計(jì)算設(shè)備架構(gòu)等領(lǐng)先的高性能技術(shù),提升PCL相關(guān)進(jìn)程的速率,實(shí)現(xiàn)實(shí)時(shí)性的應(yīng)用開(kāi)發(fā)。 在算法方面,PCL是一套包括數(shù)據(jù)濾波、點(diǎn)云配準(zhǔn)、表面生成、圖像分割和定位搜索等一系列處理點(diǎn)云數(shù)據(jù)的算法。基于不同類(lèi)型區(qū)分每一套算法,以此把整合所有三維重建流水線功能,保證每套算法的緊湊性、可重用性與可執(zhí)行性。例如PCL中實(shí)現(xiàn)管道運(yùn)算的接口流程:
①創(chuàng)建處理對(duì)象,例如濾波、特征估計(jì)、圖像分割等; 為了實(shí)現(xiàn)模塊化的應(yīng)用與開(kāi)發(fā),PCL被細(xì)分成多組獨(dú)立的代碼集合。因此便可方便快捷的應(yīng)用于嵌入式系統(tǒng)中,實(shí)現(xiàn)可移植的單獨(dú)編譯。如下列舉了部分常用的算法模塊:
此類(lèi)常用的算法模塊均具有回歸測(cè)試功能,以確保使用過(guò)程中沒(méi)有引進(jìn)錯(cuò)誤。測(cè)試一般由專(zhuān)門(mén)的機(jī)構(gòu)負(fù)責(zé)編寫(xiě)用例庫(kù)。檢測(cè)到回歸錯(cuò)誤時(shí),會(huì)立即將消息反饋給相應(yīng)的作者。因此能提升PCL和整個(gè)系統(tǒng)的安全穩(wěn)定性。 (3)點(diǎn)云數(shù)據(jù) 如圖2-3所示,展示了典型的點(diǎn)云數(shù)據(jù)(Point Cloud Data,PCD)模型。
點(diǎn)云數(shù)據(jù)通常出現(xiàn)在逆向工程中,是由測(cè)距設(shè)備獲取的物體表面的信息集合。其掃描資料以點(diǎn)的形式進(jìn)行記錄,這些點(diǎn)既可以是三維坐標(biāo),也可以是顏色或者光照強(qiáng)度等信息。通常所使用的點(diǎn)云數(shù)據(jù)一般包括點(diǎn)坐標(biāo)精度、空間分辨率和表面法向量等內(nèi)容。點(diǎn)云一般以PCD格式進(jìn)行保存,這種格式的點(diǎn)云數(shù)據(jù)可操作性較強(qiáng),同時(shí)能夠提高點(diǎn)云配準(zhǔn)融合的速度。本文研究的點(diǎn)云數(shù)據(jù)為非結(jié)構(gòu)化的散亂點(diǎn)云,屬于三維重建特有的點(diǎn)云特點(diǎn)。
(4)坐標(biāo)系 ①圖像坐標(biāo)系 圖像坐標(biāo)系分為像素和物理兩個(gè)坐標(biāo)系種類(lèi)。數(shù)字圖像的信息以矩陣形式存儲(chǔ),即一副像素的圖像數(shù)據(jù)存儲(chǔ)在維矩陣中。圖像像素坐標(biāo)系以為原點(diǎn)、以像素為基本單位,U、V分別為水平、垂直方向軸。圖像物理坐標(biāo)系以攝像機(jī)光軸與圖像平面的交點(diǎn)作為原點(diǎn)、以米或毫米為基本單位,其X、Y軸分別與U、V軸平行。圖2-4展示的是兩種坐標(biāo)系之間的位置關(guān)系:
令U-V坐標(biāo)系下的坐標(biāo)點(diǎn)(u0,v0),與代表像素點(diǎn)在X軸與Y軸上的物理尺寸。那么圖像中的所有像素點(diǎn)在U-V坐標(biāo)系與在X-Y坐標(biāo)系下的坐標(biāo)間有著如式(2-1)表示的關(guān)系: 其中指的是圖像坐標(biāo)系的坐標(biāo)軸傾斜相交而形成的傾斜因子(Skew Factor)。
②攝像機(jī)坐標(biāo)系
令攝像機(jī)的焦距是f,則圖像物理坐標(biāo)系中的點(diǎn)與攝像機(jī)坐標(biāo)系中的點(diǎn)的關(guān)系為: ③世界坐標(biāo)系 考慮到攝像機(jī)位置具有不確定性,因此有必要采用世界坐標(biāo)系來(lái)統(tǒng)一攝像機(jī)和物體的坐標(biāo)關(guān)系。世界坐標(biāo)系由原點(diǎn)及、、三條軸組成。世界坐標(biāo)與攝像機(jī)坐標(biāo)間有著(2-3)所表達(dá)的轉(zhuǎn)換關(guān)系:
( 23 ) 2.三維重建流程 本文使用Kinect采集景物的點(diǎn)云數(shù)據(jù),經(jīng)過(guò)深度圖像增強(qiáng)、點(diǎn)云計(jì)算與配準(zhǔn)、數(shù)據(jù)融合、表面生成等步驟,完成對(duì)景物的三維重建。
圖2-6顯示的流程表明,對(duì)獲取到的每一幀深度圖像均進(jìn)行前六步操作,直到處理完若干幀。最后完成紋理映射。下面對(duì)每個(gè)步驟作詳細(xì)的說(shuō)明。 2.1 深度圖像的獲取 景物的深度圖像由Kinect在Windows平臺(tái)下拍攝獲取,同時(shí)可以獲取其對(duì)應(yīng)的彩色圖像。為了獲取足夠多的圖像,需要變換不同的角度來(lái)拍攝同一景物,以保證包含景物的全部信息。具體方案既可以是固定Kinect傳感器來(lái)拍攝旋轉(zhuǎn)平臺(tái)上的物體;也可以是旋轉(zhuǎn)Kinect傳感器來(lái)拍攝固定的物體。價(jià)格低廉、操作簡(jiǎn)單的深度傳感器設(shè)備能夠獲取實(shí)時(shí)的景物深度圖像,極大的方便了人們的應(yīng)用。 2.2 預(yù)處理 受到設(shè)備分辨率等限制,它的深度信息也存在著許多缺點(diǎn)。為了更好的促進(jìn)后續(xù)基于深度圖像的應(yīng)用,必須對(duì)深度圖像進(jìn)行去噪和修復(fù)等圖像增強(qiáng)過(guò)程。作為本文的重點(diǎn)問(wèn)題,具體的處理方法將在第四章進(jìn)行詳細(xì)的解釋說(shuō)明。 2.3 點(diǎn)云計(jì)算 經(jīng)過(guò)預(yù)處理后的深度圖像具有二維信息,像素點(diǎn)的值是深度信息,表示物體表面到Kinect傳感器之間的直線距離,以毫米為單位。以攝像機(jī)成像原理為基礎(chǔ),可以計(jì)算出世界坐標(biāo)系與圖像像素坐標(biāo)系之間具有下式的轉(zhuǎn)換關(guān)系: 則k值只與有關(guān),而等參數(shù)只與攝像機(jī)的內(nèi)部構(gòu)造有關(guān),所以稱(chēng)為像機(jī)的內(nèi)參數(shù)矩陣。以攝像機(jī)作為世界坐標(biāo)系,即,則深度值即為世界坐標(biāo)系中的值,與之對(duì)應(yīng)的圖像坐標(biāo)就是圖像平面的點(diǎn)。 2.4 點(diǎn)云配準(zhǔn) 對(duì)于多幀通過(guò)不同角度拍攝的景物圖像,各幀之間包含一定的公共部分。為了利用深度圖像進(jìn)行三維重建,需要對(duì)圖像進(jìn)行分析,求解各幀之間的變換參數(shù)。深度圖像的配準(zhǔn)是以場(chǎng)景的公共部分為基準(zhǔn),把不同時(shí)間、角度、照度獲取的多幀圖像疊加匹配到統(tǒng)一的坐標(biāo)系中。計(jì)算出相應(yīng)的平移向量與旋轉(zhuǎn)矩陣,同時(shí)消除冗余信息。點(diǎn)云配準(zhǔn)除了會(huì)制約三維重建的速度,也會(huì)影響到最終模型的精細(xì)程度和全局效果。因此必須提升點(diǎn)云配準(zhǔn)算法的性能。 三維深度信息的配準(zhǔn)按不同的圖像輸入條件與重建輸出需求被分為:粗糙配準(zhǔn)、精細(xì)配準(zhǔn)和全局配準(zhǔn)等三類(lèi)方法。 (1)粗糙配準(zhǔn)(Coarse Registration) 粗糙配準(zhǔn)研究的是多幀從不同角度采集的深度圖像。首先提取兩幀圖像之間的特征點(diǎn),這種特征點(diǎn)可以是直線、拐點(diǎn)、曲線曲率等顯式特征,也可以是自定義的符號(hào)、旋轉(zhuǎn)圖形、軸心等類(lèi)型的特征。 隨后根據(jù)特征方程實(shí)現(xiàn)初步的配準(zhǔn)。粗糙配準(zhǔn)后的點(diǎn)云和目標(biāo)點(diǎn)云將處于同一尺度(像素采樣間隔)與參考坐標(biāo)系內(nèi),通過(guò)自動(dòng)記錄坐標(biāo),得到粗匹配初始值。 (2)精細(xì)配準(zhǔn)(Fine Registration) 精細(xì)配準(zhǔn)是一種更深層次的配準(zhǔn)方法。經(jīng)過(guò)前一步粗配準(zhǔn),得到了變換估計(jì)值。將此值作為初始值,在經(jīng)過(guò)不斷收斂與迭代的精細(xì)配準(zhǔn)后,達(dá)到更加精準(zhǔn)的效果。以經(jīng)典的由Besl和Mckay[49]提出的ICP(Iterative Closest Point,迭代最近點(diǎn))算法為例,該算法首先計(jì)算初始點(diǎn)云上所有點(diǎn)與目標(biāo)點(diǎn)云的距離,保證這些點(diǎn)和目標(biāo)點(diǎn)云的最近點(diǎn)相互對(duì)應(yīng),同時(shí)構(gòu)造殘差平方和的目標(biāo)函數(shù)。 基于最小二乘法對(duì)誤差函數(shù)進(jìn)行最小化處理,經(jīng)過(guò)反復(fù)迭代,直到均方誤差小于設(shè)定的閾值。ICP算法能夠獲得精正確無(wú)誤的配準(zhǔn)結(jié)果,對(duì)自由形態(tài)曲面配準(zhǔn)問(wèn)題具有重要意義。另外還有如SAA(Simulate Anneal Arithmetic,模擬退火)算法、GA(Genetic Algorithm,遺傳)算法等也有各自的特點(diǎn)與使用范疇。 (3)全局配準(zhǔn)(Global Registration) 全局配準(zhǔn)是使用整幅圖像直接計(jì)算轉(zhuǎn)換矩陣。通過(guò)對(duì)兩幀精細(xì)配準(zhǔn)結(jié)果,按照一定的順序或一次性的進(jìn)行多幀圖像的配準(zhǔn)。這兩種配準(zhǔn)方式分別稱(chēng)為序列配準(zhǔn)(Sequential Registration)和同步配準(zhǔn)(Simultaneous Registration)。 配準(zhǔn)過(guò)程中,匹配誤差被均勻的分散到各個(gè)視角的多幀圖像中,達(dá)到削減多次迭代引起的累積誤差的效果。值得注意的是,雖然全局配準(zhǔn)可以減小誤差,但是其消耗了較大的內(nèi)存存儲(chǔ)空間,大幅度提升了算法的時(shí)間復(fù)雜度。 2.5 數(shù)據(jù)融合 經(jīng)過(guò)配準(zhǔn)后的深度信息仍為空間中散亂無(wú)序的點(diǎn)云數(shù)據(jù),僅能展現(xiàn)景物的部分信息。因此必須對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行融合處理,以獲得更加精細(xì)的重建模型。以Kinect傳感器的初始位置為原點(diǎn)構(gòu)造體積網(wǎng)格,網(wǎng)格把點(diǎn)云空間分割成極多的細(xì)小立方體,這種立方體叫做體素(Voxel)。通過(guò)為所有體素賦予SDF(Signed Distance Field,有效距離場(chǎng))值,來(lái)隱式的模擬表面。 SDF值等于此體素到重建表面的最小距離值。當(dāng)SDF值大于零,表示該體素在表面前;當(dāng)SDF小于零時(shí),表示該體素在表面后;當(dāng)SDF值越接近于零,表示該體素越貼近于場(chǎng)景的真實(shí)表面。KinectFusion技術(shù)雖然對(duì)場(chǎng)景的重建具有高效實(shí)時(shí)的性能,但是其可重建的空間范圍卻較小,主要體現(xiàn)在消耗了極大的空間用來(lái)存取數(shù)目繁多的體素。 為了解決體素占用大量空間的問(wèn)題,Curless[50]等人提出了TSDF (Truncated Signed Distance Field,截?cái)喾?hào)距離場(chǎng))算法,該方法只存儲(chǔ)距真實(shí)表面較近的數(shù)層體素,而非所有體素。因此能夠大幅降低KinectFusion的內(nèi)存消耗,減少模型冗余點(diǎn)。
TSDF算法采用柵格立方體代表三維空間,每個(gè)柵格中存放的是其到物體表面的距離。TSDF值的正負(fù)分別代表被遮擋面與可見(jiàn)面,而表面上的點(diǎn)則經(jīng)過(guò)零點(diǎn),如圖2-7中左側(cè)展示的是柵格立方體中的某個(gè)模型。若有另外的模型進(jìn)入立方體,則按照下式(2-9)與(2-10)實(shí)現(xiàn)融合處理。 其中,指的是此時(shí)點(diǎn)云到柵格的距離,是柵格的初始距離,是用來(lái)對(duì)同一個(gè)柵格距離值進(jìn)行融合的權(quán)重。如圖2-7中右側(cè)所示,兩個(gè)權(quán)重之和為新的權(quán)重。對(duì)于KinectFusion算法而言,當(dāng)前點(diǎn)云的權(quán)重值設(shè)置為1。 鑒于TSDF算法采用了最小二乘法進(jìn)行了優(yōu)化,點(diǎn)云融合時(shí)又利用了權(quán)重值,所有該算法對(duì)點(diǎn)云數(shù)據(jù)有著明顯的降噪功能。 2.6 表面生成 表面生成的目的是為了構(gòu)造物體的可視等值面,常用體素級(jí)方法直接處理原始灰度體數(shù)據(jù)。Lorensen[51]提出了經(jīng)典體素級(jí)重建算法:MC(Marching Cube,移動(dòng)立方體)法。移動(dòng)立方體法首先將數(shù)據(jù)場(chǎng)中八個(gè)位置相鄰的數(shù)據(jù)分別存放在一個(gè)四面體體元的八個(gè)頂點(diǎn)處。對(duì)于一個(gè)邊界體素上一條棱邊的兩個(gè)端點(diǎn)而言,當(dāng)其值一個(gè)大于給定的常數(shù)T,另一個(gè)小于T時(shí),則這條棱邊上一定有等值面的一個(gè)頂點(diǎn)。 然后計(jì)算該體元中十二條棱和等值面的交點(diǎn),并構(gòu)造體元中的三角面片,所有的三角面片把體元分成了等值面內(nèi)與等值面外兩塊區(qū)域。最后連接此數(shù)據(jù)場(chǎng)中的所有體元的三角面片,構(gòu)成等值面。合并所有立方體的等值面便可生成完整的三維表面。 3 性能優(yōu)化 Kinect等深度傳感器的出現(xiàn),不僅給娛樂(lè)應(yīng)用帶來(lái)了變革,同樣對(duì)科學(xué)研究提供了新的方向。尤其是在三維重建領(lǐng)域。然而由于三維重建過(guò)程涉及到大量密集的點(diǎn)云數(shù)據(jù)處理,計(jì)算量巨大,所以對(duì)系統(tǒng)進(jìn)行相應(yīng)的性能優(yōu)化顯得非常的重要。本文采用基于GPU(Graphic Processing Unit,圖形處理器)并行運(yùn)算功能,以提高整體的運(yùn)行效率。 NVIDIA公司于1999年提出了GPU概念。在這十幾年間,依靠硬件行業(yè)的改革創(chuàng)新,芯片上晶體管數(shù)量持續(xù)增多,GPU性能以半年翻一番的速度成倍提升。GPU的浮點(diǎn)運(yùn)算能力遠(yuǎn)超CPU上百倍,卻具有非常低的能耗,極具性價(jià)比。因GPU不僅廣泛應(yīng)用于圖形圖像處理中,也在如視頻處理、石油勘探、生物化學(xué)、衛(wèi)星遙感數(shù)據(jù)分析、氣象預(yù)報(bào)、數(shù)據(jù)挖掘等方面嶄露頭角。 作為GPU的提出者,NVIDIA公司一直致力于GPU性能提升的研究工作,并在2007年推出了CUDA架構(gòu)。CUDA(Compute Unified Device Architecture,統(tǒng)一計(jì)算設(shè)備架構(gòu))是一種并行計(jì)算程序架構(gòu)。在CUDA的支持下,使用者可以編寫(xiě)程序以利用NVIDIA系列GPU完成大規(guī)模并行計(jì)算。GPU在CUDA中被用作通用計(jì)算設(shè)備,而不只是處理圖像。在CUDA中,將計(jì)算機(jī)CPU稱(chēng)為主機(jī)(Host),GPU稱(chēng)為設(shè)備(Device)。 主機(jī)端和設(shè)備端都有程序運(yùn)行,主機(jī)端主要完成程序的流程與串行計(jì)算模塊,而設(shè)備端則專(zhuān)門(mén)處理并行計(jì)算。其中,設(shè)備端的并行計(jì)算過(guò)程被記錄在Kernel內(nèi)核函數(shù)中,主機(jī)端可以從Kernel函數(shù)入口執(zhí)行并行計(jì)算的調(diào)用功能。在此過(guò)程中,雖然Kernel函數(shù)執(zhí)行同一代碼,但卻處理著不同的數(shù)據(jù)內(nèi)容。 Kernel函數(shù)采用擴(kuò)展的C語(yǔ)言來(lái)編程,稱(chēng)為CUDAC語(yǔ)言。需要注意的是,并不是所有的運(yùn)算都可以采用CUDA并行計(jì)算。只有獨(dú)立性的計(jì)算,如矩陣的加減,因?yàn)橹簧婕暗綄?duì)應(yīng)下標(biāo)的元素的加減,不同下標(biāo)元素毫無(wú)關(guān)聯(lián),所以適用于并行計(jì)算;而對(duì)于如階乘的計(jì)算則必須對(duì)所有數(shù)累積相乘,故無(wú)法采用并行計(jì)算。 CUDA具有線程(Thread)、程序塊(Block)、網(wǎng)格(Grid)三級(jí)架構(gòu),計(jì)算過(guò)程一般由單一的網(wǎng)格完成,網(wǎng)格被平均分成多個(gè)程序塊,每個(gè)程序塊又由多個(gè)線程組成,最終由單個(gè)線程完成每個(gè)基本運(yùn)算,如圖2-8所示。
為了更深入的理解CUDA模型的計(jì)算過(guò)程,這里以前一章中提到的公式(2-11)為例,計(jì)算某點(diǎn)的深度值與三維坐標(biāo)之間的轉(zhuǎn)換: 上式中的表示深度值,內(nèi)參數(shù)矩陣是已知量,是該點(diǎn)的坐標(biāo)??梢园l(fā)現(xiàn)這個(gè)點(diǎn)的轉(zhuǎn)換過(guò)程與其他點(diǎn)轉(zhuǎn)換過(guò)程是相互獨(dú)立的,所以整幅圖像中各點(diǎn)的坐標(biāo)轉(zhuǎn)換能夠并行執(zhí)行。這種并行計(jì)算可以大幅提升整體計(jì)算的速率。例如,利用一個(gè)網(wǎng)格來(lái)計(jì)算一幅像素的深度圖像到三維坐標(biāo)的轉(zhuǎn)換,只需要將此網(wǎng)格均分成塊,每塊包括個(gè)線程,每個(gè)線程分別操作一個(gè)像素點(diǎn),便可以便捷的完成所有的坐標(biāo)轉(zhuǎn)換運(yùn)算。 通過(guò)GPU的并行計(jì)算,三維重建性能得到了大幅的提升,實(shí)現(xiàn)了實(shí)時(shí)的輸入輸出。對(duì)于Kinect在實(shí)際生產(chǎn)生活中的應(yīng)用奠定了基礎(chǔ)。 |
|
來(lái)自: shawnsun007 > 《虛擬現(xiàn)實(shí)》