江松,張坤,張華
(安徽科技學(xué)院 機(jī)械工程學(xué)院,安徽 鳳陽,233100)
汽車剎車片的摩擦系數(shù)在任何條件下,都必須保持穩(wěn)定。當(dāng)汽車剎車片表面產(chǎn)生裂紋時,它的摩擦系數(shù)就會降低,磨損率會加大[1]。同時,剎車片表面裂紋可能會使剎車片崩落,影響汽車的制動效果,給駕駛員和同行人員的人身安全和財(cái)產(chǎn)安全帶來隱患。為增強(qiáng)汽車安全系數(shù),減少因剎車片裂紋導(dǎo)致的安全事故,本文研究了基于圖像處理的剎車片裂紋有效識別提取的方法。
目前已經(jīng)存在大量對裂紋檢測的圖像處理算法,但是任何一個單一的算法都不能處理所有的圖像[2]。針對剎車片表面裂紋檢測需求,本文利用經(jīng)典的方向梯度直方圖(Histogram of Oriented Gradient, HOG)和局部二值模式(Local Binary Pattern,LBP)等算法對剎車片裂紋特征進(jìn)行提取,并使用支持向量機(jī)(Support Vector Machine, SVM)算法構(gòu)建剎車片表面裂紋識別模型。進(jìn)一步提出基于亞像素角點(diǎn)檢測方法對裂紋線進(jìn)行提取,使裂紋更直觀可見。
在對裂紋圖像進(jìn)行特征提取之前,利用圖像濾波算法先對圖像進(jìn)行濾波,將圖像中的細(xì)節(jié)特征信息保留且更明顯分離出來,抑制目標(biāo)圖像的自身噪聲和因拍攝和收集圖像時產(chǎn)生的噪聲。圖像濾波算法分為線性濾波和非線性濾波,對紋理圖像濾波時,非線性濾波有更好的濾波效果。由于裂紋在圖像中主要是它的邊緣信息,而雙邊濾波可以有效地保留邊緣信息、抑制噪聲達(dá)到平滑的效果。因此本文采用屬于非線性濾波的雙邊濾波(Bilateral Filters)算法[3-4]對裂紋圖像進(jìn)行濾波。
雙邊濾波采用基于高斯分布的加權(quán)平均的方法,把周邊像素亮度值的加權(quán)平均代表某個像素的強(qiáng)度,避免高斯濾波會導(dǎo)致的像素移位問題。雙邊濾波不僅考慮了空間域還考慮了像素范圍域,令空間域Gs和顏色項(xiàng)Gr的乘積作為濾波核系數(shù)。具體的濾波算法為:
(1)
(2)

采用雙邊濾波處理后的剎車片裂紋圖像效果如圖1(b)所示,與原圖像圖1(a)對比可以明顯看出,原圖像中的非裂紋元素得到了很好的去除。

圖1 圖像預(yù)處理效果 圖2 灰度圖像直方圖
分析并統(tǒng)計(jì)剎車片圖像濾波處理后的灰度直方圖(如圖2所示),可以發(fā)現(xiàn)其僅有單峰,并且裂紋灰度圖像背景區(qū)域像素主要分布于148到176之間。針對剎車片裂紋的這一特點(diǎn),本文應(yīng)用基于閾值的二值化圖像分割方法對裂紋圖像分割[5]。思路為:選定一個閾值,將待分割圖片中像素值大于閾值的像素點(diǎn)的像素值設(shè)置為255,小于閾值的像素點(diǎn)設(shè)置為0,得到僅有黑白色的二值圖像,具體算法如式(3)所示,其中z為圖像二值化設(shè)定的閾值。


(3)
將圖1(b)中雙邊濾波后的RGB圖像轉(zhuǎn)換為灰度圖像,再將灰度圖像轉(zhuǎn)換為二值圖像,本文轉(zhuǎn)換的最佳閾值為149,將大于149的像素點(diǎn)值設(shè)置為255,小于149的設(shè)置為0。分割示意圖如圖3所示,該方法能將圖像背景區(qū)域與裂紋目標(biāo)區(qū)域有效分割,并加強(qiáng)裂紋圖像特征。
從圖3可以看出經(jīng)二值圖像分割方法處理后,剎車片裂紋圖像的目標(biāo)裂紋和背景已經(jīng)被有效分割。將分割后的圖像分別使用HOG算法和LBP算法進(jìn)行裂紋特征提取。
1.3.1 HOG特征提取 給定如圖3所示裂紋目標(biāo)對象的圖像,設(shè)置一個檢測窗口。計(jì)算檢測窗口中每個像素的梯度大小和方向。將檢測窗口劃分成很
圖3圖像分割
多塊,將每一塊分成很多單元,為每個單元創(chuàng)建一個直方圖,在單元內(nèi),將梯度投影到單元的梯度方向,將所有單元格在塊上歸一化,將所有塊中的所有標(biāo)準(zhǔn)化直方圖收集到一個稱為HOG描述符的特征向量中[6-7]。
設(shè)置圖像檢測窗口的尺寸為64×64,窗口移動步長為(8,8),bin為9。剎車片裂紋圖像經(jīng)過濾波和圖像分割處理后,HOG可以提取出裂紋邊緣的結(jié)構(gòu)特征,描述裂紋的局部形狀,消除光照帶來的影響。通過OpenCV實(shí)時顯示矩陣MAT類的信息得到的裂紋特征如圖4所示:

(a:裂紋圖像特征,b:裂紋、無裂紋圖像特征)

圖5 LBP特征提取
1.3.2 LBP特征提取 LBP是一種廣泛應(yīng)用于描述局部紋理特征的算法,具有灰度不變性和旋轉(zhuǎn)不變性[8],可以有效提取物體表面紋理特征。基本LBP算法算子在3×3像素窗口的鄰域內(nèi),將窗口中心像素作為閾值與剩下8個像素作比較,大于中心像素的記為1,小于中心像素的記為0,將產(chǎn)生的八位二進(jìn)制數(shù)作為窗口中心像素的LBP 值,并用該值來描述紋理情況。對于一張剎車片裂紋圖像,相鄰像素之間的像素值間有數(shù)量關(guān)系,將中間點(diǎn)像素值與中間點(diǎn)相鄰像素值比較得到八位二進(jìn)制數(shù)的LBP值,這個LBP值就能很好地表示點(diǎn)和相鄰點(diǎn)像素之間的模式,可以得到裂紋圖像中的細(xì)節(jié)描述。通過LBP算法提取的裂紋特征如圖5所示:
支持向量機(jī)是一種有監(jiān)督機(jī)器學(xué)習(xí)方法,其思路是找到一個最優(yōu)超平面,使最優(yōu)超平面最近樣本的距離最大或最小,并且能保證該超平面分類的精度[9]。本文訓(xùn)練樣本為二分類,設(shè)二分類的SVM的訓(xùn)練樣本集為{(xi,yi)|i=1,2,3,…,n},xi∈Rn,其中xi,yi分別為輸入、輸出,樣本超平面為:
(w·xi)+b=0
(4)
利用Lagrange函數(shù)得到最優(yōu)超平面為:
(5)
進(jìn)一步計(jì)算,可得到最終的最優(yōu)分類函數(shù)為:
(6)
本文將利用SVM算法構(gòu)建識別模型,用HOG算法提取的裂紋特征向量和LBP算法提取的裂紋特征向量分別作為模型輸入變量。本實(shí)驗(yàn)共采集樣本總量260個,其中訓(xùn)練樣本為215個,剩余45個作為測試樣本用來驗(yàn)證模型的精度。基于不同特征的模型測試識別正確率如表1所示:

表1 基于不同特征的SVM模型的識別率
從表1可以看出,在不做任何圖像處理的情況下,SVM模型的識別正確率只有60%;基于HOG特征變量的SVM模型的識別正確率為95.56%,基于LBP特征變量的SVM模型的識別正確率最高,達(dá)到97.78%;基于LBP特征變量的模型比基于HOG特征變量的模型的識別效果更好。
利用訓(xùn)練好的識別模型檢測到圖像有裂紋后,進(jìn)一步對圖像裂紋線進(jìn)行提取。角點(diǎn)檢測算法以往主要用于三維場景重建、運(yùn)動估計(jì)、視覺跟蹤以及圖像配準(zhǔn)與圖像匹配等計(jì)算機(jī)視覺領(lǐng)域[10],并已取得良好的應(yīng)用效果。
亞像素角點(diǎn)檢測方法是基于原始角點(diǎn)檢測方法的改進(jìn)算法,具有更高的檢測精度。經(jīng)大量文獻(xiàn)調(diào)研,目前未發(fā)現(xiàn)亞像素角點(diǎn)檢測方法在汽車零件裂紋識別方面的應(yīng)用,本文將首次嘗試?yán)脕喯袼亟屈c(diǎn)檢測方法來提取裂紋角點(diǎn)信息。最后本文利用角點(diǎn)位置信息提出一種連接算法對裂紋線進(jìn)行提取,并在原圖上標(biāo)注出裂紋線。
如果圖像上一個點(diǎn)的兩個正交方向上都有明顯的導(dǎo)數(shù),則稱這個點(diǎn)是獨(dú)一無二的,并將該點(diǎn)稱為角點(diǎn)[11]。角點(diǎn)即兩條邊緣線的交點(diǎn),或局部鄰域內(nèi)有兩個不同邊界的方向。角點(diǎn)檢測的基本思路是在一個灰度圖像上,利用一個檢測窗口以確定的步長移動,窗口在任意方向移動時,移動前后產(chǎn)生明顯灰度值變化,則認(rèn)為窗口中存在角點(diǎn)。對識別為有裂紋的圖像,利用亞像素角點(diǎn)檢測方法可以得到剎車片裂紋特征角點(diǎn)的亞像素角點(diǎn)位置信息。
本文首先確定圖像強(qiáng)角點(diǎn),得到角點(diǎn)的初始坐標(biāo)位置信息,然后采用亞像素角點(diǎn)檢測得到亞像素級精度的位置,即精確的角點(diǎn)位置。檢測的角點(diǎn)如圖6所示。

