李博宇
(中國航發北京航空材料研究院 信息中心,北京 100095)
基于結構光的三維重建技術是指通過某種投射裝置將具有一定模式的結構光投射到場景中,再用相機捕獲這些被場景中物體調制了的結構光圖案,并從拍攝的圖像中恢復出場景的三維信息。該技術已經被廣泛應用于三維建模[1-3]、逆向工程[4-6]和生物醫學[7-10]等領域。近年來,隨著數字投影技術的發展,基于投影儀與相機的結構光測量系統得到了越來越多的研究與應用[11-14]。
使用投影儀結構光系統進行三維測量的首要問題是如何由拍攝的投影圖像恢復出每個像素點對應的相位值。標準的四步相移算法是一種常用的相位恢復方法[15-16],該方法能夠有效地抑制系統的觀測噪聲,因此被廣泛地使用。然而,由于投影儀和攝像機都存在一定的非線性特性,直接采用四步相移算法恢復的相位圖像存在一定的誤差,進而降低了三維測量的精度。現有的誤差校正方法可以分為主動校正法和被動校正法。主動校正法指通過某種算法改變投影儀投射出的圖像灰度值,進而抑制整個系統的測量誤差[17-19]。被動校正法指不改變投影圖像,直接對計算得到的相位誤差進行補償,例如通過建立查找表[20]、提取光帶圖像特征點[21]和分區域補償[22]等。但這些方法存在計算量大、有累積誤差或容易受環境光影響等問題。通過研究發現,投影儀結構光系統中存在的誤差與被測物體無關,并且可以用二次多項式來表示。因此,筆者提出了一種基于二次型誤差校正的高精度相位恢復算法,并用于三維測量。實驗證明筆者提出的算法比現有算法精度更高。
結構光探測系統的測量精度與探測距離有關,減小探測系統與被測物體之間的距離可以提高系統的測量精度,但同時也會減小探測系統的視場范圍。為了對大尺寸物體進行精確的三維測量,往往需要在物體的一側布置2個甚至多個結構光測量模塊。而且為了實現物體的360°重建和測量,需要在物體的不同方向布置多個測量模塊,并且應保證各模塊的視場范圍存在足夠的重疊區。雖然利用探測系統與被測物體之間相對運動的方式也可以實現物體的全方位掃描,但這會降低系統的穩定性并增加系統的掃描時間。綜合考慮上述因素,筆者采用了三維測量系統硬件構成,如圖1所示。

圖1 系統硬件構成
系統由4根立柱構成,這些立柱被放置在一個邊長為2 m的正方形的4個頂點處。每根立柱包含垂直安裝的2個模組,即圖1中虛線框標記的部分。每個模組由1個工控機、1個相機和1個投影儀構成。工控機控制投影儀向場景中投射一系列的結構光圖案,并通過相機采集被場景調制后的結構光圖像。用戶計算機通過路由器與這8個模組相連,相位恢復和三維測量算法均在用戶計算機上完成。為了避免相鄰模組投射的圖像相互影響,同時提高系統的采集速度,處在對角線上的兩個模組同時工作,其工作順序為模組1和模組6、模組2和模組5、模組3和模組8、模組4和模組7。
系統的標定包含2個方面:單個模組的標定和模組間的標定。由于本研究在融合不同視場數據進行三維重建時采用的是迭代最近點(Iterative Closest Point,ICP)算法,因此僅需要根據各個模組的安裝位置和角度估計一個初始值,不需要進行模組間的精確標定。在標定單個模組時,采用紅藍棋盤格作為標定板,首先,用投影儀分別投射橫、豎光柵條紋,并用相機進行圖像采集;然后,在相機圖像中提取出棋盤格角點坐標,并通過相位恢復算法找到投影圖像中的對應角點;最后,采用張正友標定法完成單個模組的標定。詳細方案可參考文獻[23],下面將對相位計算及誤差校正方法進行詳細論述。
標準的四步相移算法是一種基于相位移原理的相位恢復算法,對測量系統的偶次諧波及觀測噪聲具有較好的抑制作用。該方法利用投影儀依次向場景中投射相差為π/2的4幅正弦光柵圖像,并利用相機采集這些被物體表面調制了的光柵圖像,假設相機采集的4幅圖像為
(1)
式中:I′(u,v)為相機采集圖像的平均灰度值;I″(u,v)為采集圖像的灰度變化幅值;φ(u,v)為相機坐標系中像素點(u,v)處的相位值。由式(1)可以推導出計算相位值φ(u,v)的函數表達式,并將其取值轉換到(0,2π]區間,可得式(2)。圖2為四步相移算法求解的相位示意圖。

