席劍輝,包 輝
(沈陽航空航天大學自動化學院,沈陽 110136)
視覺測量在計算機、圖像處理以及光學等技術逐漸完善的基礎上得到了快速發展。視覺測量具有非接觸、實時性強、精度較高的優點,在工業領域得到了廣泛的應用。目前,視覺測量方法主要有立體視差法、莫爾條紋法、全息干涉法、結構光法等。在這些方法中,激光測量方法以其實時性強、大量程、條紋圖像易提取,以及主動受控等特點受到眾多研究和應用[1]。激光測量原理是用攝像機以一定角度提取在物體上的光條信息,然后利用算法處理攝像機提取到的光條信息,從而得到被測量物體的信息。在激光測量系統中,提取激光條紋中心的精度會影響到整個測量系統的測量精度。現有的提取條紋中心算法主要有骨架提取法、極值法、灰度重心法、曲線擬合法、方向模板法、Hessian矩陣法等。
極值法實現簡單并且提取速度快,但抗噪聲比較差,提取精度不高。曲線擬合法主要是將條紋中心橫截面灰度極大值點作為條紋中心點。該方法是將條紋橫截面的灰度分布擬合成曲線,如果激光條紋受噪聲影響較小,那么其提取效果好。所以曲線擬合法受噪聲影響較大,并且樣本點取得少,提取結果也不好。方向模板法具有抗噪聲能力強和斷裂修補的優點,能較完整地保留結構光條紋的細節信息。該方法采用5×3的4種不同方向的模板與條紋圖像進行卷積,從而提取條紋中心。不過該方法由于限制了方向,所以提取精度不是很高,并且運算量較大,一般工業上很少運用其方法[2]。灰度重心法基本原理是將每行的灰度值加權平均作為該行的中心。該方法減小因條紋灰度分布的不均勻而引起的誤差,從而提高提取精度。但是當條紋圖像中含有大量噪聲或者預處理效果不好時,灰度重心法提取的精度會不高。上述的眾多方法在諸多方面都存在不足,許多學者提出了很多改進的條紋中心提取算法。主要從兩個方面進行改進,一個是運用一些算法提高待處理條紋圖像的質量;另一個方面是改進現有的條紋中心提取算法。胡坤等利用Hessian矩陣確定線條的法線方向,然后在其法線方向上利用泰勒展開求出光條紋中心的亞像素位置[3]。王澤等根據條紋寬度不均勻的現象,提出了一種自適應方向模板的結構光條紋中心提取方法[4]。尚雅層提出基于函數曲線擬合的亞像素邊緣檢測法。該方法采用傳統邊緣檢測進行定位,再取定位好邊緣附近一些點,計算這些點的灰度梯度值,然后利用高斯曲線擬合這些梯度值,對擬合好的曲線求取對稱軸就是條紋中心[5]。吳家勇根據結構光圖像上條紋中心兩邊的灰度特性及光帶灰度的非正態分布特點,運用自適應閾值法確定條紋的邊界閾值,應用梯度重心法進行條紋中心的提取[6]。
由于現有的條紋中心提取算法在處理噪聲較大和復雜條紋上效果不好。本文提出利用差影法提取目標條紋,此方法不僅可以準確地提取目標,也可減少運算時間和去噪;為了去噪和保證目標條紋的完整性,這里利用連通域的方法及實用改進的質心法來應對多種形式的條紋中心提取。
利用差影法提取感興趣區域[7-8]。實際上,差影法就是對圖像進行代數運算,代數運算是指對兩幅一樣大小的輸入圖像進行點對點的加、減、乘、除計算從而得到輸出圖像的運算。本文利用差影法中的圖像減運算,即有結構光圖像G(x,y)與結構光背景圖像 g(x,y)相減,得出想要的條紋圖像 H(x,y)的方法。其目的是從圖像中去掉不需要的信息,保留目標信息,為下面的識別節省時間和排除一些干擾。其表達式:

采集1組圖像,一幅有結構光圖像和另一幅有結構光背景圖像。如圖1所示,將兩幅圖像做減運算,其所得結果如圖所示,得到一幅條紋圖像,并將結果閾值化。

圖1 差影法分割圖像條紋信息
通過上述的差影法,將得到感興趣區域——條紋目標。由于激光的光源質量、目標物體表面粗糙度以及激光源以外的光源等因素,使條紋圖像中帶有大量的噪聲,其影響了條紋中心提取的精確。因此,要精確地提取條紋中心還需要盡可能地去除噪聲。由于本文提取的目標是線激光,線激光具有方向性強,亮度高和單色性好等特性。根據線激光的特性,這里提出基于連通域標記的去噪方法[9]。
連通區域標記是指利用一定連通規則(4鄰域連通、8鄰域連通或M鄰域連通)的像素點用唯一的標號進行標識。根據線激光的特性,這里選擇4鄰域的連同規則來標記。