圖6 角點(diǎn)檢測結(jié)果圖
從圖6可以看出,檢測出來的角點(diǎn)基本在裂紋線上,由于污漬、斑點(diǎn)等原因在裂紋線旁邊有極少數(shù)錯誤點(diǎn)也被檢測出,但總體檢測效果良好。經(jīng)過多次試驗(yàn)結(jié)果表明,亞像素角點(diǎn)檢測對裂紋角點(diǎn)位置信息的提取精度較高,結(jié)果可靠。
提取裂紋角點(diǎn)坐標(biāo)信息后,本文提出一種針對剎車片裂紋角點(diǎn)的連接算法,實(shí)現(xiàn)在原圖上標(biāo)注裂紋線。算法的主要思想是對所有角點(diǎn)進(jìn)行坐標(biāo)值排序,排序后將第一個坐標(biāo)點(diǎn)定義為起始點(diǎn),將起始點(diǎn)與距離起始點(diǎn)最近的角點(diǎn)進(jìn)行連接。當(dāng)連接完成后,將被連接點(diǎn)為起始點(diǎn)重復(fù)上述連接過程。當(dāng)所有的裂紋角點(diǎn)連接完成后,即可得到剎車片裂紋線。由于零件裂紋呈連續(xù)性,在連接過程中,對檢測出孤立的遠(yuǎn)距離點(diǎn)不進(jìn)行連接。主要實(shí)現(xiàn)步驟如下:
第一步:在角點(diǎn)數(shù)組中,對所有裂紋角點(diǎn)按角點(diǎn)橫坐標(biāo)從小到大排序,
當(dāng)橫坐標(biāo)相等時按縱坐標(biāo)從小到大排序。

圖7 裂紋線提取效果圖
第二步:排序后根據(jù)公式(7)計(jì)算第一個角點(diǎn)(x1,y1)到每一個角點(diǎn)(xn,yn)的距離d1、d2、d3、……、dn。
(7)
找到所有距離d的最小值dn,找到dn對應(yīng)角點(diǎn)在所有角點(diǎn)數(shù)組中的位置,即可找到距離角點(diǎn)(x1,y1)最近的坐標(biāo)點(diǎn)(xn,yn)。
第三步:將點(diǎn)(xn,yn)與角點(diǎn)(x1,y1)連接。手動設(shè)置閾值D,本文閾值D設(shè)置為30。當(dāng)距離dn大于閾值D時,第一點(diǎn)與第二點(diǎn)不進(jìn)行連接,以點(diǎn)(xn,yn)作為第一個點(diǎn)重復(fù)步驟二。
第四步:當(dāng)完成第二個點(diǎn)的連接后,刪除排序數(shù)組中的第一個點(diǎn),并以第二個點(diǎn)作為起始點(diǎn)重復(fù)步驟二。
第五步:所有裂紋角點(diǎn)被連接后結(jié)束算法。
該算法流程簡短,計(jì)算量小,擬合效果直觀、突出。連接后的裂紋線如圖7所示,從圖中可以看出,2.1節(jié)檢測出的錯誤角點(diǎn)未被連接,而裂紋上的角點(diǎn)基本上被連接。結(jié)果表明,該方法能正確標(biāo)注裂紋,使裂紋更加清晰
可見。
本文先利用雙邊濾波、圖像二值化分割對圖像預(yù)處理,然后分別利用HOG和LBP算法對裂紋特征提取,最后利用SVM算法構(gòu)建裂紋識別模型,對有、無裂紋圖像進(jìn)行二分類。基于SVM模型發(fā)現(xiàn)LBP算法提取的特征比HOG算法提取特征在裂紋識別方面更具優(yōu)勢,識別準(zhǔn)確率達(dá)97%以上。為了標(biāo)注裂紋,進(jìn)一步對識別為有裂紋的圖像提出使用亞像素角點(diǎn)檢測方法,能得到亞像素級精度裂紋坐標(biāo)信息,然后通過編寫算法將裂紋線高效、完整地?cái)M合在的原始裂紋圖像上,結(jié)果表明該算法擬合效果良好。當(dāng)然本文算法也有不足之處,例如零件點(diǎn)蝕、摩擦劃痕、零件磨損變色、污漬等均有可能降低裂紋識別和裂紋線擬合的精度,這將是今后研究的重點(diǎn)。