|
答案是可以! 這方面一直是計算機視覺(jué)的研究熱點(diǎn),并且已經(jīng)有了不錯的成果!本人研究生階段主要做三維重建,簡(jiǎn)單寫(xiě)一些自己所了解的。 首先三維和二維的區別,這個(gè)大家都容易理解,二維只有x、y兩個(gè)軸,比如一張素描畫(huà),我們整體的感覺(jué)是“平”的,而三維則是多了一個(gè)z軸的維度,這個(gè)z軸的直觀(guān)理解就是點(diǎn)離我們的距離,也即 “depth(深度)”。 再來(lái)看看我們人眼,人眼是一個(gè)典型的雙目系統,大家可以做個(gè)小實(shí)驗:閉上一只眼睛,然后左右手分別拿著(zhù)一只筆,試著(zhù)讓筆尖相碰,哈哈,是不是有懷疑人生的感覺(jué)? 我們分別用左右眼看同一個(gè)物體,可以清楚地感覺(jué)到圖像的差異,這個(gè)差異就是我們形成三維視覺(jué)的基礎,有了這左右眼圖像的差異,配合大腦強大的識別匹配能力,我們就能基本確定物體離我們的距離,也即之前說(shuō)的"深度",上個(gè)實(shí)驗中我們只睜開(kāi)一只眼睛,雖然能清楚的看到左右手中的筆,但是大腦沒(méi)法得出深度信息,所以你在“上下左右”方向上能準確定位,但是“前后”方向上卻無(wú)能為力。 現在來(lái)說(shuō)說(shuō)左右圖像的“差異”到“深度”的轉換,這里可能需要一點(diǎn)點(diǎn)空間幾何知識,其實(shí)也很簡(jiǎn)單 物體上的點(diǎn)p12分別對應左右圖像上點(diǎn)p1和p2,求解p1、p2、p12構成的三角形,我們就能得到點(diǎn)p12的坐標,也就能得到p12的深度。這個(gè)計算對于人腦來(lái)說(shuō)是小case,我們更多地依賴(lài)經(jīng)驗和強大的腦補能力,雖然我們不能計算出某個(gè)物體離我們的精確距離,我們卻能非常準確地建立物體距離的相對關(guān)系,即哪個(gè)物體在前,哪個(gè)在后,這對日常生活已經(jīng)足夠了。 而我們做工程上的雙目視覺(jué)三維重建,核心目標就是解上圖所示的三角形,相機可以抽象成一個(gè)簡(jiǎn)單的透視系統: 空間點(diǎn)p經(jīng)過(guò)相機成像,映射到圖像上點(diǎn)(x,y),其中Oc是相機光心,WCS、DCS、ICS分別是世界坐標系、設備(相機)坐標系、圖像坐標系?臻g點(diǎn)p到相機圖像上點(diǎn)的幾何變換可以用相機內參來(lái)描述,具體公式就不說(shuō)了,可以簡(jiǎn)單地理解為相機拍照是對點(diǎn)的幾何坐標變換,而相機內參就是決定這個(gè)變換的一些參數。 繼續看之前的光學(xué)三角關(guān)系圖,O1、O2分別是左右相機的光心,現在我們要做的就是確定這兩個(gè)相機的相對位置關(guān)系:可以用旋轉矩陣R和平移向量T來(lái)描述,確定了R和T,兩個(gè)相機的位置關(guān)系就確定了,這個(gè)步驟叫做相機的外參標定。一般的做法是用三維重建的逆過(guò)程來(lái)做,即由一系列已知的p1、p2和p12來(lái)求解光學(xué)三角形,估計出最優(yōu)的R、T。簡(jiǎn)而言之,外參標定確定相機之間的相對位置關(guān)系。 好了,現在我們只需要知道p1、p2的坐標,我們就能輕松算出p12的坐標,完成三維重建。我們把p1、p2稱(chēng)為一個(gè)點(diǎn)對(pair),他們是同一個(gè)空間點(diǎn)在不同相機中的成像點(diǎn)。尋找這樣的點(diǎn)對的過(guò)程稱(chēng)為立體匹配,它是三維重建最關(guān)鍵,也可以說(shuō)是最難的一步。我們都玩過(guò)“大家來(lái)找茬”,找的是兩幅圖的不同點(diǎn),而立體匹配則是找“相同點(diǎn)”。對人腦來(lái)說(shuō),這個(gè)問(wèn)題太easy了,給你同一個(gè)物體的兩幅圖,你能輕松找出一副圖像上的點(diǎn)在另一幅圖像中的對應點(diǎn),因為我們人腦的物體識別、分割、特征提取等等能力實(shí)在太強了,而且性能特別高,估計幾歲的小孩就能秒殺現有的最好的算法。 常規的匹配算法一般通過(guò)特征點(diǎn)來(lái)做,即分別提取左右圖像的特征點(diǎn)(常用sift算法),然后基于特征點(diǎn)配合對極幾何等約束條件進(jìn)行匹配。不過(guò)這類(lèi)匹配算法精度都不是太高,所以人們又想了其它一些方法來(lái)輔助匹配,結構光方法是目前用的比較多的,原理不難理解,就是向目標物體投射編碼的光,然后對相機圖像進(jìn)行解碼,從而得到點(diǎn)對,舉個(gè)簡(jiǎn)單的例子,我們把一個(gè)小方塊的圖案用投影儀投到物體表面,然后識別左右相機圖像中的小方塊,如果這個(gè)小方塊很小,看作一個(gè)點(diǎn),那么我們就得到了一個(gè)點(diǎn)對。 貼個(gè)線(xiàn)結構光的示意圖: 這個(gè)示意圖里面只有一個(gè)相機,其實(shí)投影儀是可以看作相機的:投出的光圖案照射在物體表面相當于被拍照的物體,而投影儀的輸入圖像則相當于相機拍出來(lái)的照片,所以投影儀也是當作相機并用同樣的方法來(lái)標定內外參,即上圖本質(zhì)上也是雙目視覺(jué)系統。 總結一下,雙目視覺(jué)三維重建的基本過(guò)程:相機內參、外參標定 -> 立體匹配 -> 光學(xué)三角形求解,這里面最核心、也最影響重建效果的就是立體匹配。 貼幾張本人實(shí)驗的圖(用的最基本的格雷碼結構光): 以上說(shuō)的都是雙目視覺(jué)三維重建,實(shí)際上還有其它一些重建方法,如早期的探針?lè ),?jiǎn)單粗暴,直接拿探針在物體表面移動(dòng),一個(gè)點(diǎn)一個(gè)點(diǎn)測坐標;還有一類(lèi)通過(guò)直接測距來(lái)進(jìn)行三維重建,如超聲波、TOF,即對物體表面逐點(diǎn)用聲、光程差來(lái)測距,從而得到三維點(diǎn)云;光學(xué)方法分為主動(dòng)和被動(dòng)兩大類(lèi),主動(dòng)和被動(dòng)指的是是否向物體表面投光,主動(dòng)方法有激光掃描、相位測量以及我畢設的研究課題結構光方法等,被動(dòng)方法有單目視覺(jué)(如陰影法)和上文所述的立體視差方法等等。 目前還有一類(lèi)三維重建方法非;穑篠FM(Structure from Motion),這類(lèi)方法的特點(diǎn)是不需要相機參數,僅僅根據一系列圖像就能進(jìn)行三維重建,也就是說(shuō),你隨便拿個(gè)手機對著(zhù)物體拍一些圖片就能重建這個(gè)物體的三維模型,大家可以去體驗下AutoDesk公司的Autodesk 123D Catch,除了近距離物體的三維重建,SFM還有更激動(dòng)人心的應用:大型場(chǎng)景三維重建,感興趣的可以看看這個(gè)Building Rome in a Day,他們在flickr上搜索兩百萬(wàn)張羅馬的照片,通過(guò)亞馬遜提供的計算服務(wù),最終得出整個(gè)城市的三維模型,是不是又有云計算、大數據的感覺(jué)。。。這波人貌似有幾個(gè)是Google Earth團隊的。 原理上其實(shí)也不難理解:從特征點(diǎn)對入手,反向求解出相機的內外參(選定一個(gè)相機作為世界坐標系),然后重建更多的點(diǎn)。 大家應該對電影《普羅米修斯》里面的用于洞穴建模的飛行器印象深刻: |