汪維剛,王澤民,趙選
(西安工業(yè)大學(xué)電子信息工程學(xué)院,西安 710021)
結(jié)構(gòu)光法作為非接觸式三維測量技術(shù)的一個(gè)重要分支,具有測量速度快、成本低、魯棒性好等優(yōu)勢。按編碼方式的不同,編碼結(jié)構(gòu)光法可分為直接編碼、時(shí)間編碼和空間編碼,文獻(xiàn)[1]中概括了時(shí)間編碼和空間編碼主要算法。
隨著動態(tài)場景下三維測量需求不斷增多,有關(guān)結(jié)構(gòu)光空間編碼的研究也越來越熱門。文獻(xiàn)[2]設(shè)計(jì)了一種自均衡偽隨機(jī)序列,當(dāng)被測量物體帶有多種顏色特征時(shí),無法避免物體自身的顏色對編碼圖案造成干擾而導(dǎo)致的識別錯(cuò)誤。文獻(xiàn)[3]提出一種偽隨機(jī)序列結(jié)合相位信息的編碼方法,但解碼精度會受到編碼寬度的影響。文獻(xiàn)[4]利用主成分分析和K均值聚類方法設(shè)計(jì)了一種自適應(yīng)顏色聚類方法,完成了對顏色強(qiáng)度高低的識別。文獻(xiàn)[5]提出利用兩種顏色編碼的網(wǎng)格條紋模式,但該方法下的網(wǎng)格條紋檢測和識別算法均較復(fù)雜。
偽隨機(jī)陣列編碼是由偽隨機(jī)序列通過對角線折疊法或者拼片算法生成,文獻(xiàn)[6]中產(chǎn)生大尺寸偽隨機(jī)陣列的拼片算法較復(fù)雜,且碼字利用率也較低,隨著偽隨機(jī)陣列尺寸的增大,編碼符號也不斷增加,增加了后續(xù)解碼的難度。文獻(xiàn)[7]將偽隨機(jī)序列通過對角線折疊法生成偽隨機(jī)陣列,但即使在三元域中使用九階的本原多項(xiàng)式生成偽隨機(jī)序列,采用對角線折疊法得到的偽隨機(jī)陣列仍然無法滿足高分辨率測量的要求。文獻(xiàn)[8]給出了一種三級棋盤的非正式編碼,但并沒有生成全局唯一的編碼圖案。
本文設(shè)計(jì)了一種結(jié)構(gòu)光組合編碼模式,將單色正弦條紋和小尺寸偽隨機(jī)陣列通過不同顏色通道相疊加,得到組合編碼圖案。單色正弦條紋能夠滿足高分辨率的測量,且保證了受到被測物體表面顏色干擾的影響更小。相較于大尺寸偽隨機(jī)陣列,小尺寸的偽隨機(jī)陣列更容易實(shí)現(xiàn),并且小尺寸偽隨機(jī)陣列所用碼字較少,編碼時(shí)所需的二值符號種類也更少,降低了后續(xù)偽隨機(jī)陣列的解碼難度。所設(shè)計(jì)的編碼圖案能夠滿足動態(tài)場景下的高分辨率測量需求。
偽隨機(jī)序列具有良好的窗口特性,窗口內(nèi)的子序列在整個(gè)序列中具有全局唯一性。一維偽隨機(jī)序列可由本原多項(xiàng)式生成,用移位寄存器作為偽隨機(jī)碼產(chǎn)生器,本原多項(xiàng)式及其所指定的反饋移位寄存器共同決定了偽隨機(jī)序列輸出結(jié)果。由二元五階本原多項(xiàng)式所生成的偽隨機(jī)序列,在大小為5的窗口內(nèi)的子序列全局唯一。如圖1所示。
圖1 一維偽隨機(jī)序列示意圖
偽隨機(jī)陣列通常由一維偽隨機(jī)序列通過折疊算法或者拼片算法生成,再選取基元符號進(jìn)行編碼,其生成的二維偽隨機(jī)陣列同樣具有窗口特性,即子窗口在整個(gè)二維陣列中的全局唯一性。偽隨機(jī)陣列解碼時(shí),通過窗口識別進(jìn)行特征點(diǎn)檢測匹配。由于編碼時(shí)基元符號需要以領(lǐng)域像素點(diǎn)來表示,多個(gè)像素點(diǎn)標(biāo)識一個(gè)基元符號,導(dǎo)致測量分辨率較低。偽隨機(jī)陣列基元窗口的大小直接影響到編碼圖案所包含的特征點(diǎn)數(shù),窗口過小會導(dǎo)致解碼算法檢測基元符號特征點(diǎn)困難,窗口過大會導(dǎo)致空間分辨率低。以一幅大小包含50×50像素點(diǎn)的圖像為例,假設(shè)編碼基元符號大小為10×10像素,如圖2所示。
圖2 偽隨機(jī)陣列編碼原理圖
可以看出,包含50×50像素點(diǎn)的圖像,采用以上偽隨機(jī)陣列編碼所得到的特征點(diǎn)僅為25個(gè)像素點(diǎn),嚴(yán)重降低了測量分辨率。為了盡可能地提高測量分辨率,通過減少基元符號的編碼像素個(gè)數(shù)或者采用更大的偽隨機(jī)陣列模板來獲得更多的特征點(diǎn)數(shù)。例如,使用更高階的本原多項(xiàng)式生成長度更長的一維序列來獲得更大尺寸的偽隨機(jī)陣列,再通過多元基元符號進(jìn)行編碼,但即便如此,偽隨機(jī)陣列編碼仍然無法達(dá)到高分辨率的測量要求。
基于相位測量的主要原理是將生成的一系列相移條紋依次按序投射到被測物表面,由于物體高度的調(diào)制相位發(fā)生變化,通過相位的變化值可以得到被測物體高度信息。N步相移法是指正弦條紋圖案的相位值在一個(gè)周期內(nèi)等間距移動N次,即每次移動步長。其中第i幅條紋圖像可表示為
式中:Ia(x,y)為環(huán)境背景光強(qiáng),Ib(x,y)為條紋對比度,Δφi為相移步長。通過N幅條紋圖案之間的相位差可計(jì)算得到包含被測物體高度信息的相位值
由于通過反正切函數(shù)得到的相位值是被包裹在[ -π,+π]區(qū)間中,需要進(jìn)行相位展開獲取絕對相位φr(x,y),絕對相位和包裹相位的關(guān)系可表示為
由于相移法需要投射一系列的相移條紋,因而不適用于動態(tài)場景三維測量。其次,由于相移法無法準(zhǔn)確獲得被測物體的絕對相位值,因此為了保證相位值的唯一性,通常將格雷碼與相移法相結(jié)合來確保相位的準(zhǔn)確性。另外,在空間相位展開過程中,當(dāng)某一點(diǎn)相位值由于噪聲或遮擋發(fā)生錯(cuò)誤時(shí),該錯(cuò)誤會隨相位展開路徑向后傳播,影響相位展開的準(zhǔn)確性。
通過上述分析可知,偽隨機(jī)陣列編碼測量方法能夠滿足動態(tài)三維測量,但空間分辨率較低。基于相位編碼的相移法能夠提供像素級的高分辨率測量,但由于需要投射多幅條紋圖案,因此不適用于動態(tài)三維測量。
為了滿足動態(tài)場景下的高分辨率的三維測量,本文提出了一種組合編碼方法。首先,為了滿足高分辨率的三維測量,選擇基于相位測量的正弦條紋編碼;其次,為了能夠適用于動態(tài)場景三維測量以及保證測量過程中相位值的準(zhǔn)確性,選擇偽隨機(jī)陣列對正弦條紋進(jìn)行再編碼。為了減少被測物體表面顏色帶來的干擾,使用單色正弦條紋編碼。下面將詳細(xì)論述本文的組合編碼原理。
正弦條紋編碼中,條紋的周期性無法確保相位值的唯一。為了保證編碼圖案相位值的唯一性,通常采用格雷碼對相位值進(jìn)行分區(qū)定位,但這種方法并不適用于動態(tài)場景三維測量。本文選擇偽隨機(jī)陣列對正弦條紋圖案再編碼,偽隨機(jī)陣列的窗口特性確保了條紋圖案中相位值的全局唯一性,使得正弦條紋編碼能夠滿足高分辨率的動態(tài)三維測量。
偽隨機(jī)陣列的窗口和正弦條紋周期對齊是組合編碼方法的核心。本原多項(xiàng)式的階數(shù)決定了偽隨機(jī)陣列的窗口大小,且窗口大小是固定的,因此從大小來看窗口也具有周期性。由于正弦條紋也具有周期性,因此當(dāng)窗口大小和正弦條紋編碼的周期大小相同時(shí),即可保證在一個(gè)窗口中只包含一個(gè)完整周期的正弦條紋,單個(gè)周期內(nèi)條紋的相位值唯一,保證了編碼圖案中相位值的準(zhǔn)確。假設(shè)正弦條紋的周期為T,窗口寬度大小W,則窗口中是否唯一包含單個(gè)完整周期的正弦條紋可表示為
被測物體表面高度變化過快或者表面面型具有復(fù)雜曲面會導(dǎo)致局部條紋缺失,如圖3和圖4所示。
圖3 正弦條紋編碼圖案局部條紋缺失
圖4 組合編碼圖案局部條紋缺失
在傳統(tǒng)的相移法中,當(dāng)2號條紋發(fā)生缺失,單一相位編碼方法無法確定缺失的條紋編號,導(dǎo)致產(chǎn)生的誤差會從缺失的2號條紋處開始向后傳遞直到結(jié)束,造成相位值紊亂,致使解碼出錯(cuò)。對于本文所設(shè)計(jì)的組合編碼,通過偽隨機(jī)陣列對正弦條紋進(jìn)行了再編碼,當(dāng)發(fā)生條紋缺失時(shí),通過偽隨機(jī)陣列窗口特性依然可以保證后續(xù)的解碼正確性,不會發(fā)生誤差傳遞的現(xiàn)象。當(dāng)被測物表面高度變化過快或者存在斷層時(shí)發(fā)生條紋缺失的情況,當(dāng)?shù)?號條紋發(fā)生缺失,條紋處的偽隨機(jī)陣列編碼也發(fā)生缺失。通過偽隨機(jī)陣列編碼的窗口特性,通過窗口1和窗口3可以得出窗口2缺失的信息,從而判斷出3號條紋缺失的信息,確保局部條紋的缺失不會影響到后續(xù)條紋的解碼。
偽隨機(jī)陣列編碼中基元符號的選擇至關(guān)重要,符號提取和識別與解碼效率直接相關(guān)。因此,選取的符號應(yīng)有明顯的形狀特征,且具備良好的平移、旋轉(zhuǎn)和尺度不變特征。因此,選取圓環(huán)作為本文偽隨機(jī)陣列編碼的基元符號。通過Hu矩可以看出,圓環(huán)發(fā)生變形時(shí)Hu矩的七個(gè)特征值并沒有很大變化,依然能夠很好地反映符號特征。
表1 圓環(huán)及其變形圖案的Hu矩
本文選用二元八階本原多項(xiàng)式生成長度為255的偽隨機(jī)序列,按對角線折疊法形成大小為15×17的偽隨機(jī)陣列,窗口大小為4×2。根據(jù)以上算法對大小為1024×768的圖像編碼,生成的組合編碼圖案以及截取的部分子窗口圖案如圖5所示。
圖5 空間組合編碼圖案
表2 編碼方法比較
組合圖案解碼算法分為偽隨機(jī)陣列解碼和正弦條紋解碼兩部分,首先對偽隨機(jī)陣列圖案進(jìn)行窗口識別匹配,通過窗口定位找到正弦條紋圖案中相應(yīng)窗口位置,對正弦條紋進(jìn)行傅里葉變換,得到包含物體高度信息的相位值。
圖6 組合圖案解碼示意圖
偽隨機(jī)陣列解碼的本質(zhì)是對符號特征的提取、識別以及匹配,編碼符號良好的平移、旋轉(zhuǎn)和尺度不變特性有利于提高解碼效率,圖像去噪、濾波等預(yù)處理能夠使識別匹配更加準(zhǔn)確。文獻(xiàn)[9]中詳細(xì)描述了偽隨機(jī)陣列符號識別匹配過程,其原理如圖7所示。
圖7 窗口匹配原理
窗口內(nèi)受到物體高度調(diào)制的正弦條紋圖像可表示為
其中,a(x,y)為環(huán)境背景光強(qiáng),b(x,y)為條紋對比度,f0為正弦條紋基頻,φ(x,y)為被測物體高度信息的調(diào)制相位。對其進(jìn)行傅里葉變換后通過濾波得到基頻分量,再進(jìn)行傅里葉逆變換得到物體調(diào)制相位值如下:
通過偽隨機(jī)陣列圖案對正弦條紋圖案進(jìn)行了再編碼,偽隨機(jī)陣列的窗口唯一標(biāo)識了相位圖中的相位值,因此得到的相位無需進(jìn)行相位展開。
實(shí)驗(yàn)采用的投影儀型號為愛普生(EPSON)CB-2155W,分辨率為1280×800 pixel,工業(yè)相機(jī)型號為CK U300系列,分辨率為1282×768 pixel。將本文組合圖案投射于待測物體表面,通過相機(jī)獲取受到物體高度調(diào)制的變形圖案以及局部圖案,如圖8所示。
圖8 采集的變形圖案及其局部圖案
從圖8可以看出,變形圖案的偽隨機(jī)陣列窗口中依然唯一包含單周期正弦條紋,確保了后續(xù)解碼過程中相位值的準(zhǔn)確性。為了方便,截取大小為512×512的局部圖案進(jìn)行計(jì)算。將采集的原圖案通過顏色通道分離得到偽隨機(jī)陣列圖案和正弦條紋圖案,首先對偽隨機(jī)陣列圖案進(jìn)行解碼,通過圖案預(yù)處理以及符號識別提取,其結(jié)果如圖9所示。
圖9 符號識別結(jié)果局部
偽隨機(jī)陣列完成窗口匹配,通過窗口定位到正弦條紋圖案對應(yīng)窗口中的正弦條紋。前文編碼算法確保窗口中只包含一個(gè)周期正弦條紋,確保相位值唯一。
通過傅里葉變化求得相位值,如圖10所示。其中,圖(a)、(c)為傳統(tǒng)相移法通過相位展開得到被測平板物體和柱體表面的相位圖,圖(b)、(d)為本文組合解碼算法所得被測平板物體和柱體表面相位圖。從圖10可以看出,傳統(tǒng)相移法中對于噪聲等影響產(chǎn)生的噪點(diǎn),由于相位展開過程中誤差累積傳播,所得相位圖邊緣處誤差較大。在組合解碼算法中,通過偽隨機(jī)陣列對正弦條紋再編碼確保相位值的唯一性,無需進(jìn)行相位展開,因此相位圖中的誤差不會影響領(lǐng)域像素點(diǎn)。根據(jù)本文算法所得相位圖,結(jié)合現(xiàn)有標(biāo)定技術(shù)即可完成稠密三維測量。實(shí)驗(yàn)證明本文所提組合編碼模式和解碼算法的有效性,在快速稠密三維測量中具有很大應(yīng)用前景。
圖10 相移法和本文算法所得相位圖
針對高分辨率的三維測量,提出了一種組合編碼模式和解碼算法,將偽隨機(jī)陣列編碼和單幅正弦條紋圖案組合形成組合編碼圖案?;谙辔粶y量的正弦條紋編碼能夠滿足高分辨率的三維測量,偽隨機(jī)陣列編碼對正弦條紋進(jìn)行再編碼,使得單幅正弦條紋圖案能夠適用于動態(tài)場景下的三維測量。由于窗口特性確保了測量過程相位值的準(zhǔn)確,因此得到的相位值無需再進(jìn)行相位展開,結(jié)合現(xiàn)有的標(biāo)定技術(shù)即可完成高分辨率的動態(tài)三維測量。實(shí)驗(yàn)結(jié)果說明了本文組合編碼模式和解碼算法的有效性。