本文的目的就是對(duì)結(jié)構(gòu)光技術(shù)做一個(gè)比較全面的簡(jiǎn)介。總體而言,所說(shuō)的結(jié)構(gòu)光主要可以分為兩類
線掃描結(jié)構(gòu)光;
面陣結(jié)構(gòu)光。
一般說(shuō)結(jié)構(gòu)光的時(shí)候都指代第二類,這里也主要關(guān)注面陣結(jié)構(gòu)光。
01
線掃描結(jié)構(gòu)光
線掃描結(jié)構(gòu)光較之面陣結(jié)構(gòu)光較為簡(jiǎn)單,精度也比較高,在工業(yè)中廣泛用于物體體積測(cè)量、三維成像等領(lǐng)域。
1.1 數(shù)學(xué)基礎(chǔ)
先來(lái)看一個(gè)簡(jiǎn)單的二維下的情況:
通過(guò)上圖可以看到線掃描結(jié)構(gòu)光裝置的一個(gè)基本結(jié)構(gòu)。主動(dòng)光源L緩慢掃過(guò)待測(cè)物體,在此過(guò)程中,相機(jī)記錄對(duì)應(yīng)的掃描過(guò)程,最后,依據(jù)相機(jī)和光源在該過(guò)程中的相對(duì)位姿和相機(jī)內(nèi)參等參數(shù),就可以重建出待測(cè)物體的三維結(jié)構(gòu)。
由上圖可知:
1.2 應(yīng)用
如上圖,相機(jī)與投影器等相對(duì)位姿都經(jīng)過(guò)了精確的校正,并且選取了測(cè)量臺(tái)上的一角作為原點(diǎn)建立物方坐標(biāo)系。
因此,激光投影器所投射的線激光在物方坐標(biāo)系中可以通過(guò)一個(gè)平面方程來(lái)描述:
02
面陣結(jié)構(gòu)光
面陣結(jié)構(gòu)光大致可以分為兩類:隨機(jī)結(jié)構(gòu)光和編碼結(jié)構(gòu)光。隨機(jī)結(jié)構(gòu)光較為簡(jiǎn)單,也更加常用。
通過(guò)投影器向被測(cè)空間中投射亮度不均和隨機(jī)分布的點(diǎn)狀結(jié)構(gòu)光,通過(guò)雙目相機(jī)成像,所得的雙目影像經(jīng)過(guò)極線校正后再進(jìn)行雙目稠密匹配,即可重建出對(duì)應(yīng)的深度圖。
如下圖為某種面陣的紅外結(jié)構(gòu)光。
隨機(jī)結(jié)構(gòu)光這里就不再說(shuō)了,因?yàn)楹推胀p目算法是很相似的。一些額外的考慮就是是否給相機(jī)加裝濾光片、光斑的密度要到什么程度等硬件和光學(xué)的問(wèn)題了。
這里主要討論編碼結(jié)構(gòu)光。編碼結(jié)構(gòu)光可以分為兩類:
時(shí)序編碼;
空間編碼。
2.1 時(shí)序編碼
如上圖,時(shí)序編碼結(jié)構(gòu)光即為在一定時(shí)間范圍內(nèi),通過(guò)投影器向被測(cè)空間投射一系列明暗不同的結(jié)構(gòu)光,每次投影都通過(guò)相機(jī)進(jìn)行成像。
假設(shè)共有n張影像,并設(shè)被陰影覆蓋的部分編碼值為1,未被覆蓋的部分編碼值為0。此時(shí),每個(gè)像素都對(duì)應(yīng)唯一一個(gè)長(zhǎng)度為n的二進(jìn)制編碼,雙目影像搜索匹配像素的問(wèn)題就變成了查找具有相同編碼值的像素。
如果雙目圖像已經(jīng)進(jìn)行了極線校正,那么所投影的結(jié)構(gòu)光只需要在x方向上不具有重復(fù)性即可。
如上圖中,紅框內(nèi)的像素的編碼為0110,轉(zhuǎn)化為十進(jìn)制則為5。此時(shí),只需要在右圖相同行上檢索編碼值為5的像素即可。
上圖編碼方式稱為二進(jìn)制碼(binary code),每段區(qū)域不斷的進(jìn)行二分下去直至投影的編碼寬度等于相機(jī)的像素寬度即可。對(duì)于寬度為1024的圖像,最少需要10張影像來(lái)進(jìn)行編碼。
Binary Code 的一種改進(jìn)為Gray Code. Gray Code比Binary Code具有更好的魯棒性,它使得相鄰兩個(gè)像素相差1bit。Gray Code的詳細(xì)介紹和其與Binary Code之間的轉(zhuǎn)換可以參考wikipedia。
注意觀察即可看到gray code和binary code在前幾行像素上的不同
轉(zhuǎn)換算法:
由以上的介紹也可以得出時(shí)序編碼結(jié)構(gòu)光的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
高精度;
缺點(diǎn):
只適用于靜態(tài)場(chǎng)景;
需要拍攝大量影像。
2.2 空間編碼
為滿足動(dòng)態(tài)場(chǎng)景的需要,可以采用空間編碼結(jié)構(gòu)光。前面談到了隨機(jī)結(jié)構(gòu)光,就是不帶編碼信息,投影隨機(jī)紋理,而這里討論的空間編碼結(jié)構(gòu)光特指向被測(cè)空間中投影經(jīng)過(guò)數(shù)學(xué)編碼的、一定范圍內(nèi)的光斑不具備重復(fù)性的結(jié)構(gòu)光。
由此,某個(gè)點(diǎn)的編碼值可以通過(guò)其臨域獲得。其中,包含一個(gè)完整的空間編碼的像素?cái)?shù)量(窗口大小)就決定了重建的精度。
2.2.1 德布魯因序列 (De Bruijn) 序列
2.2.2 二維空間編碼
德布魯因序列是一種一維編碼,可以將之?dāng)U展到二維空間中,使得對(duì)于一個(gè)x * y大小的二維空間,其中一個(gè)w * h大小的子窗口所包含的編碼值在這整個(gè)二維編碼序列中只出現(xiàn)一次。
如上面中的4 * 6的M-arrays序列中,每個(gè)2 * 2大小的窗口所包含的編碼值都是唯一的。
同樣也可以利用RGB信息來(lái)進(jìn)行二維編碼,有相關(guān)算法來(lái)產(chǎn)生一些偽隨機(jī)二維編碼。如在下圖中,左邊展示了一個(gè)6 * 6大小的二維矩陣,子窗口的大小為3 * 3。
算法首先在左上角的3 * 3子窗口中隨機(jī)填入各種顏色;然后一個(gè)3 * 1大小的滑動(dòng)窗口移動(dòng)到右端第一個(gè)空白處,并隨機(jī)填入3中顏色;在填入生成的隨機(jī)顏色前,算法會(huì)先驗(yàn)證子窗口的編碼的唯一性能不能得到保證,若不能,則會(huì)重新生成3中隨機(jī)顏色;
如此循環(huán),只是在豎直方向上滑動(dòng)窗口的大小變?yōu)? * 3,直至將整個(gè)6 * 6矩陣填滿。右圖則是該算法產(chǎn)生的某種偽隨機(jī)二維編碼的示例。
通過(guò)以上對(duì)空間編碼的討論,也可以看出空間編碼結(jié)構(gòu)光的一些優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
無(wú)需多張照片,只需要一對(duì)影像即可進(jìn)行三維重建。可以滿足實(shí)時(shí)處理,用在動(dòng)態(tài)環(huán)境中。
缺點(diǎn)
易受噪聲干擾:由于反光、照明等原因可能導(dǎo)致成像時(shí)部分區(qū)域等編碼信息缺失;
對(duì)于空間中的遮擋比較敏感;
相較于時(shí)序編碼結(jié)構(gòu)光精度較低。
以上是對(duì)各種常用的結(jié)構(gòu)光技術(shù)的一些介紹。其實(shí),三維重建中最常用的還是隨機(jī)面陣結(jié)構(gòu)光。通過(guò)向空間中投影這樣的隨機(jī)結(jié)構(gòu)光,再結(jié)合雙目稠密重建,可以獲得比單純使用RGB影像進(jìn)行三維重建更加可靠和精確的結(jié)果。
-
光源
+關(guān)注
關(guān)注
3文章
696瀏覽量
67739 -
三維成像
+關(guān)注
關(guān)注
0文章
35瀏覽量
11097 -
結(jié)構(gòu)光
+關(guān)注
關(guān)注
0文章
74瀏覽量
13220
原文標(biāo)題:結(jié)構(gòu)光綜述
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論