圖2 四步相移算法求解相位示意圖
φ(u,v)=atan2(I4-I2,I1-I3)+π
(2)
式中:Ii為Ii(u,v),i=1,2,3,4。
在實際的測量過程中,由于投影儀視場及相機視場不能完全重合,并且物體之間存在一定的遮擋,投影儀投射出的圖像在場景中存在一定的盲區,這樣會導致從另一個角度拍攝的圖像中存在沒有光柵條紋的區域。如果直接對整幅圖像進行相位求解,會在上述盲區產生大量的噪聲點,如圖3(a)所示。為了消除這些噪聲點,需要在圖像中區分出有效數據區域和盲區。
首先,計算出4幅相移圖像的灰度均值。
(3)
然后,判斷每一個像素點處的灰度值是否滿足式(4)、式(5)兩個條件。
|I1(u,v)-I′(u,v)|>ε且|I3(u,v)-I′(u,v)|>ε
(4)
|I2(u,v)-I′(u,v)|>ε且|I4(u,v)-I′(u,v)|>ε
(5)
式中:ε為灰度閾值,該值可以通過實驗確定。如果像素點(u,v)滿足式(4)或者式(5),則認為該點為有效像素點;否則,認為該點為盲區中的像素點。圖3為相位求解結果,其中圖3(b)是在有效數據區域進行的相位求解,可以看到所有的噪聲點都被過濾掉了。

圖3 相位求解結果
為了實現基于投影結構光的三維測量,需要計算出相機圖像中每個像素點的相位值。由式(2)計算出的相位值取值范圍為(0,2π],因此需要對上述恢復出的相位圖像進行解包裹處理。本研究采用三頻外差[24-25]的方法實現相位解包裹。
外差原理是指將2幅較高頻率的相位圖像作差,可以得到一幅頻率較低的相位圖像。例如相位圖像φa(u,v)包含的正弦條紋周期數為Ta=6,相位圖像φb(u,v)包含的正弦條紋周期數為Tb=5,則2幅圖像做差后得到的相位圖像為
(6)
其中包含的正弦條紋周期數為Tc=Ta-Tb=1。圖4給出了外差算法計算過程示意圖,分別為相位圖像φa(u,v)、φb(u,v)、φc(u,v)的第100行數據。由于得到的相位圖像φc(u,v)只包含一個相位周期,所以每個像素點的相位值都可以區分開來。

圖4 外差算法計算過程示意圖
在實際的相位解包裹過程中,僅使用2個頻率的光柵圖像會對投影儀和相機的精度提出非常苛刻的要求,因此使用三頻外差方法進行相位展開。即先后向場景中投射周期數為70、64、59的四步相移圖像,并恢復出3個頻率的相位圖;然后,由前2個頻率的相位圖像作差得到周期數為6的相位圖,由后2個頻率的相位圖像作差得到周期數為5的相位圖;最后,由這兩個相位圖像計算出只包含一個周期的相位圖像。根據該相位圖即可反解出3種頻率光柵圖像的絕對相位值[25],本文僅對周期數為64的光柵圖像進行絕對相位展開,即相位范圍為(0,128π]。
按照2.2節給出的相位恢復方法,向一個標準平板投射3組四步相移正弦光柵圖像,并根據相機采集的圖像進行了相位恢復,標準平板的相位圖像如圖5所示。這里截取的是橫坐標范圍[1,900]像素、縱坐標范圍[121,721]像素內的有效數據區域。

圖5 標準平板的相位圖像
由圖5可以看出,相位恢復的結果是正確的。為了進一步以定量的方式分析相位恢復的精度,提取該相位圖像的第200行,如圖6(a)所示。標準平板上恢復出的相位值應該是完全線性的,即恢復出的相位圖像的某一行應該是一條直線。因此,將圖6(a)中的相位數據進行直線擬合,并將這些相位數據與擬合得到的數據作差,得到如圖6(b)所示的誤差曲線。所有誤差中的最大值為3.2059 rad,最小值為-6.0890 rad,標準差為1.9430 rad。從該誤差曲線可以看出,除了上下波動外,其整體分布也具有一定的規律,即呈現類似拋物線的形狀。如果能夠用一個二次多項式對相位值進行校正,那么將有效地減小相位誤差,使其成線性分布。

圖6 標準平板相位誤差分析
為了找到投影結構光系統的相位誤差分布規律,用二次多項式對平板的相位誤差進行逼近。通過實驗發現相位圖像不同行的誤差分布非常接近,因此,針對整幅圖像共用一組多項式系數進行誤差校正。為了進一步提高校正精度,可以從多個角度對平板進行相位恢復,并從每一幅相位圖像中均勻地選擇多行數據進行誤差分析,擬合得到最終的多項式系數。假設誤差分布近似為
e(x)=ax2+bx+c
(7)
首先,變換標準平板的位置,分別投射12幅正弦圖像,并采用2.2節給出的方法進行相位恢復;然后,提取每一幅相位圖像的第100、200、300、400、500、600行數據,求出這些相位值的誤差;最后,將這些相位誤差數據進行最小二乘擬合,采用MATLAB中的polyfit函數,得到的二次多項式系數為
a=-2.8551×10-5,b=0.0257,c=-3.8672
(8)
擬合得到的相位誤差分布函數如圖7所示。