圖2 連通域
根據閾值化處理的結果,將灰度值不為0的像素識別為目標,其像素的灰度值為1;灰度值為0的像素作為背景,其灰度值為0。那么這里的連通域標記就可以只對目標進行操作。當灰度值為1時,該點的左邊點a2和上邊的點a1,如果有一個為目標點,則為當前點標記和此點相同編號;如果兩個都是目標點,則選擇標號小的,為當前掃描點標記編號;如果都不是,則賦值新的標號。
再次檢測,當灰度值為1時,查看該點的左邊點a2和上邊的點a1,如果有一個或兩個為目標點,而比較當前點和另外兩點或一點標號大小,將標號大的像素都變為標號小的;如果標號一樣大,則繼續下個目標點的判斷。經過兩次標記,具有相同的標號就會組成一個連通域。
那么連通域去噪則是根據條紋圖像中條紋目標在整個圖像中屬于最大的連通域,所以保留最大連通域,刪除其余小的連通域。判斷連通域大小的依據是對比每個標號中含有像素的個數。
每年11月后,嘉興地區進入晚稻收割期,如太浦閘大流量供水,將在一定程度上抬高嘉北地區河網水位,雖然對嘉北地區水位抬高的影響比汛期小,但仍將影響部分圩區運行。
如圖3所示,其圖為連通域標記去噪的效果圖。

圖3 去噪
利用細化提取目標條紋的骨架,根據骨架計算法向,在法向上使用質心法求條紋中心點。
利用細化法提取目標骨架,其過程就是一層一層地腐蝕二值圖像的邊緣像素,直到獲得一條單像素的連通線[10]。腐蝕是消除圖像連通域邊界點的一種過程,其結果使圖像連通域的邊界向內部收縮,可以把小于結構元素的邊界點去除。一般概念的腐蝕運算數學表達式為:

式中,F為腐蝕后的圖像,A為待腐蝕圖像,B為用于腐蝕運算的結構元素。用B來腐蝕A得到的集合是B完全包括在A中時B的原點位置的集合。換句話說,結構元素B對原圖像A腐蝕所得到的圖像F是由B完全包含在A中時結構元素B的原點坐標集合所組成。不過在腐蝕邊界像素時必須保證目標的連通性,即不能改變原圖像的拓撲性。
確定法向的方法很多,如Hessian矩陣法和模板法等,但是這兩種缺點是運算量大,很難實現光條紋中心線的快速提取,難以滿足實時性要求高的應用場合。所以本文利用骨架點的切向確定法向。首先利用細化法提取激光條紋骨架,再根據每個骨架點求其切向。

圖4 法向提取
求骨架的切向是利用骨架點周圍的點擬合成直線,其直線方程為:y=ax+b,式中有兩個待定參數,a代表斜率,b代表截距。將待檢測的點周圍幾點作為觀測數據(xi,yi),i=1,2,3,…,N。其中 N 為點的個數。其擬合直線的方法是利用最小二乘法,用最小二乘法擬合直線,要使下式的值最小:

那么就要對上式的參數a和b分別求偏導得:


化簡得

解上述方程組便可求得直線參數a和b的最佳估計值:

至此,可得到檢測點的切線斜率a。設法向的直線方程:

提取圖像預處理后的條紋點集V(x,y)。在條紋點集 V(x,y)中提取符合骨架點(xi,yi)法向方程點集Ti。根據點集Ti利用質心法求出條紋中心的列坐標,其公式為:

其中,P 為點集 T 中的個數,(xt,yt)為中心點,即可得到精確的條紋中心。
本文算法主要步驟如下:1)對條紋圖像和原圖像進行減運算得出差值圖像,并將其轉化為灰度圖;2)通過連通域的方法對差值圖像去噪;3)使用細化法提取條紋骨架;4)根據骨架點的切向求法向;5)對符合法向上的點使用質心法求取條紋中心。
為了驗證本文算法的準確性、實時性和魯棒性。本文采用改進的極值法[12]和高斯擬合法與本文算法進行了比較和分析。如圖5(a)所示,此幅圖像是多形激光條紋圖像。并且目標表面反光比較厲害,所以周圍的光線對其影響較大,激光打在目標上發散的也比較厲害。對這幅噪聲較多且不規則的激光條紋圖像分別用這幾種算法提取激光條紋中心,其結果如圖5中(b)、(c)、(d)結果所示。從結果圖得出改進的極值法和高斯擬合法存在漏檢和誤檢的情況。

圖5 激光條紋圖處理結果圖
從上面實驗的對比可得出,本文算法在噪聲較多且不規則的激光條紋的中心提取上,比其他兩種算法有較好的效果。檢驗一個算法不僅要有好的效果,還要有好的實時性。下頁圖6是對不同大小圖像的幾種算法運算時間的比較,從圖中可以得出本文算法的運算時間較少,并且比較平緩。

圖6 算法時間比較
為驗證本文算法的精度,將其與極值法和高斯擬合法在誤差上進行實驗對比。激光條紋中心提取中的誤差主要來自于激光器光束的寬度和亮度分布、物體表面的材質和顏色造成的漫反射,以及周圍環境的光線等因素。針對這些問題,本文提出利用激光條紋的某一截面上的條紋點,計算該中心點的誤差,其誤差公式為:

其中,i為某一截面,σi為該截面的誤差,N為該截面上激光條紋點的個數,yj為該截面上條紋點的橫坐標,y0為該截面中心點的橫坐標。利用誤差公式計算極值法、高斯擬合法以及本文算法的誤差。利用上述的橫截面的誤差公式,估算法整幅圖像的誤差,公式為:

式中,S為激光條紋的截面數,其計算結果如表1所示。

表1 誤差分析
從上面的誤差計算結果可以得出,本文算法誤差要小于其他兩種算法,并且條紋越復雜其誤差也越大。
為了適用于多種工業場合中的結構光條紋中心精確提取,本文提出一種改進質心法的亞像素中心提取算法。通過分析與比較上述幾種條紋中心的算法,本文算法既有高斯擬合算法提取精度,又有極值法運算量小的優點。從實例分析中可以看出,本文算法具有魯棒性好、提取精度高、運算快以及適用性廣的特點。