曾凱,劉賀飛,何茜,王福斌,邸躍
(華北理工大學(xué) 電氣工程學(xué)院,河北 唐山 063210)
線結(jié)構(gòu)光三維視覺測量技術(shù)作為一種有效的光學(xué)測量方法,具有非接觸、準(zhǔn)確度高和良好的實(shí)時性等優(yōu)點(diǎn),在工業(yè)生產(chǎn)、逆向工程、計算機(jī)視覺等領(lǐng)域得到廣泛應(yīng)用。提取光條圖像的條紋中心坐標(biāo)是線結(jié)構(gòu)光三維視覺測量技術(shù)的關(guān)鍵,光條圖像包含被測量物體表面的三維形貌信息,是被測點(diǎn)三維坐標(biāo)求取的依據(jù)[1]。光條中心線坐標(biāo)提取的偏差將直接影響被測對象三維坐標(biāo)的精度[2]。由于噪聲對條紋中心提取存在一定的影響,因此如何充分利用光條圖像特征,實(shí)現(xiàn)條紋中心的快速、高精度提取,是三維視覺測量技術(shù)首要考慮的問題。
李丹等[3]將極值法和灰度重心法相融合,首先利用極值法找到灰度值的最大點(diǎn),然后通過灰度重心法獲取光條的中心位置,此方法充分利用了圖像的灰度信息,將2種方法的特點(diǎn)相結(jié)合,提高了條紋中心提取的準(zhǔn)確性和快速性,但是也存在抗噪能力差的缺點(diǎn)。賀忠海等[4]提出了曲線擬合法,實(shí)現(xiàn)了亞像素提取的高精度和高穩(wěn)定性,魯棒性良好,但是檢測提取速度慢,并且不適合復(fù)雜情況下激光條紋的檢測。李鳳嬌等[5]對Steger 算法做出改進(jìn),可根據(jù)寬度值的差異性確定光條中心點(diǎn)坐標(biāo),但當(dāng)激光條紋中心提取時,中心點(diǎn)和邊緣點(diǎn)之間的距離問題使運(yùn)算效率降低。吳慶陽等[6]對方向模板法進(jìn)行優(yōu)化,應(yīng)用可變的方向模板確定條紋法線的方向,并結(jié)合灰度重心法在法線方向提取條紋的中心,使提取精度得到提高,但該方法只采用了固定方向的模板,導(dǎo)致計算誤差較大。蔡懷宇等[7]在Steger算法的基礎(chǔ)上,用主成分分析法(PCA)代替Steger算法中利用Hessian 矩陣求特征值的過程,該方法避免了對圖像進(jìn)行多次二維高斯卷積,提高了提取速度,保證了提取精度,滿足系統(tǒng)實(shí)時性的需求。
在實(shí)際測量中,一些工件表面存在不同程度的腐蝕或污染現(xiàn)象,并且表面的金屬材料反光現(xiàn)象嚴(yán)重,導(dǎo)致激光反射率不均勻使光條圖像受到較大的環(huán)境影響,易造成光條圖像離散性較大[8]。為解決激光條紋圖像的質(zhì)量問題,提出一種自適應(yīng)卷積模板結(jié)合改進(jìn)Steger算法的結(jié)構(gòu)光條紋中心提取法。該方法通過自適應(yīng)卷積模板有效減弱噪聲,對去噪后的圖像進(jìn)行閾值分割快速得到條紋的感興趣區(qū)域,再采用Steger法根據(jù)區(qū)域中條紋的線寬分段,精確提取圖像中條紋的亞像素位置,提高了系統(tǒng)精度與計算效率,并且適用于高亮面物體的檢測。
線結(jié)構(gòu)光是一種單色線激光。灰度值在光條截面上呈對稱高斯分布,灰度值最大點(diǎn)是條紋中心。但由于被測物體本身性質(zhì)的影響,例如材質(zhì)是否均勻、透光性能如何、材料本身的顏色、形狀和表面光滑度等問題[9],造成被測工件表面對光的反射率并不均勻,即在相機(jī)坐標(biāo)系中,與理想情況相比,這種偏差將會使被測物體表面反射的條紋截面光強(qiáng)度的分布發(fā)生改變,從而致使條紋截面的灰度值呈非正態(tài)分布,即一種不對稱的近似高斯分布。
圖1(a)為非正態(tài)分布的條紋圖像, 其真實(shí)的條紋中心在水平直線上,但灰度值明顯偏離真實(shí)中心位置并在其兩側(cè)波動。圖1(b)為正態(tài)分布的條紋圖像,其灰度值基本對稱分布。
圖1 不同正態(tài)分布的條紋
Steger算法將圖像視為二維函數(shù),利用Hessian矩陣計算特征值和特征向量,得到條紋中心法線的方向,并在法線方向上將條紋灰度分布根據(jù)泰勒多項式展開,然后獲取對應(yīng)法線上的極值點(diǎn),即在條紋截面灰度分布曲線上,一階導(dǎo)數(shù)為0,二階導(dǎo)數(shù)為負(fù)的極小值點(diǎn),也就是所求取得條紋截面中心亞像素點(diǎn)。通過求取激光條紋圖像像素點(diǎn) 的Hessian 矩陣特征值和對應(yīng)的特征向量來得到光條中心點(diǎn)法線方向[10]。Hessian矩陣表示為:
(1)
式中:g(x,y)是二維高斯函數(shù)。
設(shè)nx,ny是經(jīng)Hessian矩陣求出的條紋法線方向的單位向量,以點(diǎn)(x0,y0)為標(biāo)準(zhǔn)點(diǎn),對條紋截面灰度分布函數(shù)進(jìn)行二階泰勒展開,則條紋橫截面上點(diǎn)(x0+tnx,y0+tny)的灰度為:
(2)
其中N=(tnx,tny),rx、ry由z(x,y)和與之相應(yīng)的微分形式的高斯核卷積得到。如下式:
(3)
(4)
可得出條紋中心點(diǎn)精確位置為(x0+tnx,y0+tny)。
由于Hessian矩陣運(yùn)算量大,其中每個點(diǎn)都要進(jìn)行5次(rx、ry、rxy、rxx、ryy)二維高斯卷積,導(dǎo)致計算效率低造成系統(tǒng)實(shí)時性下降,因此,需要在保證精度的基礎(chǔ)上,對Steger算法進(jìn)行改進(jìn),適當(dāng)提高Steger算法的計算效率??梢岳酶咚咕矸e的可分離性和對稱性,將二維高斯核等效分解為一次高斯行卷積和一次高斯列卷積,將運(yùn)算量從5n2次乘加運(yùn)算減少到6n+4次乘加,即從根本上減小對于大模板卷積的計算量[11,12]。
通常情況下,通過圖像預(yù)處理不能理想地消除噪聲干擾。當(dāng)激光投射到粗糙的物體表面時,采集圖像并進(jìn)行閾值分割和中值濾波預(yù)處理,得到圖2所示圖像,圖中噪聲沒有被完全消除,導(dǎo)致條紋中心提取的精度下降,為提高提取精度,采用一種基于激光條紋中幾何信息和相關(guān)性的自適應(yīng)卷積法來減弱噪聲。
圖2 粗糙表面條紋預(yù)處理
首先計算自適應(yīng)模板的大小,自適應(yīng)模板的大小和元素值取決于激光條紋中的幾何信息和相關(guān)性,通過滑動模板達(dá)到去除噪聲的目的[13]。自適應(yīng)模板的獲取可以簡述為:
Step1:在圖像預(yù)處理之后,計算行(或列)中非零灰度像素的數(shù)量。
Step2:通過收縮矩陣來移除零元素,得到一個新的矩陣K,其中Km表示矩陣中最大值,Kp表示矩陣中所有元素的平均值。
從圖3(a)可以明顯觀察到對原圖像使用自適應(yīng)模板進(jìn)行卷積后噪聲減弱,激光條紋的輪廓得到了完好地保留。然后使用大津法對圖像進(jìn)行閾值分割[14],選定閾值并對圖像進(jìn)行二值化處理,從背景中提取出圖3(b)所示的感興趣區(qū)域。因此,通過上述一系列圖像處理,獲得了最佳的條紋區(qū)域,有效消除了噪聲對條紋中心提取的干擾,并且顯著提高了光條提取速度,實(shí)現(xiàn)了測量系統(tǒng)的實(shí)時要求,使之后的處理步驟更加簡化。
圖3 自適應(yīng)卷積和閾值分割處理后的圖像
在實(shí)際測量環(huán)境下,由于被測物體本身表面通常伴有粗糙、高反光等干擾因素,往往造成得到的光條圖像的條紋寬度不一致,因此,條紋中心線直接提取很難達(dá)到其精度要求。在得到了條紋的感興趣區(qū)域后,運(yùn)用幾何中心法粗略提取條紋中心點(diǎn),該研究使用Canny算法進(jìn)行邊緣檢測[16],邊緣檢測完成后計算其幾何中心,計算所得結(jié)果作為條紋粗略中心點(diǎn),按照列查詢的方式,分別檢測每行中的最上和最下的非零像素點(diǎn)對應(yīng)的行坐標(biāo)值,取其平均值作為中心坐標(biāo)。圖4分別為經(jīng)過處理后邊緣圖像和邊緣及邊緣中心線圖像。
圖4 邊緣圖像和邊緣及中心線圖像
(5)
其中,M,N為光條行號。
利用實(shí)驗(yàn)室中的線結(jié)構(gòu)光三維測量系統(tǒng),驗(yàn)證算法的準(zhǔn)確性和有效性,線結(jié)構(gòu)光測量系統(tǒng)主要由0-30MW線結(jié)構(gòu)光激光器、分辨率為1 600×1 200的德國Allied Vision TechnologieMako G-192C攝像機(jī)組成,采用Matlab軟件編程實(shí)現(xiàn)。測量對象為2種表面光滑的矩形工件,拍攝到的光條圖像如圖5所示,圖5(a)表明工件表面光滑、反射率相對均勻,有輕微的反光現(xiàn)象,光條圖像質(zhì)量較好;圖5(b)表明測量工件表面反射率不均勻,光條圖像較離散,反光嚴(yán)重,圖像質(zhì)量不高。
圖5 工件光條圖像
采用相同濾波參數(shù)及線寬對兩幅激光條紋圖像進(jìn)行預(yù)處理,第1列為灰度重心法,可以看出提取的中心線波動較大;第2列為基于Hessian 矩陣的Steger 方法,與灰度重心法對比,中心線較為平整;第3列為本文算法,其適應(yīng)性更好,提取效果最佳。
圖6 3種算法提取的光條中心線圖像
測量對象為工件表面,對提取結(jié)果分別進(jìn)行直線擬合,并計算所有數(shù)據(jù)點(diǎn)到擬合直線的均方差。通過對比均方差的大小來判斷算法的測量精度,均方差越大則測量精度越低,表明該算法提取光條中心的準(zhǔn)確性較低;均方差較小,則該算法提取光條中心的準(zhǔn)確性較高[19]。表1為使用3種不同算法提取2種光條圖像中心線,并計算獲得的數(shù)據(jù)點(diǎn)與擬合直線的均方差數(shù)據(jù)。
表1 3種光條中心線提取方法均方差
通過表1中的數(shù)據(jù)可以得出,對于亮度均勻且質(zhì)量較好的光條,3種算法求得的數(shù)據(jù)點(diǎn)到擬合直線距離的均方差較小,光條的中心線提取較為準(zhǔn)確;對于光條較離散且質(zhì)量較差的情況,灰度重心法的均方差已偏離很大,對比其他2種方法,該研究算法的均方差相對較小,可以準(zhǔn)確地提取光條中心線,進(jìn)而為后續(xù)的三維測量打下良好的基礎(chǔ)。
通過對線結(jié)構(gòu)光的中心提取實(shí)驗(yàn),提出了一種自適應(yīng)卷積結(jié)合改進(jìn)Steger算法的條紋中心線提取方法。利用自適應(yīng)卷積模板有效地降低了噪聲對圖像的干擾,之后利用幾何中心法提取條紋粗略中心點(diǎn),根據(jù)光條區(qū)域的寬度不同,設(shè)定不同的高斯函數(shù)均方差σ,利用Hessian 矩陣及泰勒級數(shù)實(shí)現(xiàn)激光條紋寬度變化的中心線檢測,提高了Hessian矩陣的獲取速度,滿足測量的實(shí)時性要求,精度可達(dá)到亞像素級。該方法穩(wěn)定性強(qiáng)、精度高,適合對高反光物體的光條中心提取,有利于提升結(jié)構(gòu)光的三維重建的效率。