閆曉燊,高 強,朱思萌,奚學程,趙萬生
上海交通大學 機械與動力工程學院 機械系統與振動國家重點實驗室,上海200240
壓印序列號對產品質量管控、零件溯源等具有重要意義。序列號識別過程可以劃分為圖像預處理、字符分割和字符識別三部分。字符分割效果對字符識別準確率有較大影響[1]。
在字符分割方面,許多學者進行了相關研究:趙永猛等人[2]針對道口車身字符識別,提出了Psauvola 二值化算法及像素投影圖的分割算法;段西利[3]分析了工件復雜表面的字符特點,提出了一種基于Wellner 算法的局部閾值方法;宋琦悅等人[4]針對驗證碼在線識別問題,提出了一種基于改進滴水算法的黏連字符分割方法;Zhou等人[5]針對紙幣序列號背景復雜的特點,提出了基于混合二值化和自適應特征提取的新型字符分割方法;Qaroush等人[6]針對阿拉伯文本的分割難題,提出垂直投影與字符投影輪廓拓撲特征相結合的分割方法;Tanzila等人[7]針對羅馬手寫字符的識別,提出一種基于遺傳算法的粘連羅馬字符分割方法。
上述算法在一定程度上提高了字符分割準確率,但其本質均為基于二值化圖片進行處理,且僅適用于光照均勻及工件表面質量穩定等良好工況。然而,在工業實際應用中,由于光照條件限制及工件表面反光等情況的存在,往往會產生低質量亮度分布不均勻的圖像,嚴重影響序列號的分割識別。
針對上述問題,本文提出一種在灰度波形圖上,基于分割效果評價函數的迭代閉環反饋分割方法,省去二值化過程,直接對灰度圖像進行處理。采用迭代平滑濾波算法對灰度波形圖進行數據清洗,并基于廣義學習矢量量化算法(Generalized Learning Vector Quantization Algorithm,GLVQ)確定最優濾波權重因子,在確保字符分割準確率的同時提高濾波效率;建立分割效果評價函數,以此判斷是否進一步迭代濾波和重新分割。
傳統基于二值化圖像的分割算法,其原理是依據目標像素點與背景像素點間的灰度差異,通過對比像素點與閾值b之間的相對關系,實現圖像二值化,進而實現字符分割[8]。
閾值一般包含全局閾值和局部自適應閾值兩種[9]。全局閾值,即全局采用同一閾值,如式(1)所示。該方法實現簡單,適用于目標區域與背景區域灰度差異較大時的簡單情況。

式中,xij為第i行第j列像素點灰度值,yij為第i行第j列像素點二值化,b為全局閾值。
局部自適應閾值,則是在鄰域內按照相應算法確定該鄰域內的閾值,如式(2)所示。此方法考慮了不同區域內灰度的差異性,對于單張復雜圖片具有較好的處理效果。

式中,wij為鄰域內的像素點,wij∈W,F(w)為鄰域內閾值確定算法,b0為鄰域內的局部閾值。
然而,在實際生產,如批量渦輪葉片的序列號識別中,鑄造導致的不同葉片幾何誤差不同,使得葉片的修整量不盡相同,再加之劃痕等噪點的存在,葉片表面存在不同程度的反光情況,如圖1所示。

圖1 現場條件下,反光表面的序列號圖像
此時,傳統二值化分割算法不再適用:全局閾值,閾值選定后不再改變,在圖片亮度情況變化較大時,單一閾值無法實現精準分割;局部閾值,雖能在鄰域范圍內自適應確定閾值,但鄰域范圍大小的確定、自適應閾值計算方法的選擇,在處理亮度變化較大的批量圖片時,仍需手動調整。
為解決亮度不均勻低質量圖像中壓印字符分割問題,提出一種在灰度波形圖上,基于分割效果評價函數的迭代閉環反饋字符分割方法。技術流程如圖2所示。

圖2 技術方案流程圖
首先,將圖像高斯濾波、灰度化,并計算得到灰度波形圖;然后,結合廣義學習矢量量化算法(GLVQ),確定最優濾波權重因子,在確保數據清洗質量的同時提高濾波效率。其次,依據平滑濾波后的灰度波形圖波峰、波谷變化趨勢,結合字符分割函數,確定分割位置。最后,通過分割效果評價函數對分割效果進行評價,若分割效果理想,則按照分割位置進行分割,否則,進一步迭代濾波和重新分割,直至分割效果理想為止。
現場獲取的圖片中包含序列號、背景、劃痕等多種元素。在字符分割之前,需要對原始圖片進行灰度化及濾波消噪等預處理,并計算灰度波形圖以便后續處理。將圖像的像素點按式(3)進行灰度化。