圖7 二次多項式相位誤差分布函數
下面將根據求出的誤差分布規律對平板的相位圖像進行校正。假設按照2.2節給出方法恢復出的相位圖像為φ(u,v),則任意一個像素點(u,v)處經過二次型校正后的相位值可由式(9)求出。
φ(u,v)=φ(u,v)-au2-bu-c
(9)
對圖5中相位圖像的第200行進行誤差校正,得出校正結果如圖8(a)所示。將這些校正后的相位數據重新進行直線擬合,并計算出如圖8(b)所示的誤差分布曲線。所有誤差中的最大值為2.1425 rad,最小值為-2.8518 rad,標準差為0.8948 rad。從該誤差曲線中可以看出,系統的非線性誤差被有效地抑制了,最終的相位計算精度也有了較大幅度的提高。

圖8 二次多項式誤差校正結果
除了二次多項式外,本研究采用更高階多項式進行了類似的誤差校正分析。圖9和圖10分別為采用三次多項式和四次多項式得到的誤差分布函數及校正后的誤差分布曲線。采用三次多項式校正后的最大誤差為2.2260 rad,最小誤差為-2.6199 rad;采用四次多項式校正后的最大誤差為2.1448 rad,最小誤差為-2.4668 rad。從誤差曲線以及數值結果可以看出,采用高次多項式進行誤差校正的結果與采用二次多項式非常接近,說明系統誤差以二次為主,因此本研究最終采用二次多項式進行誤差校正。

圖9 三次多項式誤差校正曲線及結果
為了驗證本文所提出的基于二次型誤差校正的相位恢復算法及三維測量系統的精度,本節將給出相應的對比實驗。在實驗中,投影圖像的分辨率為1920像素×1080像素,相機的分辨率為1292像素×964像素,水平視場角和垂直視場角分別為79.0°和59.4°,水平方向和垂直方向的焦距分別為3.63 mm和3.64 mm。
在驗證相位恢復精度方面,本文與兩種現有算法進行了對比。文獻[23]采用四步相移+格雷碼的相位恢復方案,即首先通過4幅相移圖像計算相位主值,再用6幅格雷碼圖像實現相位的解包裹,本文記為算法1。文獻[25]采用三頻外差的方法實現相位恢復,并提出基于相鄰像素點斜率和疊柵條紋的相位修正方法,本文記為算法2。為了驗證算法的通用性,在實驗過程中將標準平板變換不同的姿態,并取相位圖像中的不同行進行分析。平板相位恢復誤差的對比結果如圖11所示。可以看出,現有的相位恢復方法存在較大的誤差,而本文所提出的相位恢復方法可以有效地減小相位誤差,并且該方法對平板不同的姿態都是適用的。更為量化的對比結果如表1所示。表1中的數據同樣可以驗證本文所提出的算法是有效的。

表1 平板相位恢復誤差量化對比結果 單位:rad

圖11 平板相位恢復誤差對比圖
為了進一步驗證本文所提出的相位恢復算法在實際三維測量系統中的效果,對標準如圖12(a)所示的物體進行了三維重建,結果如圖12(b)所示,可以看出重建結果較好地復原了被測物體。為了定量驗證本文所提出系統的測量精度,分別采用本文提出的方法和現有算法[23]對如圖13所示的標準尺寸進行了測量。

圖12 三維重建結果

圖13 被測物體的尺寸標注
兩種算法均采用三角測量原理對單個結構光模塊測得的數據進行三維重建,然后采用ICP方法對不同模塊的重建結果進行融合。二者的區別主要體現在相位恢復部分,文獻[23]采用的是四步相移+格雷碼的相位恢復方法,其對比結果如表2所示,其中L、W、H為長度,C為截面周長。可以看出,本文所提出的三維測量系統具有更高的測量精度,同時也驗證了本文所提出的誤差校正模型也適用于一般類型的場景。

表2 三維測量對比結果 單位:mm
筆者提出了一種基于二次型誤差校正的高精度三維測量系統。首先,采用標準的四步相移算法對投影儀結構光系統進行相位恢復,然后,采用三頻外差的方法對初始相位進行解包裹。通過這2個步驟得到的相位值存在一定的誤差,對該誤差進行了分析,發現該誤差呈拋物線分布且與被測物體無關。進而,用一個二次多項式模型對誤差進行逼近,再利用該模型對相位進行修正以提高系統的測量精度。與傳統算法的對比實驗驗證了本文所提出方案的有效性。