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