閆曉燊,高 強(qiáng),朱思萌,奚學(xué)程,趙萬生
上海交通大學(xué) 機(jī)械與動力工程學(xué)院 機(jī)械系統(tǒng)與振動國家重點(diǎn)實(shí)驗(yàn)室,上海200240
壓印序列號對產(chǎn)品質(zhì)量管控、零件溯源等具有重要意義。序列號識別過程可以劃分為圖像預(yù)處理、字符分割和字符識別三部分。字符分割效果對字符識別準(zhǔn)確率有較大影響[1]。
在字符分割方面,許多學(xué)者進(jìn)行了相關(guān)研究:趙永猛等人[2]針對道口車身字符識別,提出了Psauvola 二值化算法及像素投影圖的分割算法;段西利[3]分析了工件復(fù)雜表面的字符特點(diǎn),提出了一種基于Wellner 算法的局部閾值方法;宋琦悅等人[4]針對驗(yàn)證碼在線識別問題,提出了一種基于改進(jìn)滴水算法的黏連字符分割方法;Zhou等人[5]針對紙幣序列號背景復(fù)雜的特點(diǎn),提出了基于混合二值化和自適應(yīng)特征提取的新型字符分割方法;Qaroush等人[6]針對阿拉伯文本的分割難題,提出垂直投影與字符投影輪廓拓?fù)涮卣飨嘟Y(jié)合的分割方法;Tanzila等人[7]針對羅馬手寫字符的識別,提出一種基于遺傳算法的粘連羅馬字符分割方法。
上述算法在一定程度上提高了字符分割準(zhǔn)確率,但其本質(zhì)均為基于二值化圖片進(jìn)行處理,且僅適用于光照均勻及工件表面質(zhì)量穩(wěn)定等良好工況。然而,在工業(yè)實(shí)際應(yīng)用中,由于光照條件限制及工件表面反光等情況的存在,往往會產(chǎn)生低質(zhì)量亮度分布不均勻的圖像,嚴(yán)重影響序列號的分割識別。
針對上述問題,本文提出一種在灰度波形圖上,基于分割效果評價(jià)函數(shù)的迭代閉環(huán)反饋分割方法,省去二值化過程,直接對灰度圖像進(jìn)行處理。采用迭代平滑濾波算法對灰度波形圖進(jìn)行數(shù)據(jù)清洗,并基于廣義學(xué)習(xí)矢量量化算法(Generalized Learning Vector Quantization Algorithm,GLVQ)確定最優(yōu)濾波權(quán)重因子,在確保字符分割準(zhǔn)確率的同時(shí)提高濾波效率;建立分割效果評價(jià)函數(shù),以此判斷是否進(jìn)一步迭代濾波和重新分割。
傳統(tǒng)基于二值化圖像的分割算法,其原理是依據(jù)目標(biāo)像素點(diǎn)與背景像素點(diǎn)間的灰度差異,通過對比像素點(diǎn)與閾值b之間的相對關(guān)系,實(shí)現(xiàn)圖像二值化,進(jìn)而實(shí)現(xiàn)字符分割[8]。
閾值一般包含全局閾值和局部自適應(yīng)閾值兩種[9]。全局閾值,即全局采用同一閾值,如式(1)所示。該方法實(shí)現(xiàn)簡單,適用于目標(biāo)區(qū)域與背景區(qū)域灰度差異較大時(shí)的簡單情況。
式中,xij為第i行第j列像素點(diǎn)灰度值,yij為第i行第j列像素點(diǎn)二值化,b為全局閾值。
局部自適應(yīng)閾值,則是在鄰域內(nèi)按照相應(yīng)算法確定該鄰域內(nèi)的閾值,如式(2)所示。此方法考慮了不同區(qū)域內(nèi)灰度的差異性,對于單張復(fù)雜圖片具有較好的處理效果。
式中,wij為鄰域內(nèi)的像素點(diǎn),wij∈W,F(xiàn)(w)為鄰域內(nèi)閾值確定算法,b0為鄰域內(nèi)的局部閾值。
然而,在實(shí)際生產(chǎn),如批量渦輪葉片的序列號識別中,鑄造導(dǎo)致的不同葉片幾何誤差不同,使得葉片的修整量不盡相同,再加之劃痕等噪點(diǎn)的存在,葉片表面存在不同程度的反光情況,如圖1所示。
圖1 現(xiàn)場條件下,反光表面的序列號圖像
此時(shí),傳統(tǒng)二值化分割算法不再適用:全局閾值,閾值選定后不再改變,在圖片亮度情況變化較大時(shí),單一閾值無法實(shí)現(xiàn)精準(zhǔn)分割;局部閾值,雖能在鄰域范圍內(nèi)自適應(yīng)確定閾值,但鄰域范圍大小的確定、自適應(yīng)閾值計(jì)算方法的選擇,在處理亮度變化較大的批量圖片時(shí),仍需手動調(diào)整。
為解決亮度不均勻低質(zhì)量圖像中壓印字符分割問題,提出一種在灰度波形圖上,基于分割效果評價(jià)函數(shù)的迭代閉環(huán)反饋?zhàn)址指罘椒?。技術(shù)流程如圖2所示。
圖2 技術(shù)方案流程圖
首先,將圖像高斯濾波、灰度化,并計(jì)算得到灰度波形圖;然后,結(jié)合廣義學(xué)習(xí)矢量量化算法(GLVQ),確定最優(yōu)濾波權(quán)重因子,在確保數(shù)據(jù)清洗質(zhì)量的同時(shí)提高濾波效率。其次,依據(jù)平滑濾波后的灰度波形圖波峰、波谷變化趨勢,結(jié)合字符分割函數(shù),確定分割位置。最后,通過分割效果評價(jià)函數(shù)對分割效果進(jìn)行評價(jià),若分割效果理想,則按照分割位置進(jìn)行分割,否則,進(jìn)一步迭代濾波和重新分割,直至分割效果理想為止。
現(xiàn)場獲取的圖片中包含序列號、背景、劃痕等多種元素。在字符分割之前,需要對原始圖片進(jìn)行灰度化及濾波消噪等預(yù)處理,并計(jì)算灰度波形圖以便后續(xù)處理。將圖像的像素點(diǎn)按式(3)進(jìn)行灰度化。
式中,R、G、B為像素點(diǎn)顏色的三個(gè)分量,kr、kg、kb為三個(gè)分量對應(yīng)的權(quán)值,c為像素點(diǎn)經(jīng)灰度化后的灰度值。
濾波消噪包含高斯濾波、中值濾波、雙邊濾波等多種處理方式[10]。本文中,主要采用高斯濾波進(jìn)行圖像的背景噪聲處理,用以提高目標(biāo)區(qū)域清晰度,相關(guān)結(jié)果如圖3所示。
圖3 序列號圖像預(yù)處理
按照式(4)對經(jīng)過高斯濾波的灰度圖像進(jìn)行統(tǒng)計(jì),得到如圖4所示的初始灰度波形圖。
式中,cij為第i行第j列像素點(diǎn)灰度值,Cj為第j列像素點(diǎn)灰度總值,m為像素總行數(shù),n為像素總列數(shù)。
圖4 初始灰度波形圖
(1)加權(quán)移動平滑濾波算法
初始灰度波形圖中,由于字符自身結(jié)構(gòu)特征及噪聲等因素影響,波形圖中存在部分畸變區(qū)域,如圖5所示。
圖5 局部波形畸變放大圖
畸變波形的存在會嚴(yán)重影響字符分割準(zhǔn)確率,因此需采用加權(quán)移動平滑濾波算法對原始波形圖進(jìn)行數(shù)據(jù)清洗,具體如式(5)所示:
式中,C*j為平滑濾波后第j列灰度總值,p為平滑濾波鄰域范圍,kl為平滑濾波算子的權(quán)重因子。
(2)基于GLVQ的最優(yōu)濾波權(quán)重因子確定
加權(quán)移動平滑濾波算法中鄰域范圍p及濾波權(quán)重因子kl的選取對濾波結(jié)果有較大影響。鄰域范圍p,決定了濾波過程中參與運(yùn)算的元素?cái)?shù)目[11]。當(dāng)p取值過小時(shí),單次濾波效果不顯著;當(dāng)p取值過大時(shí),參數(shù)變化靈敏度降低,易導(dǎo)致數(shù)據(jù)失真,失去波形圖原有的波峰波谷特征。結(jié)合單次濾波效果及字符分割準(zhǔn)確率,將鄰域范圍p確定為5。
濾波權(quán)重因子K為含有p個(gè)元素的一維向量,即K=[k1,k2,…,kp],其元素kl表示第l個(gè)元素在濾波中所占權(quán)重[12]。適當(dāng)提高新采樣元素在滑動濾波中的權(quán)重,可提高系統(tǒng)對當(dāng)前采樣值的靈敏度[13];但若過度增大,則會導(dǎo)致波形失真。
為此,基于廣義學(xué)習(xí)矢量量化算法(GLVQ),建立應(yīng)用于批量灰度波形圖的最優(yōu)加權(quán)移動平滑濾波參數(shù)確定模型。GLVQ是一種有監(jiān)督式、競爭性神經(jīng)網(wǎng)絡(luò)算法[14],可用于模式分類等領(lǐng)域。GLVQ 的拓?fù)浣Y(jié)構(gòu)如圖6 所示,競爭層神經(jīng)元與輸入層神經(jīng)元對應(yīng)連接,整體連接權(quán)重構(gòu)成競爭層的權(quán)重矩陣;在輸出方面,競爭層神經(jīng)元與輸出層神經(jīng)元一一對應(yīng)。訓(xùn)練時(shí)GLVQ 通過迭代更新競爭層的權(quán)重矩陣,實(shí)現(xiàn)樣本輸入與輸出的最佳匹配[15]。
圖6 GLVQ神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)
為獲取不同反光情況下,加權(quán)濾波時(shí)對應(yīng)的最優(yōu)濾波權(quán)重因子,以灰度波形圖各列灰度值構(gòu)成的序列CN作為GLVQ 輸入,以權(quán)重因子K中ki的不同組合作為輸出,進(jìn)行模型建立及訓(xùn)練,具體步驟如下:
①獲取訓(xùn)練樣本。前期通過遍歷等方式,確定不同圖片各自對應(yīng)的最優(yōu)濾波權(quán)重因子,組建訓(xùn)練樣本數(shù)據(jù)集。該數(shù)據(jù)集中的輸入向量為C=(C1,C2,…,Cm)T,其中m為輸入層神經(jīng)元數(shù)目。
②網(wǎng)絡(luò)初始化。設(shè)置訓(xùn)練過程的迭代次數(shù)T,同時(shí)設(shè)定初始學(xué)習(xí)速率η0和競爭層的初始權(quán)重矩陣W={W1,W2,…,Wp},其中p為競爭層神經(jīng)元的數(shù)目,Wi=(wi1,wi2,…,wim)T∈W表示競爭層第i個(gè)神經(jīng)元與輸入層連接的權(quán)重向量。
③計(jì)算訓(xùn)練樣本中輸入向量C與競爭層權(quán)重向量Wi之間的距離di:
式中,t為迭代次數(shù),初始值t=1,Wi(t)為第t次迭代時(shí)競爭層神經(jīng)元i對應(yīng)的權(quán)重向量。
④更新權(quán)重矩陣。尋找di值最小時(shí),對應(yīng)的權(quán)重向量Wmin(t),并確定該權(quán)重向量所屬競爭層神經(jīng)元對應(yīng)的輸出類別k(Wmin(t))。根據(jù)所屬類別不同,按照不同規(guī)則對競爭層神經(jīng)元的權(quán)重向量Wi(t+1)(i=1,2,…,p)進(jìn)行更新[16],如式(7)所示:
式中,
⑤迭代條件判斷。計(jì)算權(quán)重矩陣更新后網(wǎng)絡(luò)的輸出誤差,若滿足要求則停止迭代,否則令t=t+1 重復(fù)上述步驟。
GLVQ訓(xùn)練完成后,保存最終模型。在實(shí)際濾波過程中,無需再次訓(xùn)練,可通過該模型直接確定移動加權(quán)平滑濾波的最優(yōu)權(quán)重因子。
(3)加權(quán)移動平滑濾波算法與其他算法對比
除加權(quán)移動平滑濾波之外,同樣也存在其他濾波算法如滑動中值濾波與滑動平均濾波。
滑動中值濾波建立由N個(gè)采樣值確定的固定長度序列,每將一個(gè)新采樣值插入序列隊(duì)尾,便將序列隊(duì)首的采樣值去除,從而始終保證序列長度為N。將序列內(nèi)N個(gè)采樣值的中值,作為濾波結(jié)果。滑動中值濾波可以有效消除由于偶然因素所造成的波形畸變,對于規(guī)律性漸變波形有較好的濾波效果。但是,對于非周期性快速變換的波形則無法達(dá)到理想的濾波效果。
滑動平均濾波則是將序列內(nèi)N個(gè)采樣值的平均值,作為濾波結(jié)果?;瑒悠骄鶠V波對于周期性噪聲有較好的濾波效果,但是靈敏度較低,無法對脈沖干擾引起的波形畸變進(jìn)行有效濾波。
加權(quán)移動平滑濾波是對滑動平均濾波的改進(jìn),具體如式(5)所示,其通過賦予序列中不同時(shí)刻采樣值不同的權(quán)重,可實(shí)現(xiàn)在保留原有數(shù)據(jù)特征的同時(shí)提高濾波靈敏度,從而達(dá)到濾波目的。
(1)分割函數(shù)
在濾波后的灰度波形圖上,結(jié)合分割函數(shù)g(n),基于梯度函數(shù),從灰度波形圖波峰波谷變化趨勢角度出發(fā),確定分割位置Vj,并將其存入數(shù)組V中。
式中,g(n)為字符分割函數(shù),f(j)為平滑濾波后第j列灰度總值,f '(j)為灰度波形函數(shù)一階導(dǎo)數(shù)。
(2)分割效果評價(jià)函數(shù)
采用迭代移動加權(quán)平滑濾波的方式對灰度波形圖進(jìn)行降噪處理。迭代次數(shù)與平滑效果密切相關(guān)。迭代次數(shù)過少,噪點(diǎn)清洗不完全,字符分割效果受影響;迭代次數(shù)過多,波形過擬合,同樣影響分割效果,如圖7 所示。因此,迭代次數(shù)的確定,對于字符的準(zhǔn)確分割具有重要意義。
為確定最優(yōu)迭代濾波次數(shù),保證濾波效果及字符分割準(zhǔn)確率,本文依據(jù)先驗(yàn)經(jīng)驗(yàn)及序列號編排規(guī)則,設(shè)置分割效果評價(jià)函數(shù)h(n),如式(9)所示:
式中,n為分割點(diǎn)總個(gè)數(shù),Vi為第i個(gè)切分位置,l為單個(gè)字符平均寬度,,q為序列號字符總數(shù)。
圖7 迭代平滑濾波灰度波形圖
當(dāng)lim(h(n))→0 時(shí),字符分割效果較好,可以進(jìn)行分割;否則,需要進(jìn)一步迭代濾波、重新分割,直至分割效果達(dá)到評價(jià)函數(shù)標(biāo)準(zhǔn)。具體如圖8所示。
圖8 基于分割效果評價(jià)函數(shù)的迭代反饋閉環(huán)流程圖
分割效果評價(jià)函數(shù)h(n)具體主要從以下兩方面對分割效果進(jìn)行評價(jià):
①分割點(diǎn)個(gè)數(shù)n與序列號字符總數(shù)q之間關(guān)系。只有n=q-1 時(shí),才有可能實(shí)現(xiàn)準(zhǔn)確分割。
②分割字符寬度(Vi+1-Vi)與單個(gè)字符平均寬度l間關(guān)系。利用切割寬度與平均寬度偏差的絕對值衡量分割效果,絕對值越小,分割越精確。
字符分割后,依據(jù)序列號編排先驗(yàn)知識,設(shè)置識別白名單,限制特定位置字符的識別范圍。并對識別結(jié)果合理性進(jìn)行判斷,若不符合序列號編排規(guī)則,則進(jìn)行進(jìn)一步迭代濾波、重新分割,直至符合編排規(guī)則為止,分割位置如圖9所示。
圖9 字符分割位置
為驗(yàn)證本文算法的有效性及具體效果,選取垂直投影分割法、連通域分割法以及本文算法等三種不同算法,分別在貴陽×××廠現(xiàn)場采集數(shù)據(jù)集、GitHub 開源數(shù)據(jù)集上進(jìn)行分割對比實(shí)驗(yàn);同時(shí),對比不同濾波算法的濾波效果。
為充分驗(yàn)證算法可行性,采用如下兩種數(shù)據(jù)集進(jìn)行字符分割實(shí)驗(yàn):
(1)貴陽×××廠現(xiàn)場采集數(shù)據(jù)集。
(2)GitHub開源車牌識別數(shù)據(jù)集。
貴陽×××廠現(xiàn)場采集數(shù)據(jù)集,采用的圖像采集系統(tǒng),主要由HIKVISIONCCD 相機(jī)、機(jī)器視覺輔助光源、固定支架等三部分組成。字符分割測試對象為貴陽×××廠所生產(chǎn)的某型號渦輪葉片表面的壓印序列號,具體如圖3所示。分析該壓印序列號,其特點(diǎn)如下:
(1)不同葉片序列號所在表面反光率情況差異較大。
(2)葉片零件表面存在不規(guī)則劃痕等噪聲。
(3)序列號均由10個(gè)字符構(gòu)成,字體固定。
GitHub開源車牌識別數(shù)據(jù)集,主要應(yīng)用于車牌識別算法的有效性檢驗(yàn),具體如圖10所示。分析該數(shù)據(jù)集,其特點(diǎn)如下:
(1)車牌亮度變化情況較大,且清晰度較低。
圖10 GitHub開源車牌識別數(shù)據(jù)集
(2)每個(gè)車牌均由7個(gè)字符構(gòu)成,字體固定。
基于二值化的分割方法主要包含以下兩種:
(1)垂直投影分割法。
(2)連通域字符分割法。
垂直投影分割法,是在二值化圖像的基礎(chǔ)上,利用目標(biāo)字符區(qū)域與背景區(qū)域之間像素信息在垂直投影方向上的差異,進(jìn)行字符分割的方法[17]。其主要步驟如下:
(1)圖片二值化。確定二值化閾值b,按照式(1)將圖片中的像素二值化。
(2)垂直投影統(tǒng)計(jì)。逐列統(tǒng)計(jì)每一列像素信息,如式(10)所示:
式中,yij為第i行第j列二值化像素,Yj為第j列中值為1的像素點(diǎn)總數(shù),m為像素總行數(shù),n為像素總列數(shù)。
(3)字符分割。在像素列分布情況統(tǒng)計(jì)基礎(chǔ)上,按照式(11)對每列像素進(jìn)行分類:
式中,φ為字符列與背景列的區(qū)分判斷閾值。
連通域字符分割法,同樣是在二值化圖像基礎(chǔ)上,通過標(biāo)記分析字符所在連通域,實(shí)現(xiàn)字符的分割[18]。其具體步驟如下所示:
(1)圖片二值化:確定二值化閾值b,按照式(1)將圖片中的像素二值化。
(2)連通域確定:
①連通域初始種子確定:遍歷像素點(diǎn),直至搜索到像素值為1的目標(biāo)字符像素點(diǎn)B(x,y),則該像素點(diǎn)位置即為種子。賦予B(x,y)新標(biāo)記label,并將種子的相鄰像素位置壓入棧中。
②連通域種子生長:彈出步驟①中的棧頂元素,賦予相同標(biāo)記label,然后再將該棧頂元素的鄰近像素壓入棧中。
③重復(fù)步驟①、②,直至棧中無元素為止。
(3)重復(fù)步驟(2),直至掃描結(jié)束。
(4)按照連通域標(biāo)記label的不同,將圖像分割為單個(gè)字符。
(1)不同分割算法準(zhǔn)確率對比分析
在貴陽×××廠現(xiàn)場采集的某型號渦輪葉片壓印序列號數(shù)據(jù)集和GitHub 開源車牌識別數(shù)據(jù)集上,采用垂直投影分割法、連通域分割法與基于評價(jià)函數(shù)的迭代閉環(huán)反饋?zhàn)址指罘椒?,分別進(jìn)行字符分割實(shí)驗(yàn)。實(shí)驗(yàn)對比結(jié)果如表1所示。
表1 不同分割算法準(zhǔn)確率對比結(jié)果
從實(shí)驗(yàn)數(shù)據(jù)看,相較于垂直投影和連通域分割算法,本文提出的基于評價(jià)函數(shù)的迭代反饋閉環(huán)字符分割方法在批量處理亮度不均勻低質(zhì)量圖像中的壓印字符時(shí),能夠顯著提高字符分割準(zhǔn)確率。
通過對傳統(tǒng)算法分割失敗的字符進(jìn)行分析可知,垂直投影法及連通域分割法均為基于二值化圖像進(jìn)行處理的算法,對于亮度均勻、質(zhì)量清晰圖像中的字符有較好的分割效果,但在批量處理亮度不均勻低質(zhì)量圖像中壓印字符時(shí),難以確定最優(yōu)二值化閾值,導(dǎo)致二值化圖像中目標(biāo)信息大量丟失,進(jìn)而影響字符分割精度。此外,連通域算法在處理粘連字符時(shí),無法實(shí)現(xiàn)有效分割,這也是影響連通域算法字符分割準(zhǔn)確率的另一因素。
(2)不同分割算法時(shí)間復(fù)雜度對比分析
為測試不同分割算法的實(shí)時(shí)性及時(shí)間復(fù)雜度,在表2所示計(jì)算機(jī)硬件測試環(huán)境中,分別統(tǒng)計(jì)垂直投影分割法、連通域分割法和本文算法在處理貴陽×××廠現(xiàn)場采集數(shù)據(jù)的耗時(shí)情況。
表2 分割算法硬件測試環(huán)境
三種不同算法的具體用時(shí)及時(shí)間復(fù)雜度分析,如表3所示。
表3 不同分割算法運(yùn)行時(shí)間及時(shí)間復(fù)雜度
在算法時(shí)間復(fù)雜度方面,垂直投影分割算法與本文算法均為平方階O(n2),在處理現(xiàn)場采集單張圖像時(shí),運(yùn)行時(shí)間分別為432 ms 和489 ms,實(shí)時(shí)性較好;連通域算法時(shí)間復(fù)雜度為指數(shù)階O(2n),單張圖像處理時(shí)長為1 451 ms,運(yùn)算量較大,實(shí)時(shí)性較差。
(3)不同濾波算法分割準(zhǔn)確率對比分析
本文所述的基于分割效果評價(jià)函數(shù)的迭代閉環(huán)反饋分割方法,采用加權(quán)移動平滑濾波算法進(jìn)行濾波,并通過廣義學(xué)習(xí)矢量量化算法(GLVQ)確定最優(yōu)的濾波權(quán)重因子。為了對比加權(quán)移動平滑濾波、移動中值濾波與移動平均濾波這三種不同濾波算法,以本文所提出的字符分割算法為框架,分別用三種不同濾波算法在貴陽×××廠現(xiàn)場數(shù)據(jù)集及GitHub 開源數(shù)據(jù)集上進(jìn)行分割實(shí)驗(yàn),結(jié)果如表4所示。
表4 不同濾波算法分割準(zhǔn)確率對比結(jié)果
實(shí)驗(yàn)結(jié)果表明,相比于移動中值濾波、移動均值濾波,加權(quán)移動平滑濾波能更為有效地去除灰度波形圖中由于反光、劃痕等因素造成的波形畸變,同時(shí)較好地保持原有數(shù)據(jù)的變化趨勢,進(jìn)而提高字符分割準(zhǔn)確率。
針對傳統(tǒng)基于二值化圖像的字符分割算法,在批量處理亮度不均勻低質(zhì)量圖像中的壓印字符時(shí),存在的分割準(zhǔn)確率較低的問題,提出在灰度波形圖基礎(chǔ)上,基于分割效果評價(jià)函數(shù)的迭代閉環(huán)反饋?zhàn)址指罘椒?,并通過廣義學(xué)習(xí)矢量量化算法(GLVQ)確定最優(yōu)濾波權(quán)重因子,提高濾波效率。建立基于閉環(huán)反饋的評價(jià)函數(shù),對分割效果進(jìn)行實(shí)時(shí)評價(jià),并以此為依據(jù)判斷是否進(jìn)行迭代濾波及重新分割,確保分割準(zhǔn)確率。通過對比實(shí)驗(yàn)可知,該算法的字符分割識別準(zhǔn)確率可達(dá)98.5%??蔀閷?shí)際生產(chǎn)現(xiàn)場、多種復(fù)雜工況下的壓印序列號批量識別提供一種新的技術(shù)思路。