梁東魁
(燕山大學(xué) 信息科學(xué)與工程學(xué)院,河北 秦皇島 066004)
在基于結(jié)構(gòu)光的三維測量中,點云數(shù)據(jù)的精度和檢測效率受到以下幾方面的影響:攝像機(jī)觀測條紋與投影儀模式之間的匹配算法的魯棒性、邊界點檢測的準(zhǔn)確性、三維坐標(biāo)轉(zhuǎn)換模型的精度等。解決匹配問題最有效的方法是對結(jié)構(gòu)光進(jìn)行編碼,利用各種編碼策略使像素本身帶有先驗編碼信息,通過解碼,實現(xiàn)光條或點的精確定位。因此,編碼策略選擇合適與否對匹配算法的復(fù)雜性和三維重建的準(zhǔn)確性都有影響。目前,編碼策略主要分為時間編碼和空間鄰域編碼[1]。時間編碼易于實現(xiàn)、空間分辨率高,但需要投射多幅結(jié)構(gòu)光模式,不適用于運動物體的檢測??臻g鄰域編碼可以實現(xiàn)對動態(tài)物體的檢測,但由于使用單一模式,空間分辨率較低,要求解碼算法有較強(qiáng)的魯棒性。兩種編碼策略各有特點,其中空間鄰域編碼策略更符合三維重建向并行化和動態(tài)實時發(fā)展的需求,在這一領(lǐng)域的研究也取得了一定成果。
[2]采用單幀等間距光柵投影,向被測物體投射等間距垂直黑白條紋。其優(yōu)點在于投影光結(jié)構(gòu)簡單,數(shù)學(xué)模型明確,分析與誤差檢測方法成熟。但該方法的檢測前提是圖像條紋是連通的無寬度線,必須對原有的灰度圖像進(jìn)行閾值分割。而閾值分割方法會產(chǎn)生大量的條紋斷裂現(xiàn)象,由于條紋標(biāo)定基于條紋與基準(zhǔn)條紋之間位置關(guān)系,如果其中線段有斷裂,或者標(biāo)定錯誤,都會擴(kuò)散給所有條紋,對整體標(biāo)定和計算檢測都將產(chǎn)生很大的影響。參考文獻(xiàn)[3]利用彩色空間紅、綠、藍(lán)三基色相互獨立的特性,用彩色條紋對光柵進(jìn)行編碼。彩色編碼條紋光柵采用4個條紋為一組,最少要有3個條紋才能確定其所在位置,如果被測物體的空間寬度容納不下3個條紋,則無法進(jìn)行測量,這是該方法對被測物體限制條件之一。
本文采用空間鄰域編碼思想,利用迪布魯英序列(De Bruijn)對水平條紋進(jìn)行編碼??臻g鄰域編碼只需要一種投射模式,利用局部鄰域信息來生成碼字,克服了等間距黑白條紋編碼存在的不足。然而,空間鄰域編碼在某些情況下會丟失鄰域信息,而使解碼變得比較困難,影響到重建的精度。針對這一問題,本文提出了一種最優(yōu)鄰域匹配算法(BN-Matching),對條紋邊界進(jìn)行全局最優(yōu)解碼,利用帶有約束的動態(tài)編程(DP)技術(shù)[4]實現(xiàn)匹配過程。該算法在缺失部分鄰域信息的情況下仍能有效進(jìn)行解碼。在檢測條紋邊界之前,對圖像進(jìn)行離線的顏色標(biāo)定和預(yù)處理,進(jìn)一步提高了檢測的精度。
本文采用4元3級De Bruijn序列對結(jié)構(gòu)光進(jìn)行水平等寬條紋編碼。De Bruijn序列是一類最長的非線性反饋移位寄存器序列,可通過遍歷De Bruijn圖的歐拉回路或哈密爾頓回路獲得[1]。n元m級序列的長度為nm,可表示為 d0,d1,…,dnm-1,其中 dj值取自 n 個基元,基元可以為任意數(shù)字或符號。序列中任意連續(xù)的m位組合在整個序列中都是唯一的,稱為De Bruijn序列的窗口特性。在應(yīng)用該序列進(jìn)行結(jié)構(gòu)光編碼時,預(yù)先指定n種顏色,使其分別與 0,1,…,n-1 對應(yīng),將 0,1,…,n-1作為生成序列的基元,選擇窗口大小為m,按照某一生成算法生成序列。例如,4元3級的De Bruijn序列如式1所示。若使 0、1、2、3分別對應(yīng)一種特定的顏色,就可以生成一列寬為43=64的平行條紋結(jié)構(gòu)光模式。
本方法通過升元算法[5]獲得該序列,選擇色調(diào)均勻分布的三原色及白色作為顏色元,所生成的結(jié)構(gòu)光模式灰度圖如圖1所示。
圖1 利用4元3級De Bruijn序列生成的結(jié)構(gòu)光模式灰度圖
本編碼方案不要求序列中連續(xù)基元不同,為了降低檢測條紋邊界算法的復(fù)雜度,同時不增加顏色數(shù),在生成光模式時,連續(xù)相同基元對應(yīng)的條紋采用全照度與半照度相間的結(jié)構(gòu),例如,規(guī)定序列基元1對應(yīng)顏色為紅色,則子串 111 將采用(255,0,0)和(128,0,0)(色調(diào)值相同,但亮度值減半)間隔的結(jié)構(gòu),但在標(biāo)識邊界顏色碼時仍按照4元模式處理,因此需要采集4元模式和相間模式兩幅圖。本編碼方案要求物體表面在一個條紋寬度內(nèi)變化平緩,不需要限制物體在全表面的單調(diào)性和連續(xù)性,因此本假定很易于實現(xiàn)。
利用數(shù)字投影儀向物體表面投射圖1所示的模式結(jié)構(gòu)光,通過攝像機(jī)采集到經(jīng)物體面形調(diào)制過的畸變條紋圖像,由于受到物體表面反射特性、環(huán)境光以及投影儀和攝像機(jī)自身的色度亮度干擾等因素的影響,采集到的條紋圖像顏色存在較大的偏差,影響到條紋邊界顏色碼的檢測,有必要進(jìn)行恰當(dāng)?shù)念伾U?。另外,可以通過圖像處理進(jìn)一步去除噪聲。
根據(jù)Caspi等[6]人提出的結(jié)構(gòu)光系統(tǒng)照度模型,如式(1)所示,攝像機(jī)觀測到的圖像像素點的顏色向量S由以下幾個因素決定:投影儀投射的結(jié)構(gòu)光顏色P、被測物體表面點的反射矩陣K和攝像機(jī)所觀測到物體環(huán)境光C0以及攝像機(jī)和投影儀本身色度亮度干擾矩陣A。
若要依次計算出 A、K、P、C0,需要額外的輔助設(shè)備和大量的處理時間,降低了實際操作的效率。另外,按照后續(xù)算法的要求,只需要實現(xiàn)近似的顏色校正。因此,實驗選擇在無外界光源的黑室中進(jìn)行,忽略物體表面的反射性質(zhì)(此時,造成顏色偏差的主要因素來自攝像機(jī)和投影儀本身色度亮度的干擾),可以通過一個線性程序獲得A。
首先,在采集畸變條紋圖像之前,分別向一塊白色平板上投射紅、綠、藍(lán)三種光,采集到三幅圖像;在每幅圖上采集一定數(shù)量的點,分別計算其紅綠藍(lán)三顏色通道的平均值,構(gòu)成矩陣如下:
然后求出A-1,在對采集圖像進(jìn)行灰度化處理之前,使A-1左乘圖像像素點顏色向量S,對顏色進(jìn)行校正。
首先將經(jīng)過校正的圖像由位真彩色圖轉(zhuǎn)換為位灰度圖,利用Robert算子進(jìn)行條紋邊界檢測;然后采用高斯模板進(jìn)行平滑去噪。為避免遺失某些邊界信息,應(yīng)設(shè)定一個較小的閾值,對圖像進(jìn)行區(qū)域分割,剔除背景;最后對二值圖像進(jìn)行形態(tài)學(xué)細(xì)化操作,得到單像素的條紋邊界。此時,圖像邊界中包含物體的真實外輪廓邊界,設(shè)定條件,去除真實外輪廓邊界。圖像預(yù)處理過程如圖2所示。
圖2 圖像預(yù)處理過程
獲得畸變條紋邊界點的圖像坐標(biāo)數(shù)據(jù)和檢測碼后,必須對檢測碼進(jìn)行解碼。解碼過程,即是解決攝像機(jī)觀測條紋與投影儀投射模式條紋之間的匹配問題的過程。本文提出的BN-Matching算法,基于全局優(yōu)化的思想,利用空間鄰域信息對條紋邊界進(jìn)行最優(yōu)匹配,并采用增加一定約束的動態(tài)編程的處理方法實現(xiàn)該算法。
假設(shè)源邊界Q與檢測邊界E之間的全局最優(yōu)匹配為:Optm={(j0,i0),(j1,i1),…,(jK-1,iK-1)},其中 j0? j1?…?jK-1,而 i0?i1?…?iK-1。定義函數(shù) agree(qj,ei)來評價 qj和 ei的匹配相似程度,則全局優(yōu)化函數(shù)就可以表示為:
最優(yōu)解為:
其中:
應(yīng)用全局最優(yōu)的思想進(jìn)行解碼,具有較強(qiáng)的抗噪能力,適用于所有采用De Bruijn序列對單一軸編碼的結(jié)構(gòu)光模式的解碼??梢岳脛討B(tài)編程[4,6]思想進(jìn)行最優(yōu)匹配路徑搜索。
動態(tài)編程處理方法在雙目立體視覺匹配研究中有廣泛應(yīng)用[5],其思想是:首先迭代生成匹配代價矩陣Cost=[cji],其元素如方程(5)所示;然后通過逆遍歷代價矩陣得到最優(yōu)匹配碼。
在邊界檢測過程生成的邊界集E中,各條紋邊界不要求鄰接,但是按照順序得到。根據(jù)此特點,在DP處理過程中增加適當(dāng)?shù)募s束,計算生成最優(yōu)匹配路徑網(wǎng)格(BMPGrid)如圖 3所示。
圖3 最優(yōu)匹配路徑網(wǎng)格BMPGrid
成功完成邊界匹配之后,同一邊界像素點就帶有了唯一的碼字。根據(jù)光學(xué)三角測量原理,建立起系統(tǒng)空間數(shù)學(xué)模型,在點的碼字與三維坐標(biāo)之間建立直接對應(yīng)關(guān)系,通過矩陣計算得到點的三維坐標(biāo),為進(jìn)一步的三維表面重建和拼接提供點云數(shù)據(jù)。
以VC++6.0作為編程工具,完成算法實現(xiàn),以多種物體為模型進(jìn)行了仿真實驗。為了減少環(huán)境光干擾,實驗選擇在無外界光源的黑室中進(jìn)行,預(yù)先計算出攝像機(jī)和投影儀的色度亮度干擾矩陣A:
利用A對圖像進(jìn)行顏色校正,通過后續(xù)的處理檢驗該校正是否能夠滿足實驗要求。
圖2為得到二維邊界點數(shù)據(jù)的圖像預(yù)處理過程,從圖2(c)中可以看出,采用傳統(tǒng)處理方法所得到的數(shù)據(jù)有一定的邊界點缺失,條紋多處發(fā)生斷裂和交疊。圖4(a)、圖4(b)為利用等間距黑白條紋結(jié)構(gòu)光模式得到的三維點云分布,從圖中可以看出,由于圖像處理過程中條紋發(fā)生斷裂,使得無法得到點所在的正確條紋號,造成數(shù)據(jù)缺失,必然會影響到后續(xù)的三維網(wǎng)格化及表面重構(gòu)。
但從圖 4(c)、圖 4(d)中可以看到,經(jīng)過坐標(biāo)變換后的三維點云數(shù)據(jù)完整,能夠呈現(xiàn)出物體的原始面形,說明匹配算法具有較強(qiáng)的魯棒性,能夠?qū)崿F(xiàn)對畸變條紋邊界的正確解碼。
圖4 仿真實驗?zāi)P图矮@取的點云數(shù)據(jù)分布
本文提出的結(jié)構(gòu)光編碼方案,利用De Bruijn序列的窗口特性,充分利用局部鄰域信息,采用基于全局優(yōu)化思想的BN-Matching算法進(jìn)行解碼,不需要假定物體全表面單調(diào)。當(dāng)鄰域信息缺失或誤檢時,仍能進(jìn)行正確匹配。對噪聲有很強(qiáng)的魯棒性,DP處理方法保證了算法的有效實現(xiàn),通過坐標(biāo)變換獲得的點云數(shù)據(jù)能夠滿足三維表面重建的要求。
參考文獻(xiàn)
[1]SALVI J, PAGES J, BATLLE J.Pattern codification strategies in structured light systems[J].Pattern Recgonition,2004,37(4):827-849.
[2]周德芳.基于面結(jié)構(gòu)光投影法的三維物體形狀檢測與重構(gòu)系統(tǒng)[D].南京:東南大學(xué),2004.
[3]劉維一,王肇圻.彩色組合編碼條紋光柵輪廓術(shù)[J].光學(xué)學(xué)報,2000,20(9):1218-1222.
[4]ZHANG L, CURLESS B, SEITZ S M.Rapid shape acquisition using color structured light and multi-pass dynamic programming[C].Int.Symposium on 3D Data Processing Visualization and Transmission, Padova, Italy, 2002.
[5]朱士信.DeBruijn序列的升元算法 [J].電子科學(xué)學(xué)刊,2000,22(1):68-72.
[6]CASPI D,KIRYATI N, SHAMIR J.Range imaging with adaptive color structured light[J].Pattern Analysis and Machine Intelligence, 1998,20(5):470-480.