式中,R、G、B為像素點顏色的三個分量,kr、kg、kb為三個分量對應的權值,c為像素點經灰度化后的灰度值。
濾波消噪包含高斯濾波、中值濾波、雙邊濾波等多種處理方式[10]。本文中,主要采用高斯濾波進行圖像的背景噪聲處理,用以提高目標區域清晰度,相關結果如圖3所示。

圖3 序列號圖像預處理
按照式(4)對經過高斯濾波的灰度圖像進行統計,得到如圖4所示的初始灰度波形圖。

式中,cij為第i行第j列像素點灰度值,Cj為第j列像素點灰度總值,m為像素總行數,n為像素總列數。

圖4 初始灰度波形圖
(1)加權移動平滑濾波算法
初始灰度波形圖中,由于字符自身結構特征及噪聲等因素影響,波形圖中存在部分畸變區域,如圖5所示。

圖5 局部波形畸變放大圖
畸變波形的存在會嚴重影響字符分割準確率,因此需采用加權移動平滑濾波算法對原始波形圖進行數據清洗,具體如式(5)所示:

式中,C*j為平滑濾波后第j列灰度總值,p為平滑濾波鄰域范圍,kl為平滑濾波算子的權重因子。
(2)基于GLVQ的最優濾波權重因子確定
加權移動平滑濾波算法中鄰域范圍p及濾波權重因子kl的選取對濾波結果有較大影響。鄰域范圍p,決定了濾波過程中參與運算的元素數目[11]。當p取值過小時,單次濾波效果不顯著;當p取值過大時,參數變化靈敏度降低,易導致數據失真,失去波形圖原有的波峰波谷特征。結合單次濾波效果及字符分割準確率,將鄰域范圍p確定為5。
濾波權重因子K為含有p個元素的一維向量,即K=[k1,k2,…,kp],其元素kl表示第l個元素在濾波中所占權重[12]。適當提高新采樣元素在滑動濾波中的權重,可提高系統對當前采樣值的靈敏度[13];但若過度增大,則會導致波形失真。
為此,基于廣義學習矢量量化算法(GLVQ),建立應用于批量灰度波形圖的最優加權移動平滑濾波參數確定模型。GLVQ是一種有監督式、競爭性神經網絡算法[14],可用于模式分類等領域。GLVQ 的拓撲結構如圖6 所示,競爭層神經元與輸入層神經元對應連接,整體連接權重構成競爭層的權重矩陣;在輸出方面,競爭層神經元與輸出層神經元一一對應。訓練時GLVQ 通過迭代更新競爭層的權重矩陣,實現樣本輸入與輸出的最佳匹配[15]。

圖6 GLVQ神經網絡的拓撲結構
為獲取不同反光情況下,加權濾波時對應的最優濾波權重因子,以灰度波形圖各列灰度值構成的序列CN作為GLVQ 輸入,以權重因子K中ki的不同組合作為輸出,進行模型建立及訓練,具體步驟如下:
①獲取訓練樣本。前期通過遍歷等方式,確定不同圖片各自對應的最優濾波權重因子,組建訓練樣本數據集。該數據集中的輸入向量為C=(C1,C2,…,Cm)T,其中m為輸入層神經元數目。
②網絡初始化。設置訓練過程的迭代次數T,同時設定初始學習速率η0和競爭層的初始權重矩陣W={W1,W2,…,Wp},其中p為競爭層神經元的數目,Wi=(wi1,wi2,…,wim)T∈W表示競爭層第i個神經元與輸入層連接的權重向量。
③計算訓練樣本中輸入向量C與競爭層權重向量Wi之間的距離di:

式中,t為迭代次數,初始值t=1,Wi(t)為第t次迭代時競爭層神經元i對應的權重向量。
④更新權重矩陣。尋找di值最小時,對應的權重向量Wmin(t),并確定該權重向量所屬競爭層神經元對應的輸出類別k(Wmin(t))。根據所屬類別不同,按照不同規則對競爭層神經元的權重向量Wi(t+1)(i=1,2,…,p)進行更新[16],如式(7)所示:

