汪維剛,王澤民,趙選
(西安工業大學電子信息工程學院,西安 710021)
結構光法作為非接觸式三維測量技術的一個重要分支,具有測量速度快、成本低、魯棒性好等優勢。按編碼方式的不同,編碼結構光法可分為直接編碼、時間編碼和空間編碼,文獻[1]中概括了時間編碼和空間編碼主要算法。
隨著動態場景下三維測量需求不斷增多,有關結構光空間編碼的研究也越來越熱門。文獻[2]設計了一種自均衡偽隨機序列,當被測量物體帶有多種顏色特征時,無法避免物體自身的顏色對編碼圖案造成干擾而導致的識別錯誤。文獻[3]提出一種偽隨機序列結合相位信息的編碼方法,但解碼精度會受到編碼寬度的影響。文獻[4]利用主成分分析和K均值聚類方法設計了一種自適應顏色聚類方法,完成了對顏色強度高低的識別。文獻[5]提出利用兩種顏色編碼的網格條紋模式,但該方法下的網格條紋檢測和識別算法均較復雜。
偽隨機陣列編碼是由偽隨機序列通過對角線折疊法或者拼片算法生成,文獻[6]中產生大尺寸偽隨機陣列的拼片算法較復雜,且碼字利用率也較低,隨著偽隨機陣列尺寸的增大,編碼符號也不斷增加,增加了后續解碼的難度。文獻[7]將偽隨機序列通過對角線折疊法生成偽隨機陣列,但即使在三元域中使用九階的本原多項式生成偽隨機序列,采用對角線折疊法得到的偽隨機陣列仍然無法滿足高分辨率測量的要求。文獻[8]給出了一種三級棋盤的非正式編碼,但并沒有生成全局唯一的編碼圖案。
本文設計了一種結構光組合編碼模式,將單色正弦條紋和小尺寸偽隨機陣列通過不同顏色通道相疊加,得到組合編碼圖案。單色正弦條紋能夠滿足高分辨率的測量,且保證了受到被測物體表面顏色干擾的影響更小。相較于大尺寸偽隨機陣列,小尺寸的偽隨機陣列更容易實現,并且小尺寸偽隨機陣列所用碼字較少,編碼時所需的二值符號種類也更少,降低了后續偽隨機陣列的解碼難度。所設計的編碼圖案能夠滿足動態場景下的高分辨率測量需求。
偽隨機序列具有良好的窗口特性,窗口內的子序列在整個序列中具有全局唯一性。一維偽隨機序列可由本原多項式生成,用移位寄存器作為偽隨機碼產生器,本原多項式及其所指定的反饋移位寄存器共同決定了偽隨機序列輸出結果。由二元五階本原多項式所生成的偽隨機序列,在大小為5的窗口內的子序列全局唯一。如圖1所示。

圖1 一維偽隨機序列示意圖
偽隨機陣列通常由一維偽隨機序列通過折疊算法或者拼片算法生成,再選取基元符號進行編碼,其生成的二維偽隨機陣列同樣具有窗口特性,即子窗口在整個二維陣列中的全局唯一性。偽隨機陣列解碼時,通過窗口識別進行特征點檢測匹配。由于編碼時基元符號需要以領域像素點來表示,多個像素點標識一個基元符號,導致測量分辨率較低。偽隨機陣列基元窗口的大小直接影響到編碼圖案所包含的特征點數,窗口過小會導致解碼算法檢測基元符號特征點困難,窗口過大會導致空間分辨率低。以一幅大小包含50×50像素點的圖像為例,假設編碼基元符號大小為10×10像素,如圖2所示。

