3D結(jié)構(gòu)光相機(jī)的技術(shù)原理可分為時(shí)間碼和空間碼。上次我們討論了時(shí)間碼,今天我們要學(xué)習(xí)空間碼。
(3D視覺(jué))
空間編碼
為了滿足動(dòng)態(tài)場(chǎng)景的要求,可以使用空間編碼結(jié)構(gòu)光,也就是上面提到的隨機(jī)結(jié)構(gòu)光,即不需要編碼信息就可以投射出隨機(jī)紋理。本文討論的空間編碼結(jié)構(gòu)光是指投射到測(cè)量空間的數(shù)學(xué)編碼,在一定范圍內(nèi)不具有可重復(fù)性。因此,可以通過(guò)鄰域獲得該點(diǎn)的編碼值。這里重建的精度是包含整個(gè)空間編碼的像素?cái)?shù)量(窗口大小)。當(dāng)然可以。
德布魯因序列
德布魯因序列(維基百科)B(k,)是k的符號(hào)(比如二進(jìn)制,k=2是有長(zhǎng)度的循環(huán)碼,是編碼值的長(zhǎng)度。
例如,在最簡(jiǎn)單的情況下,使用k=2中的二進(jìn)制符號(hào)(0,1),使用編碼值n=2的長(zhǎng)度,我們可以得到循環(huán)序列[0,0,1,1]。這時(shí)我們可以得到四種不同的代碼:[0,0],[0,1],[1],[1]。
因此,您可以根據(jù)Debruin序列對(duì)結(jié)構(gòu)光進(jìn)行編碼。在結(jié)構(gòu)光圖像中,上述四個(gè)像素的編碼為[0,0,1,1],假設(shè)結(jié)構(gòu)光斑或光束的寬度為一個(gè)像素,大小為2,通過(guò)滑動(dòng)窗口可以得到每個(gè)像素的編碼值。如果使用極線校正雙目圖像,只需搜索該線。現(xiàn)在不需要重復(fù)編碼,只需要在軸上編碼即可。此時(shí),結(jié)構(gòu)光是一條直線。
當(dāng)然,為了提高編碼效率,也可以采用投影法對(duì)數(shù)值進(jìn)行編碼,如灰度圖像和彩色圖像,而不是0-1編碼。例如,對(duì)于RGB圖像,如果使用二進(jìn)制代碼(即一種顏色和兩種狀態(tài)),則使用顏色組合(0,0,0)。有七種顏色。因此,k=7和k =3可以獲得長(zhǎng)度為343的帶序列。這種順序的唯一限制是相鄰的尺寸條不能是相同的顏色。否則解碼算法容易出錯(cuò)。下圖顯示了五種顏色(k=5,=3)。僅顯示使用的結(jié)構(gòu)光序列。
二維空間碼
因?yàn)镈eburin序列是一維碼,可以擴(kuò)展到二維空間,所以對(duì)于x * y大小的二維空間,只有w*大小的子窗口中包含的碼值才能出現(xiàn)在這個(gè)二維碼序列中,比如上面的4*6 M數(shù)組序列,每個(gè)2*2窗口中包含一個(gè)唯一的碼值。2D碼也可以使用RGB信息,并且一些偽隨機(jī)2D碼可以通過(guò)相關(guān)算法產(chǎn)生。如下圖所示,左邊顯示一個(gè)大小為6*6的2D矩陣,每個(gè)窗口的大小為3*3。
通過(guò)以上對(duì)空間編碼的討論,我們也可以看出空間編碼結(jié)構(gòu)光的一些優(yōu)缺點(diǎn)。
優(yōu)勢(shì):
不需要更多的照片,只需要一對(duì)圖像就可以進(jìn)行三維重建q .滿足動(dòng)態(tài)環(huán)境下實(shí)時(shí)處理的要求。
缺點(diǎn):
易受噪聲干擾:由于反射、光照等原因,部分成像區(qū)域的編碼信息可能會(huì)丟失。
對(duì)空間阻隔敏感;
光學(xué)精度低于定時(shí)編碼結(jié)構(gòu)的光學(xué)精度。