式中,
⑤迭代條件判斷。計算權重矩陣更新后網絡的輸出誤差,若滿足要求則停止迭代,否則令t=t+1 重復上述步驟。
GLVQ訓練完成后,保存最終模型。在實際濾波過程中,無需再次訓練,可通過該模型直接確定移動加權平滑濾波的最優權重因子。
(3)加權移動平滑濾波算法與其他算法對比
除加權移動平滑濾波之外,同樣也存在其他濾波算法如滑動中值濾波與滑動平均濾波。
滑動中值濾波建立由N個采樣值確定的固定長度序列,每將一個新采樣值插入序列隊尾,便將序列隊首的采樣值去除,從而始終保證序列長度為N。將序列內N個采樣值的中值,作為濾波結果。滑動中值濾波可以有效消除由于偶然因素所造成的波形畸變,對于規律性漸變波形有較好的濾波效果。但是,對于非周期性快速變換的波形則無法達到理想的濾波效果。
滑動平均濾波則是將序列內N個采樣值的平均值,作為濾波結果。滑動平均濾波對于周期性噪聲有較好的濾波效果,但是靈敏度較低,無法對脈沖干擾引起的波形畸變進行有效濾波。
加權移動平滑濾波是對滑動平均濾波的改進,具體如式(5)所示,其通過賦予序列中不同時刻采樣值不同的權重,可實現在保留原有數據特征的同時提高濾波靈敏度,從而達到濾波目的。
(1)分割函數
在濾波后的灰度波形圖上,結合分割函數g(n),基于梯度函數,從灰度波形圖波峰波谷變化趨勢角度出發,確定分割位置Vj,并將其存入數組V中。

式中,g(n)為字符分割函數,f(j)為平滑濾波后第j列灰度總值,f '(j)為灰度波形函數一階導數。
(2)分割效果評價函數
采用迭代移動加權平滑濾波的方式對灰度波形圖進行降噪處理。迭代次數與平滑效果密切相關。迭代次數過少,噪點清洗不完全,字符分割效果受影響;迭代次數過多,波形過擬合,同樣影響分割效果,如圖7 所示。因此,迭代次數的確定,對于字符的準確分割具有重要意義。
為確定最優迭代濾波次數,保證濾波效果及字符分割準確率,本文依據先驗經驗及序列號編排規則,設置分割效果評價函數h(n),如式(9)所示:

式中,n為分割點總個數,Vi為第i個切分位置,l為單個字符平均寬度,,q為序列號字符總數。

圖7 迭代平滑濾波灰度波形圖
當lim(h(n))→0 時,字符分割效果較好,可以進行分割;否則,需要進一步迭代濾波、重新分割,直至分割效果達到評價函數標準。具體如圖8所示。

圖8 基于分割效果評價函數的迭代反饋閉環流程圖
分割效果評價函數h(n)具體主要從以下兩方面對分割效果進行評價:
①分割點個數n與序列號字符總數q之間關系。只有n=q-1 時,才有可能實現準確分割。
②分割字符寬度(Vi+1-Vi)與單個字符平均寬度l間關系。利用切割寬度與平均寬度偏差的絕對值衡量分割效果,絕對值越小,分割越精確。
字符分割后,依據序列號編排先驗知識,設置識別白名單,限制特定位置字符的識別范圍。并對識別結果合理性進行判斷,若不符合序列號編排規則,則進行進一步迭代濾波、重新分割,直至符合編排規則為止,分割位置如圖9所示。

圖9 字符分割位置
為驗證本文算法的有效性及具體效果,選取垂直投影分割法、連通域分割法以及本文算法等三種不同算法,分別在貴陽×××廠現場采集數據集、GitHub 開源數據集上進行分割對比實驗;同時,對比不同濾波算法的濾波效果。
為充分驗證算法可行性,采用如下兩種數據集進行字符分割實驗:
(1)貴陽×××廠現場采集數據集。
(2)GitHub開源車牌識別數據集。
貴陽×××廠現場采集數據集,采用的圖像采集系統,主要由HIKVISIONCCD 相機、機器視覺輔助光源、固定支架等三部分組成。字符分割測試對象為貴陽×××廠所生產的某型號渦輪葉片表面的壓印序列號,具體如圖3所示。分析該壓印序列號,其特點如下:
(1)不同葉片序列號所在表面反光率情況差異較大。
(2)葉片零件表面存在不規則劃痕等噪聲。
(3)序列號均由10個字符構成,字體固定。
GitHub開源車牌識別數據集,主要應用于車牌識別算法的有效性檢驗,具體如圖10所示。分析該數據集,其特點如下:
(1)車牌亮度變化情況較大,且清晰度較低。

圖10 GitHub開源車牌識別數據集
(2)每個車牌均由7個字符構成,字體固定。
基于二值化的分割方法主要包含以下兩種:
(1)垂直投影分割法。
(2)連通域字符分割法。
垂直投影分割法,是在二值化圖像的基礎上,利用目標字符區域與背景區域之間像素信息在垂直投影方向上的差異,進行字符分割的方法[17]。其主要步驟如下:
(1)圖片二值化。確定二值化閾值b,按照式(1)將圖片中的像素二值化。
(2)垂直投影統計。逐列統計每一列像素信息,如式(10)所示:

