楊鎮(zhèn)豪,楊 柳,李 輝,陳建政
(1.四川大學 計算機學院,四川 成都 610064; 2.西南交通大學 牽引動力國家重點實驗室,四川 成都 610031)
在三維測量(three-dimensional measurement)圖像處理系統(tǒng)中,線結(jié)構(gòu)光測量技術(shù)是一種應(yīng)用廣泛、測量有效的光學測量方法,其原理是線光源激光器產(chǎn)生的光束投射到待測工件表面,用CCD相機拍攝調(diào)制后的激光光帶圖像,然后根據(jù)光帶中心位置的偏移計算出測量物體的三維信息。
由于測量系統(tǒng)中的激光光束質(zhì)量、測量環(huán)境和待測物體表面的光學性質(zhì)都會對攝像機采集到的光帶圖像造成影響,從而對中心線的提取帶來各種問題,所以如何精確快速地提取圖像中線結(jié)構(gòu)光光帶中心線,是整個測量系統(tǒng)測量精度的關(guān)鍵。多年來,國內(nèi)外學者就此問題提出了多種方法,比較常見的主要有極值法、幾何中心法、灰度重心法和Steger法等[1-2]。極值法與幾何中心法通過尋找圖像灰度值的極值與幾何中心計算光帶中心線,原理簡單,運算速度較快,但是精度只能達到像素級別,難以滿足工業(yè)測量的要求?;叶戎匦姆ɡ眉す夤鈳芰款愃聘咚狗植嫉奶匦杂嬎愎鈳е行?,穩(wěn)定性優(yōu)于極值法,但其準確性易受圖像高頻噪聲和光帶非正態(tài)分布的影響,僅適用于圖像光帶質(zhì)量較好的場合[3-4]。Steger法利用Hessian矩陣獲取激光光帶像素點的法線方向,通過法線方向上的極值點計算出亞像素光帶中心線,精度高,但是對光帶寬度敏感,且運算量大[5-8]。
實際工程應(yīng)用中,一般使用的激光器是普通的激光器,投射出來的光帶質(zhì)量穩(wěn)定性、均勻性不高,此外,某些工件部分表面存在腐蝕或污染,導致激光反射率不均勻,造成光帶圖像離散性較大;或者工件表面的金屬材料導致的反光嚴重,造成光帶圖像受環(huán)境影響大,質(zhì)量低。針對上述應(yīng)用背景,文中提出了一種結(jié)合極值法與Steger法的中心線提取算法,以消除或減弱復雜環(huán)境對算法提取中心線帶來的影響。
激光器產(chǎn)生激光的基本原理是大量粒子的受激輻射現(xiàn)象,光學共振腔中的粒子受到入射光子感應(yīng)或激勵,持續(xù)輻射出與入射光子特征完全相同的大量光子就是激光[9]。一般的線激光光源是由點激光光源穿過柱面鏡和球面鏡組合產(chǎn)生,其光束橫截面上的光強能量呈高斯分布,因此調(diào)制到圖像傳感器上的光帶截面灰度值可用近似高斯模型來描述:
(1)
現(xiàn)有結(jié)構(gòu)光光帶中心線提取算法主要分析光帶的三個特性,即光帶中心點位于光帶橫截面的灰度零階極大值,一階過零點,二階極小值處(如圖1所示)[10]。
圖1 結(jié)構(gòu)光帶截面灰度值的零階、一階、二階特征
極值法是簡單的光帶中心線提取算法,利用光帶中心點位于光帶橫截面灰度的極大值處這一特性,找到光帶橫截面極大值即可獲得光帶中心(見圖2)。該算法快速簡單,能達到像素級的精度。
Steger算法將圖像看成二維函數(shù),在光帶法線方向上將光帶灰度分布按泰勒多項式展開,求取多項式的極大值所在位置,即為光帶中心。為了得到圖像的泰勒多項式,需要獲得圖像的偏導數(shù),圖像的偏導數(shù)rx,ry,rxy,rxx,ryy通過圖像分別與下面式子中的高斯核進行卷積獲得[11]。
圖2 極值法受噪聲的影響
(2)
(3)
(4)
(5)
(6)
則對于某一像素(x0,y0),圖像二階泰勒展開有:
r(x,y)=r(x0,y0)+[(x-x0)(y-
(7)
該點的Hessian矩陣為:
(8)
該點法線方向(nx,ny)及該方向的二階導數(shù),分別為該點Hessian矩陣的最大絕對特征值和相應(yīng)的特征向量。
光帶圖像r(x,y)中,在光帶方向上的一階方向?qū)?shù)為0,且二階方向?qū)?shù)取負的極小值點,位于光帶中心上。設(shè)光帶方向n(x,y)用單位向量(nx,ny)表示,則式7沿光帶方向(nx,ny)可以表示為:
r(x0+tnx,y0+tny)=r(x0,y0)+tnxrx(x0,y0)+
(9)
因光帶方向上的一階導數(shù)為零,則有:
(10)
由式9和式10可得:
(11)
則圖像灰度的極值點為(px,py)=(x0+tnx,y0+tny),即光帶中心的一階導數(shù)過零點,且(nx,ny)方向上的二階方向?qū)?shù)小于指定閾值,則點(px,py)為光帶的中心點[12-13]。
為了處理光帶離散性差、線寬不均勻、高反光的激光圖像,算法運用運算量少的極值法確定出光帶每一行截面寬度,得到粗略的光帶區(qū)域;然后再結(jié)合自適應(yīng)線寬Steger法計算出光帶中心的亞像素位置。
線結(jié)構(gòu)光投射器將激光投射到被測物體表面,利用CCD相機采集圖像。通常情況下,因為環(huán)境的復雜性,往往會給提取激光光帶帶來一定的干擾。為了防止這些環(huán)境所帶來的干擾,往往用CCD相機連續(xù)采集多張測量圖像,通過圖像序列做差獲得只有激光光帶的測量圖像,避開了環(huán)境復雜性的干擾。
這時得到的激光光帶的圖像通常具有較高的對比度,因此采用基于大津法(Otsu算法)[14]選擇適應(yīng)的閾值,然后用這個閾值對圖像進行二值化處理,并且再進行一系列的腐蝕和膨脹操作,把感興趣區(qū)域(ROI)從背景中提取出來。不僅能有效減少環(huán)境噪聲對后續(xù)光帶中心提取的影響,而且能明顯提高光帶提取速度,滿足測量系統(tǒng)對實時性的要求。
在現(xiàn)實環(huán)境下,被測物體表面往往有缺陷、環(huán)境反光等干擾因素,得到的激光光帶圖像的光帶寬度很有可能不一致,所以直接進行光帶中心線提取達不到精度要求。為了解決這個問題,首先運用改進的極值法粗略提取光帶區(qū)域,然后再精確提取光帶中心。文中算法首先通過尋找每一行最大像素值和最大像素值0.9倍所在的坐標,通過這兩個坐標計算出光帶粗略中心;然后算法設(shè)定最大光帶寬度閾值為40個像素值,排除反光現(xiàn)象造成的錯誤光帶,具體方法是光帶寬度大于40的部分進行截斷,其他正常光帶部分尋找到最低光帶邊緣后左右再增加5個像素點的值,以保證光帶包含全部光帶區(qū)域。
再采用參數(shù)為5個像素的中值濾波(median filtering)對粗略光帶區(qū)域進行處理,以解決由于光帶離散性差和反光帶來的光帶寬度差異太大的問題;最后對光帶區(qū)域每行用參數(shù)σ=0.5,窗口寬度為3的高斯核進行高斯濾波,去除光帶中的雜點和高頻噪聲。經(jīng)過上述一系列圖像處理,得到了最佳的光帶區(qū)域。
w(i)=
(12)
其中,M,N為光帶行號。
觀察Steger推導公式不難發(fā)現(xiàn),每個點都要進行5次(rx,ry,rxy,rxx,ryy)二維高斯卷積,會導致算法運算量很大。從式2~6可以看出,二維高斯核可以等效分解為一次高斯行卷積和一次高斯列卷積,這樣對于大模板的卷積計算將會從根本上減小計算量。
為了驗證算法的有效性和準確性,實驗利用基于三角測量法的線結(jié)構(gòu)光測量系統(tǒng),選取兩種表面平整的平面物體作為測量對象,分別對其表面進行光帶中心線提取。實驗拍攝到的光帶圖像如圖3所示。圖(a)表示測量物體表面光滑、反射率均勻,無反光現(xiàn)象,可以看到激光圖像質(zhì)量較好;圖(b)表示測量物體表面反射率不均勻、存在較嚴重的反光現(xiàn)象,可以看到激光光帶圖像比較離散,反光較為嚴重,質(zhì)量不高。
圖3 平面物體實驗圖像
采用相同線寬和其他濾波參數(shù)對兩幅光帶圖像進行預處理,然后分別用灰度重心法、基于Hessian矩陣的Steger方法和文中算法對圖3所示圖像提取光帶中心。由于實驗采用的測量對象是物體平面,因此分別對結(jié)果直線擬合,計算所有數(shù)據(jù)點到擬合直線的均方差。在同樣測量條件下,若各數(shù)據(jù)點到擬合直線距離的均方差較大,則表明測量精度較低,說明算法提取光帶中心相對不準確;反之,如果數(shù)據(jù)點到擬合直線距離的均方差較小,則說明算法提取光帶中心相對準確[15]。表1為運用三種算法對兩種實驗光帶圖像進行多次中心線提取,計算得到的數(shù)據(jù)點到擬合直線均方差的平均值。
表1 三種算法均方差對比
從表1可以看出,對于亮度均勻、質(zhì)量較好的光帶,三種算法求出的數(shù)據(jù)點到擬合直線距離的均方差較小且差別不大,提取到的光帶中心線較準確;而對于光帶較離散、質(zhì)量較差的情況,灰度重心法的均方差已偏離很大,而文中算法的均方差優(yōu)于其他兩種方法,能比較精確地提取光帶中心線。
為了進一步驗證該算法對復雜環(huán)境的適應(yīng)性,將其應(yīng)用到存在高反光特性的金屬測量工件。圖4(a)為測量工件不同平面在CCD相機中調(diào)制得到的光帶圖像,離散性差,且表面存在的高反光特性導致光帶截面不再呈高斯分布。圖4(b)為算法第一步處理得到的光帶二值化圖像。圖4(c)為算法得到的最佳光帶區(qū)域圖像。圖4(d)為利用文中算法得到的結(jié)構(gòu)光光帶中心。
圖4 實驗結(jié)果圖像
實際工程應(yīng)用中,針對三維測量圖像處理系統(tǒng)中結(jié)構(gòu)光光源質(zhì)量、物體表面反光,或攝像機采集圖像質(zhì)量等環(huán)境因素對結(jié)構(gòu)光中心線提取的影響,提出了一種結(jié)合極值法與Steger法的中心線提取算法。該算法首先利用極值法初步確定光帶區(qū)域,然后利用自適應(yīng)線寬的Steger法計算出光帶中心亞像素位置。實驗結(jié)果表明,該算法能快速有效地提取光帶中心,具有良好的測量精度和穩(wěn)定性,在光帶圖像質(zhì)量低、測量物體存在反光現(xiàn)象等復雜環(huán)境下仍能比較準確地提取光帶中心位置。該算法為后續(xù)的各種圖像測量系統(tǒng)提供了良好的精度保障,具有一定的實用價值。