張楨鋮,周迪斌,朱江萍
(杭州師范大學(xué) 杭州國(guó)際服務(wù)工程學(xué)院,杭州 311121)
傳統(tǒng)工業(yè)上,軸承壓印結(jié)束之后的分類、包裝以及企業(yè)對(duì)于軸承信息的收錄都是依靠人工檢查與識(shí)別來(lái)完成.而機(jī)器視覺(jué)技術(shù)憑借其精度高,速度快,準(zhǔn)確率高的優(yōu)點(diǎn)已經(jīng)在許多行業(yè)產(chǎn)生了良好的效益.但是軸承壓印字符識(shí)別任然存在一些問(wèn)題難點(diǎn),首先是由于軸承是圓形結(jié)構(gòu),字符并不是橫向分布,而是落在了環(huán)形帶上,這就造成了后續(xù)分割與識(shí)別的困難;其次是一些字符識(shí)別耗時(shí)過(guò)多,導(dǎo)致檢測(cè)效率降低.
文獻(xiàn)[1]使用改進(jìn)的圓檢測(cè)算法定位字符區(qū)域,將坐標(biāo)系轉(zhuǎn)換極坐標(biāo)進(jìn)行字符分割與SVM 字符識(shí)別,該方法在極坐標(biāo)下進(jìn)行計(jì)算操作,使得計(jì)算更加方便,精度有所提高[1].文獻(xiàn)[2]對(duì)采集到的圖像首先利用Hough變換定位軸承圓心,對(duì)于軸承上的字符區(qū)域利用仿射變換進(jìn)行矯正,隨后進(jìn)行輪廓提取并使用SVM 進(jìn)行字符識(shí)別,采用仿射變換矯正方法不僅提高了算法整體的魯棒性,而且極大程度的提高了字符識(shí)別準(zhǔn)確率[2].文獻(xiàn)[3]使用RBF 核的SVM 進(jìn)行研究,通過(guò)使用雙線性搜索與網(wǎng)格搜索方法的優(yōu)點(diǎn)綜合來(lái)進(jìn)行參數(shù)選擇,不僅搜索效率有所增加,識(shí)別率也有較大提高[3].文獻(xiàn)[4]提出了一種機(jī)器視覺(jué)的軸承工件號(hào)識(shí)別系統(tǒng),對(duì)采集到的黑白圖像進(jìn)行字符定位分割,并采用人工網(wǎng)絡(luò)與支持向量機(jī)的算法對(duì)軸承工件號(hào)進(jìn)行了有效識(shí)別,實(shí)時(shí)性、魯棒性、準(zhǔn)確性都滿足了系統(tǒng)要求[4].
本文使用了最小二乘法對(duì)ROI 進(jìn)行提取,具有定位準(zhǔn)確與耗時(shí)少的優(yōu)點(diǎn),對(duì)字符區(qū)域使用1/8 圓展開,展開速度開,圖像展開效果好,大大增強(qiáng)了算法魯棒性,最后使用SVM 算法來(lái)對(duì)字符進(jìn)行識(shí)別,并通過(guò)大量實(shí)驗(yàn)驗(yàn)證了該算法的可靠性[5].
軸承壓印字符是在模具作用下使軸承的部分表面厚度發(fā)生變化,從而在軸承表面形成字符的工藝,此字符具有永久性和防偽功能.通過(guò)壓印形成的凹陷區(qū)域與背景區(qū)域具有一定的高度差,所以在平行光源的照射下就可以形成字符區(qū)域[6].
由于軸承壓印字符具有一定的深度,通過(guò)環(huán)形光源對(duì)軸承表面的照射,根據(jù)表面反光程度的差異可以清晰的獲得完整的字符輪廓[7].現(xiàn)場(chǎng)采集到的圖像如圖1 所示.
由于在拍攝過(guò)程中會(huì)有材料反射和微小噪音的影響,所以現(xiàn)場(chǎng)采集得到的原始圖像都會(huì)包含有不同程度的噪聲干擾,必須對(duì)原始圖像進(jìn)行一定的圖像預(yù)處理,這樣可以很大程度的改善圖像中的信息[8].通過(guò)抑制這些噪聲,有利于我們?cè)趯?duì)圖像進(jìn)行處理和分析的時(shí)候可以更便于得到有用信息.
首先對(duì)采集到的軸承圖像運(yùn)用高斯濾波進(jìn)行降噪處理;然后使用直方圖二值方法來(lái)對(duì)圖像進(jìn)行二值化處理,之后使用開運(yùn)算再對(duì)二值化圖像進(jìn)行進(jìn)一步的處理,消除圖像中的微小噪聲干擾,進(jìn)而得到清晰的前景圖像.
圖1 軸承圖像
待識(shí)別字符所在區(qū)域位于軸承的一個(gè)環(huán)上,圓心位置的確定以及半徑大小計(jì)算的準(zhǔn)確程度,極大的影響了字符識(shí)別率.圓心定位最常用的兩種方法就是Hough 變換與最小二乘法.
噪聲點(diǎn)對(duì)于Hough 變換的影響略小,具有較強(qiáng)的魯棒性,在對(duì)缺陷較大的圓進(jìn)行定位時(shí),需要提供圖像中圓的半徑長(zhǎng)度等參數(shù)設(shè)置[9].圓心位置是通過(guò)投票來(lái)得到,但是大量的時(shí)間與內(nèi)存的消耗也是在投票過(guò)程中消耗的,而且需要對(duì)圓的半徑進(jìn)行一定的約束,這樣不僅可以提高精度,也會(huì)大大降低運(yùn)算量.同時(shí)由于之前對(duì)原始圖像進(jìn)行了一系列的預(yù)處理,所以待查找圓并沒(méi)有太多缺陷,因此使用最小二乘法擬合圓更適合本次實(shí)驗(yàn).
這里使用最小二乘法首先假設(shè)圓的方程為x2+y2+ax+by+c=0 ,然后假設(shè)有一系列點(diǎn)(xi,yi)是近似的落在圖像中的一個(gè)圓上,i∈(1,2,···,n).設(shè)該圓的圓心為(x0,y0),半徑為r.d2=(xi-x0)2+(yi-y0)2這是圓上的點(diǎn)到圓心距離的平方和,這里將其與半徑平方的差作為目標(biāo)誤差為了使目標(biāo)誤差的平方和最小,需要經(jīng)過(guò)計(jì)算可得:
其中,
據(jù)此就可以將圖像中的環(huán)形區(qū)域分離出來(lái).本次實(shí)驗(yàn)上采用C++實(shí)現(xiàn),在對(duì)外圓輪廓圓心進(jìn)行求解時(shí),Hough 變換一次求解計(jì)算所用時(shí)間約為140 ms,而最小二乘法所用時(shí)間則不到10 ms,很明顯最小二乘法更適用.
工業(yè)相機(jī)拍攝的軸承圖像經(jīng)過(guò)預(yù)處理后得到圖像,包括字符區(qū)域與非字符區(qū)域.由于圖像中包含大量無(wú)效信息,所以要篩選出要處理的對(duì)象,首先需要將字符區(qū)域分離與提取.
字符所在區(qū)域是由兩個(gè)同心圓環(huán)所構(gòu)成的環(huán)形區(qū)域,通過(guò)之前擬合圓的方法擬合出軸承的圓心及內(nèi)、外圈的半徑,擬合結(jié)果如圖2 所示,由此便能分離出圖像中的字符區(qū)域.
可以觀察到,在圖像的環(huán)形字符區(qū)域存在一些干擾因素,可以通過(guò)調(diào)整圖像的亮度與對(duì)比度來(lái)消除這些因素的干擾.通過(guò)對(duì)圖像像素進(jìn)行點(diǎn)操作變換,可以使得圖像的亮度與對(duì)比度有一定的變化.圖像的亮度與對(duì)比度的調(diào)節(jié)主要基于下面的公式:
將原始圖像設(shè)為f(i,j),經(jīng)過(guò)調(diào)整之后的圖像設(shè)為h(i,j).這個(gè)公式是對(duì)像素進(jìn)行了一次線性變換,其中設(shè)置不同的α和β的值,就會(huì)對(duì)圖像產(chǎn)生不同的變換效果.當(dāng)圖像f(i,j)×α的值比1 大的時(shí)候,圖像f(i,j)中像素值之間的差異就會(huì)變大,因此就會(huì)導(dǎo)致對(duì)比度的增強(qiáng),反之圖像對(duì)比度將會(huì)減小.β值的變化會(huì)對(duì)圖像亮度進(jìn)行簡(jiǎn)單調(diào)整.
當(dāng)局部光照亮度有區(qū)別時(shí),假定光源與材料有一定的角度偏差,或其它各類因素導(dǎo)致材料亮度差異較大.可以考慮軸承軸向投影時(shí),每個(gè)投影區(qū)域的亮度依據(jù)環(huán)境的亮度變化規(guī)律調(diào)節(jié)亮度.圖像處理前后情況如圖3 和圖4 所示.
圖2 ROI 區(qū)域
圖3 圖像處理前
在后續(xù)的字符識(shí)別過(guò)程中,需要將單個(gè)字符進(jìn)行提取與識(shí)別,一些傳統(tǒng)的視覺(jué)算法對(duì)于環(huán)形軸承字符識(shí)別難以應(yīng)用.因此為了使字符識(shí)別操作更順利的進(jìn)行,我們?cè)谶@里將環(huán)形字符帶轉(zhuǎn)換為更容易進(jìn)行識(shí)別操作的矩形字符帶.如圖5 所示.
圖4 圖像處理后
圖5 圓展開示意圖
我們使用的是1/8 圓掃描方法,將圓等分為8 份,之后圓上的其它區(qū)域由這1/8 個(gè)圓經(jīng)過(guò)簡(jiǎn)單的反射變換之后就可以得到如圖6 所示.
圖6 圓的對(duì)稱圖
但是若掃描的起始點(diǎn)選取不恰當(dāng),位于字符段之間時(shí),會(huì)導(dǎo)致同一字符段被分開.為了避免該情況發(fā)生,從垂直方向90°開始開始順時(shí)針掃描,當(dāng)發(fā)現(xiàn)一塊空白區(qū)域,并且該空白區(qū)域所占角度大于設(shè)定閾值時(shí),則將該空白區(qū)域的終點(diǎn)定為掃描起點(diǎn).我們將這個(gè)角度的閾值設(shè)為20°.如圖7,首先假設(shè)圓上一點(diǎn)為(x,y),那么其他7 個(gè)八分圓上其他各點(diǎn)坐標(biāo)為(-x,y),(-x,-y),(x,-y),(-y,x),(y,-x),(-y,-x),(y,x),因此我們只需要對(duì)1 個(gè)八分圓的轉(zhuǎn)換方式進(jìn)行研究.假設(shè)從(0,r)開始,順時(shí)針進(jìn)行搜索至(r/2,r/2),當(dāng)發(fā)現(xiàn)第一個(gè)最接近圓弧的點(diǎn)時(shí),令其為P(xp,yp).然后對(duì)下一個(gè)像素進(jìn)行尋找,選擇P點(diǎn)正右邊的P1(xp+1,yp+1)或者選擇其右下方的P2(xp+1,yp+1),如圖7 所示.
圖7 當(dāng)前像素與下一候選像素示意圖
在這里構(gòu)造了下面這個(gè)函數(shù):
接下來(lái)對(duì)圖像上的點(diǎn)進(jìn)行討論,這些點(diǎn)與圓有3 種相對(duì)位置:
通過(guò)這樣的搜索方式,整個(gè)圓上的所有像素點(diǎn)都被快速搜索到.然后將半徑為r的圓周長(zhǎng)設(shè)置為展開矩形的長(zhǎng),將圓環(huán)的寬設(shè)置為矩形的寬.由于是將圓環(huán)展開為矩形,除了半徑為r的圓,其他的圓必然需要對(duì)像素進(jìn)行一定的插入或抽取,按照我們之前對(duì)圓搜索的方法,每當(dāng)待展開圓半徑每增加1 時(shí),待檢測(cè)圓上的像素有兩種情景,不增加或者會(huì)增加8 個(gè);半徑減少時(shí)同理.由于知道了圓上像素個(gè)數(shù)的變化,這樣就可以在對(duì)圓環(huán)展開時(shí)均勻的插入或抽出某些像素點(diǎn).展開結(jié)果如圖8 所示,字符帶中的字符清晰可辯認(rèn),完全達(dá)到了算法識(shí)別要求.
圖8 字符帶展開圖
為了識(shí)別出軸承上的單個(gè)字符,因此需要將每個(gè)字符切分出來(lái).對(duì)展開圖像進(jìn)行逐列掃描,根據(jù)黑色元素的連續(xù)性對(duì)字符位置進(jìn)行分割,此次字符分割結(jié)束.然后再繼續(xù)向后進(jìn)行掃描,在圖像最右端前按照上述方法一直掃描到底.通過(guò)上述掃描方法就可以精確的得到每個(gè)字符的寬度范圍,這樣就可以從軸承展開圖像中分割出每個(gè)單個(gè)字符.
在對(duì)字符進(jìn)行歸一化操作后,字符識(shí)別的標(biāo)準(zhǔn)性與準(zhǔn)確性都會(huì)得到很大的提高[10].具體實(shí)現(xiàn)方法如下:首先需要計(jì)算出軸承展開字符帶中各個(gè)字符的高度,通過(guò)計(jì)算這個(gè)高度與設(shè)定高度數(shù)值之比,即為變換系數(shù),由此就可求出操作后的寬度[11].這里我們假設(shè)原始圖像大小為w×h,在對(duì)圖像進(jìn)行歸一化操作之后圖像大小為W×H,在原始圖像坐標(biāo)為(x,y)的像素點(diǎn)進(jìn)行歸一化之后所對(duì)應(yīng)的坐標(biāo)為(X,Y):
通過(guò)實(shí)驗(yàn)表明,將二值圖像的單個(gè)字符大小歸一化為寬度12、高度18[12].在通過(guò)實(shí)驗(yàn)得到這個(gè)寬度與高度之后,我們將新圖像里面的點(diǎn)映射至原始圖像中,結(jié)果如圖9 所示.
圖9 單個(gè)字符切分
在對(duì)樣本圖像進(jìn)行處理后,然后對(duì)字符進(jìn)行識(shí)別操作,本文分別采用了模板匹配識(shí)別法、神經(jīng)網(wǎng)絡(luò)識(shí)別法與支持向量機(jī)識(shí)別方法來(lái)進(jìn)行實(shí)驗(yàn),通過(guò)對(duì)比選出更合適的識(shí)別方法.
使用模板匹配法來(lái)計(jì)算待識(shí)別目標(biāo)與原型之間相似性的差異,我們將待識(shí)別目標(biāo)圖像記為T,其圖像大小為X×Y,然后將已經(jīng)準(zhǔn)備好的圖像模板記為S,其圖像大小為M×N(M<X,N<Y).使圖像模板S在待識(shí)別目標(biāo)T上進(jìn)行移動(dòng),相似度最大的即為識(shí)別結(jié)果[13].
使用BP 神經(jīng)網(wǎng)絡(luò)來(lái)對(duì)字符進(jìn)行識(shí)別操作[14].我們選取26 個(gè)字母、10 個(gè)數(shù)字0~9 和“-”作為待識(shí)別目標(biāo),隨機(jī)選取200 個(gè)圖像進(jìn)行訓(xùn)練,另外取100 個(gè)圖像作為識(shí)別樣本[15].本次實(shí)驗(yàn)采用的是三層神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),有25 個(gè)輸入,隱含層取50 個(gè)神經(jīng)元,輸出為37 個(gè),將最大輸出端對(duì)應(yīng)的字符作為識(shí)別結(jié)果.
使用SVM 算法進(jìn)行字符識(shí)別,使用LIBSVM 來(lái)實(shí)現(xiàn)算法[16].之前的圖像處理操作將字符大小歸一化為12×18,在進(jìn)行適當(dāng)降維后,SVM 的輸入為30 維,選用RBF 為高斯核函數(shù),之后將圖片素材特征化,將特征文件輸入即可得到模型文件[17].在模型經(jīng)過(guò)測(cè)試集測(cè)試后,將圖像載入模型即可得到識(shí)別結(jié)果.得到的最優(yōu)核函數(shù)參數(shù)為0.0526,懲罰因子為56.
本次實(shí)驗(yàn)共采集軸承圖片300 張,對(duì)于神經(jīng)網(wǎng)絡(luò)與SVM 都是隨機(jī)選取200 張作為訓(xùn)練樣本,剩余100 張作為測(cè)試圖片,模板匹配則隨機(jī)選取100 張進(jìn)行測(cè)試.在Inter(R)Core(TM)i7-4790 CPU,4 GB 內(nèi)存的計(jì)算機(jī)上進(jìn)行實(shí)驗(yàn),在VC2015 上進(jìn)行編程,算法實(shí)現(xiàn)上使用C++.
首先在圓心定位檢測(cè)中,對(duì)Hough 變換與最小二乘法進(jìn)行對(duì)比,統(tǒng)計(jì)兩種算法的正確率與定位速度,測(cè)試結(jié)果如表1 所示.
表1 圓心定位檢測(cè)結(jié)果
表1 結(jié)果顯示,兩種算法都具有較高的定位準(zhǔn)確率,但是在消耗時(shí)間上,最小二乘法明顯快于Hough變換.
然后對(duì)字符識(shí)別的準(zhǔn)確率與消耗時(shí)間進(jìn)行測(cè)試.對(duì)模板匹配,神經(jīng)網(wǎng)絡(luò)和SVM 3 種識(shí)別方法進(jìn)行對(duì)比,結(jié) 果如表2 所示.
表2 字符識(shí)別檢測(cè)結(jié)果
表2 結(jié)果表明:模板匹配雖然準(zhǔn)確率滿足實(shí)驗(yàn)要求,但是其耗時(shí)過(guò)長(zhǎng);神經(jīng)網(wǎng)絡(luò)在識(shí)別時(shí)間上能滿足要求,但是由于樣本有限導(dǎo)致識(shí)別率偏低;SVM 算法不僅識(shí)別速度快而且在有限的樣本訓(xùn)練條件下,具有良好的識(shí)別準(zhǔn)確率.
對(duì)于軸承壓印字符的識(shí)別技術(shù),使用高斯濾波可以有效消除圖像噪聲;采用最小二乘法對(duì)圓心的定位及半徑的查找速度快,精度高;1/8 圓掃描法使環(huán)帶展開后的字符清晰可辯認(rèn);最后利用SVM 對(duì)字符進(jìn)行識(shí)別.實(shí)驗(yàn)表明:該算法對(duì)字符識(shí)別準(zhǔn)確率達(dá)98%以上,識(shí)別速度也可滿足工業(yè)需求,可實(shí)時(shí)的實(shí)現(xiàn)軸承表面壓印字符的識(shí)別.在字符受到污染的情況下,識(shí)別準(zhǔn)確率大大降低,接下來(lái)的研究工作就是設(shè)計(jì)魯棒性更強(qiáng)的算法,可以最大程度的消除現(xiàn)場(chǎng)污染的影響.此外隨著深度學(xué)習(xí)的不斷發(fā)展,更加智能化的檢測(cè)方法是值得不斷去深入研究的.