圖2 偽隨機陣列編碼原理圖
可以看出,包含50×50像素點的圖像,采用以上偽隨機陣列編碼所得到的特征點僅為25個像素點,嚴重降低了測量分辨率。為了盡可能地提高測量分辨率,通過減少基元符號的編碼像素個數或者采用更大的偽隨機陣列模板來獲得更多的特征點數。例如,使用更高階的本原多項式生成長度更長的一維序列來獲得更大尺寸的偽隨機陣列,再通過多元基元符號進行編碼,但即便如此,偽隨機陣列編碼仍然無法達到高分辨率的測量要求。
基于相位測量的主要原理是將生成的一系列相移條紋依次按序投射到被測物表面,由于物體高度的調制相位發生變化,通過相位的變化值可以得到被測物體高度信息。N步相移法是指正弦條紋圖案的相位值在一個周期內等間距移動N次,即每次移動步長。其中第i幅條紋圖像可表示為
式中:Ia(x,y)為環境背景光強,Ib(x,y)為條紋對比度,Δφi為相移步長。通過N幅條紋圖案之間的相位差可計算得到包含被測物體高度信息的相位值
由于通過反正切函數得到的相位值是被包裹在[ -π,+π]區間中,需要進行相位展開獲取絕對相位φr(x,y),絕對相位和包裹相位的關系可表示為
由于相移法需要投射一系列的相移條紋,因而不適用于動態場景三維測量。其次,由于相移法無法準確獲得被測物體的絕對相位值,因此為了保證相位值的唯一性,通常將格雷碼與相移法相結合來確保相位的準確性。另外,在空間相位展開過程中,當某一點相位值由于噪聲或遮擋發生錯誤時,該錯誤會隨相位展開路徑向后傳播,影響相位展開的準確性。
通過上述分析可知,偽隨機陣列編碼測量方法能夠滿足動態三維測量,但空間分辨率較低。基于相位編碼的相移法能夠提供像素級的高分辨率測量,但由于需要投射多幅條紋圖案,因此不適用于動態三維測量。
為了滿足動態場景下的高分辨率的三維測量,本文提出了一種組合編碼方法。首先,為了滿足高分辨率的三維測量,選擇基于相位測量的正弦條紋編碼;其次,為了能夠適用于動態場景三維測量以及保證測量過程中相位值的準確性,選擇偽隨機陣列對正弦條紋進行再編碼。為了減少被測物體表面顏色帶來的干擾,使用單色正弦條紋編碼。下面將詳細論述本文的組合編碼原理。
正弦條紋編碼中,條紋的周期性無法確保相位值的唯一。為了保證編碼圖案相位值的唯一性,通常采用格雷碼對相位值進行分區定位,但這種方法并不適用于動態場景三維測量。本文選擇偽隨機陣列對正弦條紋圖案再編碼,偽隨機陣列的窗口特性確保了條紋圖案中相位值的全局唯一性,使得正弦條紋編碼能夠滿足高分辨率的動態三維測量。
偽隨機陣列的窗口和正弦條紋周期對齊是組合編碼方法的核心。本原多項式的階數決定了偽隨機陣列的窗口大小,且窗口大小是固定的,因此從大小來看窗口也具有周期性。由于正弦條紋也具有周期性,因此當窗口大小和正弦條紋編碼的周期大小相同時,即可保證在一個窗口中只包含一個完整周期的正弦條紋,單個周期內條紋的相位值唯一,保證了編碼圖案中相位值的準確。假設正弦條紋的周期為T,窗口寬度大小W,則窗口中是否唯一包含單個完整周期的正弦條紋可表示為
被測物體表面高度變化過快或者表面面型具有復雜曲面會導致局部條紋缺失,如圖3和圖4所示。

圖3 正弦條紋編碼圖案局部條紋缺失

圖4 組合編碼圖案局部條紋缺失
在傳統的相移法中,當2號條紋發生缺失,單一相位編碼方法無法確定缺失的條紋編號,導致產生的誤差會從缺失的2號條紋處開始向后傳遞直到結束,造成相位值紊亂,致使解碼出錯。對于本文所設計的組合編碼,通過偽隨機陣列對正弦條紋進行了再編碼,當發生條紋缺失時,通過偽隨機陣列窗口特性依然可以保證后續的解碼正確性,不會發生誤差傳遞的現象。當被測物表面高度變化過快或者存在斷層時發生條紋缺失的情況,當第3號條紋發生缺失,條紋處的偽隨機陣列編碼也發生缺失。通過偽隨機陣列編碼的窗口特性,通過窗口1和窗口3可以得出窗口2缺失的信息,從而判斷出3號條紋缺失的信息,確保局部條紋的缺失不會影響到后續條紋的解碼。
偽隨機陣列編碼中基元符號的選擇至關重要,符號提取和識別與解碼效率直接相關。因此,選取的符號應有明顯的形狀特征,且具備良好的平移、旋轉和尺度不變特征。因此,選取圓環作為本文偽隨機陣列編碼的基元符號。通過Hu矩可以看出,圓環發生變形時Hu矩的七個特征值并沒有很大變化,依然能夠很好地反映符號特征。

