尤其澤, 張春富, 仇金桃
(1 江蘇科技大學(xué) 電子信息學(xué)院, 江蘇 鎮(zhèn)江212000; 2 鹽城工學(xué)院 電氣工程學(xué)院, 江蘇 鹽城224000)
激光是20 世紀(jì)以來繼核能、電腦、半導(dǎo)體之后,人類的又一重大發(fā)明,其具有高度的指向性、單色性、相干性、聚焦性及能量集中性的特點[1-3],這使得激光在跟蹤系統(tǒng)的設(shè)計方面具有巨大的優(yōu)勢。 激光跟蹤系統(tǒng)的基本原理就是通過激光光斑中心的移動,計算出定位對象的位置變化,從而達(dá)到對目標(biāo)進(jìn)行非接觸式跟蹤的目的[4-5]。 而光斑邊緣檢測的正確與否則是確定光斑中心的重要因素,具有重大的實際價值[6-7]。 張紹堂[8]等對激光光斑進(jìn)行閾值分割,使用多項式差值算法檢測光斑中心,但是對光斑形狀、能量分布要求較高;陳和[9]采用高斯擬合-局部重心法,受環(huán)境影響較小但計算量較大;郭玉靜[10]提出了一種基于亮度閾值的激光光斑中心定位算法,計算量小但精度較低。
本文設(shè)計的光斑中心檢測算法:首先對圖像進(jìn)行預(yù)處理,放大高低頻信息,避免邊緣模糊化;引入Kirsch邊緣檢測模板,有效降低邊緣的漏檢率及錯檢率;加入形態(tài)學(xué)處理法,去除光斑內(nèi)部的復(fù)雜背景,保留光斑的準(zhǔn)確邊緣。 最終對光斑邊緣進(jìn)行最小二乘橢圓擬合得到光斑中心坐標(biāo)。 實驗表明,本文算法在邊緣檢測及中心提取的各項指標(biāo)上具有更好的表現(xiàn)。
Canny 算子是John.F.Canny 于1986 年提出的一種多級邊緣檢測算法,被廣泛應(yīng)用在圖像邊緣檢測領(lǐng)域,其主要通過以下5 個步驟實現(xiàn)對圖像的邊緣檢測:
步驟1應(yīng)用高斯濾波平滑圖像。 Canny 算子采用高斯濾波器,利用其中的1 階導(dǎo)數(shù)按行和列對原始圖像進(jìn)行卷積降噪,從而得到平滑圖像。
其中σ 為調(diào)節(jié)圖像平滑程度的高斯函數(shù)標(biāo)準(zhǔn)差;f(x,y) 為原始圖像;I(x,y) 為高斯濾波之后的圖像。
步驟2計算梯度方向及幅值。 Canny 算子從水平和垂直兩個方向上采用2×2 的模板,通過一階偏導(dǎo)的有限差分計算出平滑后圖像的梯度幅值和方向。
其中:G(x,y) 和θ(x,y) 分別為平滑圖像I(x,y) 的梯度幅值和梯度方向。
步驟3應(yīng)用非極大值抑制。 在梯度計算之后,圖像提取出的邊緣仍較為模糊,需要對其進(jìn)行“減薄”處理,通過插值比較,去除一些非邊緣像素,保留的像素點作為邊緣的預(yù)選對象。
步驟4應(yīng)用雙閾值檢測。 在經(jīng)過非極大值抑制之后,仍然有較多噪聲及虛假邊緣被判定為真實邊緣,需要對其進(jìn)一步處理。 通常使用高低兩個閾值。 如果邊緣像素點梯度值大于高閥值,則被認(rèn)為是強(qiáng)邊緣點,判定為真實邊緣。 如果邊緣梯度值在高低閾值的區(qū)間內(nèi),則將其標(biāo)記為弱邊緣點,小于低閥值的點則直接被抑制。
步驟5滯后邊界跟蹤。 通常認(rèn)為真實邊緣引起的弱邊緣點和強(qiáng)邊緣點是連通的,而由噪聲引起的弱邊緣點則不會。 因此,若某一弱邊緣點與唯一強(qiáng)邊緣點連接,則該點被判定為真實邊緣點。
傳統(tǒng)的Canny 算子使用高斯濾波對原始圖像進(jìn)行降噪,但由于高斯濾波在邊緣處的變化是線性的,導(dǎo)致其呈現(xiàn)出漸變的形態(tài),容易造成圖像邊緣模糊且丟失大量的細(xì)節(jié)信息。 為了更加精準(zhǔn)的提取激光光斑在粗糙物體表面的圖像邊緣,本文選用保邊效果更好的雙邊濾波。
雙邊濾波是一種非線性的濾波方法,是結(jié)合圖像空間鄰近度和像素相似度的一種折中處理,雙邊濾波的權(quán)重不僅考慮了像素的歐氏距離,還考慮了像素范圍域中的輻射差異。 在計算中心像素時同時考慮這兩個權(quán)重,從而保持了邊緣的信息。 在空間范圍內(nèi)對原始圖像進(jìn)行低通濾波可得到:
Wr(i,j) 為灰度閾權(quán)值, 將空間鄰近度與像素值相似度相結(jié)合進(jìn)行濾波,得到雙邊濾波表達(dá)式為:
傳統(tǒng)的Canny 算子在計算圖像梯度幅值和方向的過程中,使用2×2 大小的模板,僅對圖像的水平和垂直方向做出了計算,這種計算方式受噪聲的干擾較大且會漏檢圖像中的部分邊緣點,出現(xiàn)邊緣斷裂的現(xiàn)象。 本文在這一基礎(chǔ)上使用了Kirsch 邊緣檢測算子,其是由8 個3×3 窗口模板組成,每個模板分別代表一個特定的檢測方向,可以多方向地檢測圖像邊緣,避免檢測結(jié)果的邊緣間斷。 在實驗過程中取得了較好的效果,其模板如式(9)所示:
假設(shè)圖像中某一點P(i,j)及其8 鄰域的灰度值如圖1 所示,ak為經(jīng)過Kirsch 算子模板計算后的邊緣幅值,則a1為:
同理可計算出其它7 個方向上的邊緣幅值。計算后P(i,j)的邊緣幅值為E =max{ak}(k =1,2,…,8),相對應(yīng)的邊緣方向D(i,j)= {K |ak為最大值}。
圖1 某點8 鄰域灰度值Fig.1 The gray value of a neighborhood of 8 points
因激光光斑處于未飽和狀態(tài),光斑內(nèi)部的背景邊緣較為明顯,通過圖像形態(tài)學(xué)處理可以去除光斑內(nèi)部的背景,僅保留光斑的邊緣信息。
對于一個二值圖像,其前景為1,背景為0,給其相連的前景部分標(biāo)記為同一標(biāo)簽,不同的連通域標(biāo)記為不同的標(biāo)簽。
(1)從圖片的左上角遍歷整個圖像,給每個前景像素點賦上標(biāo)簽。 若像素點為背景點則直接跳過;若某一像素點的上面和左邊都賦予同一標(biāo)簽,則這一像素點的標(biāo)簽與之相同;對于一個像素,如果其上面和左邊都有了標(biāo)簽,且兩個標(biāo)簽沖突了,那么就把該像素標(biāo)記為較小的那個標(biāo)簽,同時記住較大的標(biāo)簽隸屬于較小的標(biāo)簽。
(2)依然從左上角點開始遍歷,每遍歷一個標(biāo)簽,都要檢查該像素是否具有繼承關(guān)系。 若存在繼承關(guān)系,則將之合并為同一標(biāo)簽。 如圖2 所示。
圖2 連通域的標(biāo)記Fig.2 Labeling of connected domains
(3)通過各連通域的像素點的個數(shù)選出最大的連通域,將其它連通域作為背景部分刪除。
最小二乘法被廣泛應(yīng)用在擬合問題,其原理是使得測量擬合溫差的平方和最小化。 最小二乘橢圓擬合主要分為代數(shù)法和幾何法。
幾何法根據(jù)給定的擬合方程判斷目標(biāo)的幾何結(jié)構(gòu),得到約束條件。 其計算過程是非線性的,需要在計算過程中多次迭代,若給定的初值不當(dāng),會導(dǎo)致計算結(jié)果出現(xiàn)較大誤差,甚至無法計算出模型參數(shù)。代數(shù)法則通過代數(shù)距離的平方和最小來確定方程參數(shù),計算速度較快。 因此,本文選用代數(shù)法來進(jìn)行橢圓擬合。
設(shè)待擬合橢圓在平面坐標(biāo)系中的方程為:
其中,f(x,y) 代表像素點的坐標(biāo),a、b、c、d、e、f 為擬合橢圓的系數(shù)。 由最小二乘原理可得目標(biāo)函數(shù)為:
根據(jù)極值原理,為使f(a,b,c,d,e,f) 取得最小值,只需:
根據(jù)上式所求得的橢圓參數(shù),可得橢圓中心坐標(biāo)(x1,y1)、長半軸A、短半軸B 以及橢圓的傾斜角θ:
激光光斑邊緣檢測的準(zhǔn)確性對后續(xù)光斑中心定位工作起著重要作用,準(zhǔn)確的邊緣檢測可以減少后續(xù)過程的工作量。 復(fù)雜背景下的激光光斑中心檢測步驟如圖3 所示。
圖3 激光光斑中心檢測步驟圖Fig.3 Laser spot center detection steps
本實驗在MATLAB2016a 平臺上進(jìn)行,將紅色點狀激光照射在凹凸不平的復(fù)雜物體表面,選取任意一幅激光圖像。 利用本文改進(jìn)的Canny 算法進(jìn)行光斑邊緣提取,并將之與傳統(tǒng)的一些邊緣提取算法進(jìn)行比較。
圖4 顯示的是激光光斑圖像經(jīng)過預(yù)處理之后的對比圖,由于激光處于未飽和狀態(tài),光暈明顯,導(dǎo)致低灰度像素點較多,邊緣效果差。 傳統(tǒng)的高斯濾波在濾除噪聲的同時會導(dǎo)致邊緣模糊化,造成光斑圖像的高頻信息丟失,如圖4(b)所示。 本文所采用的雙邊濾波算法則可以在濾波過程中較好的保留邊緣的梯度,凸顯了圖像邊緣的高低頻信息。 為了更加直觀的顯示出原始圖像在2 種濾波算法后的變化,分別繪制了原始圖像、高斯濾波后圖像及雙邊濾波后的灰度直方圖,紅框內(nèi)為雙邊濾波對高低頻信息的凸顯。 可以看出本文方法可以更有效地避免細(xì)節(jié)信息的丟失。 圖5 中的橫坐標(biāo)為像素點的灰度值,縱坐標(biāo)為像素點的個數(shù)。
圖6 為經(jīng)過圖像預(yù)處理之后的激光光斑邊緣檢測結(jié)果。 圖6(a)可以看出,傳統(tǒng)Canny 算子對于光斑內(nèi)部的背景邊緣過于敏感,在光斑的右上角產(chǎn)生了明顯的誤判;圖6(b)為傳統(tǒng)Sobel 算子,該算子對圖像進(jìn)行了加權(quán)平滑處理,降低了噪聲的影響,但是邊緣檢測的過程中容易出現(xiàn)漏檢及錯檢,造成光斑邊緣的斷裂。 Prewitt 算子通過對圖像上的每個像素點的8 方向領(lǐng)域的灰度加權(quán)差之和進(jìn)行邊緣檢測,但因其采用的灰度局部平均,導(dǎo)致檢測結(jié)果出現(xiàn)了較多的偽邊緣,邊緣檢測精度較低;圖6(d)Roberts 算子的結(jié)果最不理想,因為該算子利用局部差分來確定邊緣,并不具備抑制噪聲的能力,難以去除激光光斑的衍射光暈。 圖6(e)為本文改進(jìn)算法結(jié)果,可以看出本文算法的抗噪性更好,邊緣提取結(jié)果更為平滑,邊緣連接性更好,未出現(xiàn)斷裂現(xiàn)象且邊緣定位的準(zhǔn)確性更高。
圖4 預(yù)處理對比圖Fig.4 Comparison of preprocessing
圖5 灰度直方圖Fig.5 Gray-scale histogram
圖6 光斑邊緣對比圖Fig.6 Contrast of light spot edges
針對圖像邊緣檢測算子的檢測結(jié)果,文獻(xiàn)[11]提出了一種客觀的評估方法,即計算邊緣像素點的個數(shù)(A)、4-連通成分?jǐn)?shù)(B)、8——連通成分?jǐn)?shù)(C)及三者之間的比值,并對這些參數(shù)進(jìn)行比較和評估。 將圖6 中本文改進(jìn)算法及傳統(tǒng)Canny 算子、傳統(tǒng)Sobel 算子進(jìn)行數(shù)據(jù)統(tǒng)計,得到結(jié)果見表1。
表1 邊緣檢測算法評估表Tab.1 Evaluation of edge detection algorithm
表中,C/A 的值代表著圖像邊緣的連續(xù)性,C/B的值代表圖像邊緣單像素占比,這2 組比值越小,則代表邊緣檢測算法的效果越好。 由上表及圖6 可知,傳統(tǒng)算法在復(fù)雜背景下檢測出較多的邊緣點,產(chǎn)生了較多的虛假邊緣,且C/A、C/B 的值明顯大于本文改進(jìn)算法,因此可以得出結(jié)論,本文改進(jìn)算法在邊緣檢測的單一性、完整性及連續(xù)性上具有更好的檢測效果。
為了評估本文改進(jìn)算法對于激光光斑中心檢測的準(zhǔn)確性,在周圍環(huán)境保持不變的情況快速采集了20 幅光斑圖像。 因激光器處于連續(xù)工作狀態(tài),可以在一段時間內(nèi)保持穩(wěn)定,理論上光斑中心的位置未發(fā)生改變。 圖7 為利用本文改進(jìn)算法、Canny 邊緣檢測算子、Sobel 邊緣檢測算子處理后得到的光斑中心坐標(biāo)。
圖7 光斑中心檢測結(jié)果Fig.7 Spot center detection results
傳統(tǒng)Sobel 算子在左下凹坑處邊緣檢測效果較差,產(chǎn)生了較多的錯誤邊緣點,使得計算出的中心點向左下偏移較多。 Canny 算子因內(nèi)部背景邊緣影響,結(jié)果波動也較為明顯。 利用樣本標(biāo)準(zhǔn)差公式計算得到中心點結(jié)果的標(biāo)準(zhǔn)差,見表2,可以發(fā)現(xiàn),本文改進(jìn)算法得到的數(shù)據(jù)結(jié)果更加穩(wěn)定,效果較好。
表2 中心點坐標(biāo)標(biāo)準(zhǔn)差Tab.2 Coordinate standard deviation of center point
本文從復(fù)雜背景下的激光光斑中心檢測的角度出發(fā),獲取激光光斑邊緣,通過最小二乘法對邊緣進(jìn)行擬合得到光斑中心。 針對傳統(tǒng)Canny 算子存在的缺陷,提出一種Canny 算子的改進(jìn)算法。 使用雙邊濾波代替高斯濾波,增強(qiáng)去噪過程中的保邊能力;引入Kirsch 邊緣檢測模板,增加至8 個檢測方向,降低了光斑邊緣錯檢漏檢的概率;最終加入圖像形態(tài)學(xué)處理,用以去除光斑內(nèi)部的背景噪聲,僅保留有效光斑邊緣。 結(jié)果表明本文改進(jìn)算法在邊緣檢測的連續(xù)性、完整性及單一性上明顯優(yōu)于傳統(tǒng)算法,通過本文改進(jìn)算法得到計算出的光斑中心坐標(biāo)穩(wěn)定性大幅提升,為后續(xù)的激光跟蹤系統(tǒng)研究提供了數(shù)據(jù)基礎(chǔ)。