在結(jié)構(gòu)光三維重建中,最常見的方法就是相移法,相移是通過投影一系列相移光柵圖像編碼,從而得到物體表面一點(diǎn)在投影儀圖片上的相對(duì)位置或者絕對(duì)位置。下面,筆者將詳細(xì)介紹如何制作相移編碼圖片,以及如何對(duì)獲取的相移圖片進(jìn)行解碼,最后筆將粗淺的談?wù)勏嘁葡啾绕渌椒ǎㄈ绺窭状a)有什么優(yōu)勢(shì)。
常見的三步相移法公式如下所示:
其中 I1,I2,I3是相位圖的灰度值,?是條紋光強(qiáng)的背景值,??為條紋光強(qiáng)的調(diào)制強(qiáng)度,??是相位主值。由于cos的取值范圍是[-1,1],在制作編碼圖片的時(shí)候,我們可以把??和?都設(shè)置成127,這樣就可以保證制作的相位圖片的灰度值在0-255之間,以及一個(gè)高動(dòng)態(tài)的范圍。實(shí)際上由于投影儀投射出來的光的灰度值并不是線性變化的,為了消除這種非線性變化問題,有不少人提出了各種針對(duì)投影光的伽馬矯正方法。如果精度要求不是特別嚴(yán)苛的話,投影儀投影的光在某個(gè)動(dòng)態(tài)區(qū)間(通常是中間灰度值那一段,比如50-200的區(qū)間)會(huì)逼近于線性變化,我們也可以在制作圖片的時(shí)候把動(dòng)態(tài)區(qū)間調(diào)整至逼近線性變換區(qū)間的范圍來消除這種非線性變化的干擾。
如下圖所示,是用三步相移公式做的相移圖片,為了更加清楚地描述,這里使用的是0-55的灰度值范圍。
三步相移法示例圖片
由之前我們知道,編碼主要是為了標(biāo)記投影儀的圖片的實(shí)際位置,在相移中,我們用相位主值 編碼投影儀圖片的像素,對(duì)于某一個(gè)周期內(nèi)的投影坐標(biāo),我們可以這樣把相位主值換成其在周期內(nèi)的實(shí)際坐標(biāo):
Pixel即該點(diǎn)在周期內(nèi)的實(shí)際坐標(biāo),period即一個(gè)相位周期所占的像素列數(shù),實(shí)際上,我們不可能僅用一個(gè)周期標(biāo)記一整張相位圖片,其實(shí)很正常,我們的圖片列數(shù)常常是幾百甚至上千,而灰度值的動(dòng)態(tài)范圍只有255, 所以我們通常會(huì)設(shè)計(jì)一個(gè)周期所占像素列數(shù),如上圖所示,一個(gè)相位周期占圖片12列, 一張圖片約有10個(gè)周期。想要知道某個(gè)相位解碼點(diǎn)在投影圖片的實(shí)際坐標(biāo),我們除了知道其相位主值,還需要知道其是第幾個(gè)周期的相位。一個(gè)像素點(diǎn)的實(shí)際列坐標(biāo)如下所示:
i 是相位所在的周期數(shù)(通常對(duì)第一個(gè)相位周期用0來編碼), i的數(shù)值常用格雷碼編碼或者其他編碼方法輔助得到。又可以根據(jù)相位展開后的主值在空域上的分布來求解其是第幾個(gè)周期,不過這樣通常不準(zhǔn)。
把相移編碼光投影到物體表面后,我們就可以解碼了,如上面的方程所示,I1,I2,I3是相機(jī)圖片的灰度值,那么上述三個(gè)方程就只剩三個(gè)未知數(shù),?三個(gè)方程解三個(gè)未知數(shù)在滿秩的情況下一定是可解的,而且對(duì)于這三個(gè)未知數(shù)來說,我們其實(shí)只需要關(guān)心 ,相位主值的大小。解碼公式如下所示:
如果?解成??,則需要把其換算到??區(qū)間。上述相移編碼的解碼結(jié)果如下圖所示:
解碼后的相位主值圖
除了三步相移法,我們還可以設(shè)計(jì)四步甚至更多步相移法,具體編碼和解碼方式如下,對(duì)于N步相移法,我們需要N幅編碼圖片,對(duì)于第 ( )幅編碼圖片(通常我們用0標(biāo)記第一幅圖片), 其編碼如下:
其對(duì)應(yīng)的N步相移法的解碼公式為:
如何選定相移步長(zhǎng)呢? 一般來說,步長(zhǎng)越多越精確和穩(wěn)定,但是在實(shí)際的應(yīng)用中,考慮到三維成像幀率等原因,用三步或四步像移方法的較多。如果不考慮幀率的話,在論文[1]中有提到,如果能使用飽和式的相移圖片(saturated fringe patterns),即讓相移步長(zhǎng) N等于一個(gè)相位周期編碼列數(shù)的整數(shù)倍,如果編碼列數(shù)是偶數(shù)m的話,相移步長(zhǎng)N可以是 m/2 的整數(shù)倍,這樣的話,解相移的時(shí)候?qū)Ω叻垂獗砻嫦辔恢髦狄材芙獬霰容^好的結(jié)果。不過要對(duì)高反光表面的相移解碼得到非常好的效果,相移步長(zhǎng)N通常都要在10以上,對(duì)于追求速度的三維重建,可能沒有那么吸引人。
最后,想和大家聊聊相移法比起格雷碼的優(yōu)勢(shì),首先,相移可以看成連續(xù)變化的值,比如說我們解相位換算成像素點(diǎn)坐標(biāo)的時(shí)候,通??梢赃_(dá)到小數(shù)級(jí)(亞像素級(jí))的精度,如果我們用格雷碼,在不使用插值的情況下,通常只能達(dá)到像素級(jí)的精度。為什么相移達(dá)到的亞像素級(jí)的精度是正確的呢?認(rèn)為和光本身就是一種正弦波有關(guān),光打在物體表面上,會(huì)以正弦波的形式向周邊散開,所以使用相移時(shí)得到的亞像素級(jí)的解碼精度往往是比較準(zhǔn)確的。此外,我們用的相移是時(shí)序,利用光的在時(shí)間中(不同投影圖片下)的變化量來解碼,相比格雷碼用閾值二值化,受到物體紋理的影響會(huì)更小。比如相移光打在暗色物體上,可能解出來的 會(huì)比較小,但是不影響我們解出正確的相位主值 。
審核編輯:郭婷
-
投影儀
+關(guān)注
關(guān)注
4文章
871瀏覽量
43100 -
編碼
+關(guān)注
關(guān)注
6文章
920瀏覽量
54711
原文標(biāo)題:系列篇|結(jié)構(gòu)光三維重建——相移法基本原理
文章出處:【微信號(hào):3D視覺工坊,微信公眾號(hào):3D視覺工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論