表1 圓環及其變形圖案的Hu矩
本文選用二元八階本原多項式生成長度為255的偽隨機序列,按對角線折疊法形成大小為15×17的偽隨機陣列,窗口大小為4×2。根據以上算法對大小為1024×768的圖像編碼,生成的組合編碼圖案以及截取的部分子窗口圖案如圖5所示。

圖5 空間組合編碼圖案

表2 編碼方法比較
組合圖案解碼算法分為偽隨機陣列解碼和正弦條紋解碼兩部分,首先對偽隨機陣列圖案進行窗口識別匹配,通過窗口定位找到正弦條紋圖案中相應窗口位置,對正弦條紋進行傅里葉變換,得到包含物體高度信息的相位值。

圖6 組合圖案解碼示意圖
偽隨機陣列解碼的本質是對符號特征的提取、識別以及匹配,編碼符號良好的平移、旋轉和尺度不變特性有利于提高解碼效率,圖像去噪、濾波等預處理能夠使識別匹配更加準確。文獻[9]中詳細描述了偽隨機陣列符號識別匹配過程,其原理如圖7所示。

圖7 窗口匹配原理
窗口內受到物體高度調制的正弦條紋圖像可表示為
其中,a(x,y)為環境背景光強,b(x,y)為條紋對比度,f0為正弦條紋基頻,φ(x,y)為被測物體高度信息的調制相位。對其進行傅里葉變換后通過濾波得到基頻分量,再進行傅里葉逆變換得到物體調制相位值如下:
通過偽隨機陣列圖案對正弦條紋圖案進行了再編碼,偽隨機陣列的窗口唯一標識了相位圖中的相位值,因此得到的相位無需進行相位展開。
實驗采用的投影儀型號為愛普生(EPSON)CB-2155W,分辨率為1280×800 pixel,工業相機型號為CK U300系列,分辨率為1282×768 pixel。將本文組合圖案投射于待測物體表面,通過相機獲取受到物體高度調制的變形圖案以及局部圖案,如圖8所示。

圖8 采集的變形圖案及其局部圖案
從圖8可以看出,變形圖案的偽隨機陣列窗口中依然唯一包含單周期正弦條紋,確保了后續解碼過程中相位值的準確性。為了方便,截取大小為512×512的局部圖案進行計算。將采集的原圖案通過顏色通道分離得到偽隨機陣列圖案和正弦條紋圖案,首先對偽隨機陣列圖案進行解碼,通過圖案預處理以及符號識別提取,其結果如圖9所示。

圖9 符號識別結果局部
偽隨機陣列完成窗口匹配,通過窗口定位到正弦條紋圖案對應窗口中的正弦條紋。前文編碼算法確保窗口中只包含一個周期正弦條紋,確保相位值唯一。
通過傅里葉變化求得相位值,如圖10所示。其中,圖(a)、(c)為傳統相移法通過相位展開得到被測平板物體和柱體表面的相位圖,圖(b)、(d)為本文組合解碼算法所得被測平板物體和柱體表面相位圖。從圖10可以看出,傳統相移法中對于噪聲等影響產生的噪點,由于相位展開過程中誤差累積傳播,所得相位圖邊緣處誤差較大。在組合解碼算法中,通過偽隨機陣列對正弦條紋再編碼確保相位值的唯一性,無需進行相位展開,因此相位圖中的誤差不會影響領域像素點。根據本文算法所得相位圖,結合現有標定技術即可完成稠密三維測量。實驗證明本文所提組合編碼模式和解碼算法的有效性,在快速稠密三維測量中具有很大應用前景。

圖10 相移法和本文算法所得相位圖
針對高分辨率的三維測量,提出了一種組合編碼模式和解碼算法,將偽隨機陣列編碼和單幅正弦條紋圖案組合形成組合編碼圖案。基于相位測量的正弦條紋編碼能夠滿足高分辨率的三維測量,偽隨機陣列編碼對正弦條紋進行再編碼,使得單幅正弦條紋圖案能夠適用于動態場景下的三維測量。由于窗口特性確保了測量過程相位值的準確,因此得到的相位值無需再進行相位展開,結合現有的標定技術即可完成高分辨率的動態三維測量。實驗結果說明了本文組合編碼模式和解碼算法的有效性。