式中,yij為第i行第j列二值化像素,Yj為第j列中值為1的像素點總數,m為像素總行數,n為像素總列數。
(3)字符分割。在像素列分布情況統計基礎上,按照式(11)對每列像素進行分類:

式中,φ為字符列與背景列的區分判斷閾值。
連通域字符分割法,同樣是在二值化圖像基礎上,通過標記分析字符所在連通域,實現字符的分割[18]。其具體步驟如下所示:
(1)圖片二值化:確定二值化閾值b,按照式(1)將圖片中的像素二值化。
(2)連通域確定:
①連通域初始種子確定:遍歷像素點,直至搜索到像素值為1的目標字符像素點B(x,y),則該像素點位置即為種子。賦予B(x,y)新標記label,并將種子的相鄰像素位置壓入棧中。
②連通域種子生長:彈出步驟①中的棧頂元素,賦予相同標記label,然后再將該棧頂元素的鄰近像素壓入棧中。
③重復步驟①、②,直至棧中無元素為止。
(3)重復步驟(2),直至掃描結束。
(4)按照連通域標記label的不同,將圖像分割為單個字符。
(1)不同分割算法準確率對比分析
在貴陽×××廠現場采集的某型號渦輪葉片壓印序列號數據集和GitHub 開源車牌識別數據集上,采用垂直投影分割法、連通域分割法與基于評價函數的迭代閉環反饋字符分割方法,分別進行字符分割實驗。實驗對比結果如表1所示。

表1 不同分割算法準確率對比結果
從實驗數據看,相較于垂直投影和連通域分割算法,本文提出的基于評價函數的迭代反饋閉環字符分割方法在批量處理亮度不均勻低質量圖像中的壓印字符時,能夠顯著提高字符分割準確率。
通過對傳統算法分割失敗的字符進行分析可知,垂直投影法及連通域分割法均為基于二值化圖像進行處理的算法,對于亮度均勻、質量清晰圖像中的字符有較好的分割效果,但在批量處理亮度不均勻低質量圖像中壓印字符時,難以確定最優二值化閾值,導致二值化圖像中目標信息大量丟失,進而影響字符分割精度。此外,連通域算法在處理粘連字符時,無法實現有效分割,這也是影響連通域算法字符分割準確率的另一因素。
(2)不同分割算法時間復雜度對比分析
為測試不同分割算法的實時性及時間復雜度,在表2所示計算機硬件測試環境中,分別統計垂直投影分割法、連通域分割法和本文算法在處理貴陽×××廠現場采集數據的耗時情況。

表2 分割算法硬件測試環境
三種不同算法的具體用時及時間復雜度分析,如表3所示。

表3 不同分割算法運行時間及時間復雜度
在算法時間復雜度方面,垂直投影分割算法與本文算法均為平方階O(n2),在處理現場采集單張圖像時,運行時間分別為432 ms 和489 ms,實時性較好;連通域算法時間復雜度為指數階O(2n),單張圖像處理時長為1 451 ms,運算量較大,實時性較差。
(3)不同濾波算法分割準確率對比分析
本文所述的基于分割效果評價函數的迭代閉環反饋分割方法,采用加權移動平滑濾波算法進行濾波,并通過廣義學習矢量量化算法(GLVQ)確定最優的濾波權重因子。為了對比加權移動平滑濾波、移動中值濾波與移動平均濾波這三種不同濾波算法,以本文所提出的字符分割算法為框架,分別用三種不同濾波算法在貴陽×××廠現場數據集及GitHub 開源數據集上進行分割實驗,結果如表4所示。

表4 不同濾波算法分割準確率對比結果
實驗結果表明,相比于移動中值濾波、移動均值濾波,加權移動平滑濾波能更為有效地去除灰度波形圖中由于反光、劃痕等因素造成的波形畸變,同時較好地保持原有數據的變化趨勢,進而提高字符分割準確率。
針對傳統基于二值化圖像的字符分割算法,在批量處理亮度不均勻低質量圖像中的壓印字符時,存在的分割準確率較低的問題,提出在灰度波形圖基礎上,基于分割效果評價函數的迭代閉環反饋字符分割方法,并通過廣義學習矢量量化算法(GLVQ)確定最優濾波權重因子,提高濾波效率。建立基于閉環反饋的評價函數,對分割效果進行實時評價,并以此為依據判斷是否進行迭代濾波及重新分割,確保分割準確率。通過對比實驗可知,該算法的字符分割識別準確率可達98.5%。可為實際生產現場、多種復雜工況下的壓印序列號批量識別提供一種新的技術思路。