李 瑾, 徐 鋒, 周炳宏, 陳妍潔
(西南科技大學(xué)信息學(xué)院,四川 綿陽 621000)
三維形貌測量在計算機視覺領(lǐng)域中占有重要地位,廣泛應(yīng)用于逆向工程、生物識別、機器視覺、智能制造等領(lǐng)域[1-3]。在基于結(jié)構(gòu)光的三維形貌測量方法中,相移法以其操作簡便、靈活性高的優(yōu)點被廣泛應(yīng)用[4-5]。傳統(tǒng)相移法通過投影儀在待測物體上投影相移正弦圖像,然后從相機中獲取變形條紋圖像,并利用相移算法來計算相位,但從變形條紋圖像中計算得到的相位包裹在(-π,π)區(qū)間中,需要對其進行相位展開[6]?;诟窭状a編碼的時間相位展開方法是最常用的相位展開方法[7],該方法首先向待測物體投射一組由黑和白兩種灰度碼構(gòu)成的格雷碼圖像,其次通過格雷碼圖像解碼得到相位順序,然后結(jié)合相移法將每一個編碼區(qū)域排序進行相位展開,最終得到待測物體的連續(xù)相位[8]。然而在實際測量過程中,由于投影儀的離焦效應(yīng),相機捕獲的格雷碼圖像不僅是黑和白兩種灰度碼,需要在相位展開之前對格雷碼圖像進行二值化操作,但是二值化的消暈效應(yīng)[9]常常造成格雷碼圖像在某些區(qū)域向左或向右偏移一兩個像素,即發(fā)生相位跳躍錯誤[10]。因此,在格雷碼圖像黑白交界的像素,格雷碼解碼得到的相位順序可能會出現(xiàn)錯誤,從而導(dǎo)致相位展開出現(xiàn)錯誤像素,而且系統(tǒng)噪聲和陰影也會造成條紋圖像中的無效像素。
針對相位跳躍錯誤,文獻[11]提出了一種補償格雷碼的方法,該方法采用1幅補償格雷碼圖像與7幅傳統(tǒng)格雷碼圖像形成互補碼字,使它們在相位跳躍附近交錯,通過改變解碼方式來減少相位跳躍錯誤,然后再結(jié)合相移法得到物體的三維形貌;YU等[12]提出一種周期不相等的相移法與格雷碼組合方法,該方法對格雷碼編碼周期和相移條紋周期進行了優(yōu)化,減少了解碼順序錯誤。這兩種方法雖然在一定程度上消除了相位跳躍誤差,但存在解碼復(fù)雜、通用性差的問題,而且除了相位跳躍引起的相位錯誤,系統(tǒng)噪聲和陰影引起的無效像素也會使相位展開發(fā)生錯誤。KARPINSKY等[13]在實驗中使用1×5的中值濾波器消除系統(tǒng)噪聲和陰影引起的相位展開錯誤像素,然而該方法不能消除相鄰無效像素造成的相位錯誤;AN等[14]在實驗中使用11×11的中值濾波消除了大部分的噪聲點,但大尺度的中值濾波卻造成了相位獲取精度的損失。
為了更有效地消除相位跳躍像素點和無效像素點,同時保證相位獲取精度,本文提出了一種基于格雷碼相移條紋投影的連續(xù)相位自適應(yīng)補償方法。首先通過相移法得到包裹相位圖,其次使用正反格雷碼計算出相位順序,從而得到連續(xù)相位圖,然后在連續(xù)相位圖中尋找錯誤像素點進行自適應(yīng)補償,最終形成了一套高精度的三維形貌測量方法。
格雷碼相移方法是在純格雷碼的基礎(chǔ)上[15],摒棄了高頻的格雷碼圖像,取而代之的是浮點型的相移正弦圖像,不僅提高了捕獲變形圖像的穩(wěn)定性,而且在一定程度上減少了投影圖像的數(shù)量。
格雷碼是一種具有反射特性和循環(huán)特性的單步自補碼,對于任意一組格雷碼,其任意兩個相鄰的編碼只有一位二進制數(shù)不同,該特性有利于消除投影過程突變誤差,可以有效地降低解碼的出錯率,圖1為7幅不同的格雷碼圖像。
圖1 格雷碼編碼圖像Fig.1 Gray code encoded images
格雷碼解碼過程可以分為3個部分,首先對捕獲的格雷碼圖像選取合適的閾值進行二值化,然后計算每一個像素的格雷碼,最后轉(zhuǎn)化為十進制碼。由于物體表面的反射率不同,不同的區(qū)域又存在互相反射,可能導(dǎo)致格雷碼圖像的二值化不準確。針對這個問題,本文采用正反格雷碼,即在投射格雷碼圖像之后再向待測物體投射一組格雷碼反碼圖像[16]。通過編碼得到的正反格雷碼圖像如圖2所示,其中,圖2(a)表示的是格雷碼圖像,圖2(b)表示其對應(yīng)的反碼圖像。從圖中可以看出, 圖2(a)中黑色條紋在圖2(b)中為白色條紋,圖2 (a)中白色條紋在圖2(b)中為黑色條紋,該方法可以降低黑白分界處像素誤判的發(fā)生概率。
圖2 正反格雷碼圖像Fig.2 Positive and negative gray code images
以橫向像素1024為例,使用5對正反格雷碼把圖像橫向坐標分成32個區(qū)間,每一個區(qū)間包含 32個像素,在這個區(qū)間內(nèi)所有像素的格雷碼值相同,然后采用周期為32的四步相移法更精確地劃分測量區(qū)間。按順序?qū)⑺牟较嘁茍D像投射到待測物體表面后,相機捕捉到的變形條紋中每一個像素的值為In(x,y),即
(1)
式中:N表示相移模式,本文采用四步相移法,N=4;n表示相移指數(shù),n=0,1,2,3;A(x,y)表示該點的平均強度;B(x,y)表示該點的振幅值;φ(x,y)為包裹相位,即
(2)
格雷碼解碼得到相位順序K(x,y),格雷碼結(jié)合四步相移法,可以得到每個像素點唯一確定的碼字,將相位展開為Φ(x,y),即
Φ(x,y)=φ(x,y)+2π·K(x,y)。
(3)
正如在引言中所提到的,捕獲的格雷碼圖像在解碼時位于黑白邊界的像素有可能出現(xiàn)錯誤,從而導(dǎo)致相位展開錯誤,如圖3所示。
圖3 相位展開錯誤像素Fig.3 Pixels with phase unwrapping error
由圖3中的連續(xù)相位圖的局部放大區(qū)域可以發(fā)現(xiàn),在相位跳躍附近發(fā)生了相位展開錯誤。經(jīng)分析,連續(xù)相位圖中相位跳躍引起的錯誤像素可被視為脈沖噪聲,可以通過一個中值濾波器將其有效濾除,即
ΦM(x,y)=medifilter[Φ(x,y);Sx×Sy]
(4)
式中:Φ(x,y),ΦM(x,y) 分別為中值濾波前、后的相位;medifilter表示中值濾波算子;Sx×Sy表示濾波器的大小。
濾波器的大小由連續(xù)相位圖包含錯誤像素的程度決定。當采集的圖像不包含陰影生成的無效像素時,小尺寸的中值濾波器可以濾除[17];當采集的圖像包含陰影生成的相鄰無效像素時,大尺寸的中值濾波器可以濾除[18]。然而,大尺寸的中值濾波可能模糊相位跳躍邊界,造成相位的細節(jié)丟失。為了有效地消除相位跳躍錯誤像素和無效像素的影響,本文基于中值濾波設(shè)計一種自適應(yīng)的相位補償方法。
自適應(yīng)補償方法分為兩步,分別是判斷錯誤像素和中值濾波:第1步是判斷相位展開錯誤的像素,由式(3)可知,在連續(xù)相位圖中,以像素A為中心的局部區(qū)域中,其鄰近像素展開正確的相位值應(yīng)該與像素A的相位值相近,展開錯誤的相位值與像素A周圍的值相差較大,基本為2π的倍數(shù),通過該原理可以找到展開錯誤的像素;第2步是自適應(yīng)中值濾波補償相位,在檢測到的錯誤像素上使用中值濾波,通過不斷地擴大濾波范圍盡可能地補償錯誤像素。具體步驟如下所述。
1) 在連續(xù)相位圖中選取以像素A為中心的5×5局部區(qū)域。
2) 判斷像素A是否為錯誤像素,當|Φ(A)-Φ(B)| 3) 當像素A為展開錯誤像素時,在A的區(qū)域使用中值濾波,初始濾波窗口W=1×5,遍歷整個圖像對圖像中錯誤像素進行中值濾波。 4) 擴大濾波窗口,窗口尺寸較短的增加2步長,即窗口尺寸從1×5,3×5,5×5,7×7不斷擴大,窗口最大尺寸W=11×11,重復(fù)2)~3),直到遍歷圖像沒有展開錯誤的像素為止或者濾波窗口已經(jīng)是最大。 為了驗證本文方法在連續(xù)相位圖中對錯誤像素點的補償可行性,搭建如圖4所示的雙目結(jié)構(gòu)光三維測量系統(tǒng):實驗平臺包括兩個焦距16 mm的海康CA-060GC相機,分辨率為1024像素×768像素的SONY投影儀以及一臺配有VS2015+OpenCV的筆記本電腦。其中,投影儀位于中間,投影儀兩側(cè)分別放置一個相機,構(gòu)成雙目立體視覺系統(tǒng),待測物體為立體人臉石膏模型。 圖4 雙目結(jié)構(gòu)光測量系統(tǒng)Fig.4 Binocular structured light measurement system 實驗過程中,首先采用張正友標定法對相機進行標定,其次投射正反格雷碼和圖像相移條紋圖像于待測物體表面,如圖5(a)~5(d)所示,然后根據(jù)式(1)計算出待測物體的包裹相位,包裹相位具有周期性,如圖5(e)所示。最后根據(jù)正反格雷碼圖像解碼計算相位順序,從而得到展開相位,將展開相位歸一化為0~255的灰度范圍,得到連續(xù)相位圖,連續(xù)相位如圖5(f)所示,其局部放大如圖6(a)所示。 圖5 相移法結(jié)合正反格雷碼Fig.5 Phase shifting method combining positive gray code with negative gray code 圖6 用不同中值濾波器補償展開錯誤點的效果Fig.6 Effect of different median filters on compensating for unwrapping error points 根據(jù)1.2節(jié)原理進行相位跳躍錯誤搜尋檢測,連續(xù)相位圖確實存在如圖6(a)中紅色點所示相位展開的錯誤像素。當針對連續(xù)相位應(yīng)用本文所述自適應(yīng)補償方法后,其連續(xù)相位局部放大圖如圖6(b)所示,其錯誤像素已經(jīng)消除。為了驗證本文方法的效果,針對同一個區(qū)域直接使用1×3,3×3,7×7,11×11中值濾波進行處理,其結(jié)果如圖6(c)~6(f)所示。從實驗結(jié)果可以發(fā)現(xiàn),1×3,3×3的小尺寸中值濾波器可以補償大部分的錯誤像素,但從圖中可以明顯地看出被替代的痕跡,且仍然存在錯誤像素。7×7,11×11大尺寸中值濾波器雖然可以補償大部分的錯誤像素,但可以明顯地看出它模糊了相位跳躍邊界,如圖6(e)和圖6(f)箭頭所指區(qū)域。而本文方法可以補償大部分的錯誤像素,而且不會模糊相位跳躍邊界,相較于僅使用固定值中值濾波的方法有著更好的補償效果。 為了進一步驗證本文方法的有效性,將連續(xù)相位圖進行雙目立體匹配處理,得到視差圖,接著利用獲得的深度信息得到三維點云。分別獲得了僅采用相移法結(jié)合格雷碼方法重建得到的點云圖、采用3×3中值濾波方法處理后的點云圖和采用本文提出的自適應(yīng)補償方法處理后的點云圖,如圖7(a)~7(c) 所示。從實驗結(jié)果可以得出:在傳統(tǒng)相移法結(jié)合格雷碼方法重建出來的點云圖中存在錯誤像素造成的明顯的裂紋;而直接使用3×3中值濾波可以消除部分裂紋,但在鼻梁、眼睛等紋理豐富的區(qū)域補償效果不明顯;使用本文方法可以重建出被測物體的細節(jié),在待測物體上也沒有明顯的裂紋,重建表面較為平滑,因此能夠更好地重建出被測物體的表面形貌。 圖7 3種方法的重建效果Fig.7 Reconstruction effect of three methods 實驗中同樣針對上述3種方法獲得的點云進行了點云配準,其配準的基礎(chǔ)點云為采用KSCAN高精度三維激光掃描儀(掃描精度可以達到0.02 mm)掃描待測物體建立一個接近Ground Truth的三維點云模型。結(jié)合迭代最近點法(ICP)進行精配準,匹配點數(shù)為50 000,傳統(tǒng)方法的RMSE為0.253 082,3×3中值濾波方法的RMSE為0.243 47,本文方法的RMSE為0.208 439。由此可知,本文方法提高了三維形貌測量的精度,減小了傳統(tǒng)相移法結(jié)合格雷碼方法相位展開跳躍錯誤對三維形貌測量的影響。 本文基于格雷碼相移雙目結(jié)構(gòu)光系統(tǒng),提出一種連續(xù)相位自適應(yīng)補償方法來消除連續(xù)相位圖中展開錯誤的像素點。該方法從兩個方面提高了三維測量的精度:1) 本文方法僅應(yīng)用于展開錯誤的像素點而不是整個圖像,提高了補償錯誤像素點的準確性,對原始圖像的影響較??;2) 本文方法會自適應(yīng)擴大檢索范圍,當像素與周圍像素值相近時結(jié)束操作,不會模糊圖像細節(jié)區(qū)域。實驗結(jié)果表明,采用本文方法能夠補償大部分的錯誤像素并保留待測物體的細節(jié),重建效果優(yōu)于傳統(tǒng)格雷碼相移方法和應(yīng)用固定值中值濾波的處理方法。然而,本文方法在進行錯誤像素處理時需要耗費一定的時間,下一步需要對其加速處理進行研究。2 實驗與結(jié)果分析
3 結(jié)論