張茂林,葉輕舟,潘 鑫,陸 華
(1.福建工程學(xué)院 電子電氣與物理學(xué)院,福建 福州350118;2.福建工程學(xué)院 計算機科學(xué)與數(shù)學(xué)學(xué)院,福建 福州350118;3.福州三龍噴碼科技有限公司,福建 福州 350014)
化工包裝袋上噴印的生產(chǎn)日期、批號等信息是產(chǎn)品不可或缺的一部分,對產(chǎn)品質(zhì)量管控起著重要作用,但化工包裝生產(chǎn)線常由于各種原因造成噴印信息模糊、發(fā)散或缺失。目前大部分生產(chǎn)線采用人工目視進行檢查,但隨著產(chǎn)能擴大,傳統(tǒng)的人工方法已經(jīng)無法滿足日常生產(chǎn)需求,迫切需要建立一種化工包裝袋噴印質(zhì)量自動檢測系統(tǒng)。
隨著機器視覺技術(shù)研究的不斷深入,機器視覺檢測技術(shù)已在自動化檢測中扮演了重要角色。文獻[1]通過使用高效光譜圖匹配算法,實現(xiàn)了對字符的分割與識別。文獻[2]提出了基于語義分割網(wǎng)絡(luò)的OCR(Optical Character Recognition)文字識別方法。文獻[3]利用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)體系結(jié)構(gòu),實現(xiàn)對單個單詞的識別。文獻[4]采用Halcon軟件開展日化瓶瓶底噴碼質(zhì)量檢測算法研究。文獻[5]基于Tesseract_OCR引擎開展紙箱讀碼、OCR字符視覺檢測研究?;跈C器視覺的化工包裝袋噴碼質(zhì)量檢測算法主要包含圖像預(yù)處理、圖像定位、字符分割、字符識別和字符比對5個部分,其算法流程如圖1所示。
圖1 算法流程圖
圖像質(zhì)量直接影響檢測算法設(shè)計和測量精度,因此在圖像分析前,需進行圖像預(yù)處理來增強圖像中的有用信息,為特征提取、分割等處理做準(zhǔn)備。其中,圖像濾波是圖像預(yù)處理中的重要環(huán)節(jié)。常見圖像濾波算法有均值濾波、中值濾波、高斯濾波和雙邊濾波等。
均值濾波是將整個窗口范圍內(nèi)的像素值取平均值,雖然不能較好地保護圖像細(xì)節(jié),但對高斯噪聲表現(xiàn)較好。中值濾波是用非線性的方法,將窗口范圍內(nèi)的像素值進行排序并取用中心點像素值,能夠保護圖像尖銳的邊緣,對椒鹽噪聲表現(xiàn)較好。高斯濾波通過二維離散高斯函數(shù)采樣并歸一化取得加權(quán)系數(shù)后,對圖像進行加權(quán)平均,是一種線性平滑濾波,適用于消除高斯噪聲。雙邊濾波是將該點鄰域像素值的幾何空間距離及像素差值的加權(quán)平均值替換每個像素值,能夠較好地保存邊緣和降噪平滑[6-7]。根據(jù)生成采集圖像的特點,本文先采用中值濾波濾除一部分噪聲后,再采用高斯雙邊濾波進行處理,以便在衰減噪聲的同時有效地保持圖像邊緣信息。
字符區(qū)域定位指從采集圖像中提取目標(biāo)對象區(qū)域。常見的字符區(qū)域提取方法可分為基于字符梯度、字符紋理和灰度直方圖3種方法[8-9]。由于工廠環(huán)境中的光照往往存在較大波動,且不同噴碼信息之間存在一定的差異,常用的邊緣檢測方法和基于全局均值的可變閾值法魯棒性差,易引入其它噪聲。因此,本文引入亮暗補償函數(shù),并在亮暗補償函數(shù)后再進行局部統(tǒng)計灰度模式,算法表示為
(1)
式中
t′xy=m′xy-nxy
(2)
其中,m′xy表示以坐標(biāo)點(x,y)為中心局部領(lǐng)域Sxy內(nèi)所有像素點灰度值的高斯加權(quán)平均和;nxy=amxy,為點(x,y)局部領(lǐng)域的亮暗補償函數(shù);a為亮暗補償系數(shù);mxy為領(lǐng)域Sxy內(nèi)像素點灰度值均值。亮度高的區(qū)域a加大,亮度低的區(qū)域a減小,以此來減少閾值像素點灰度值f(x,y)與計算閾值t′xy之間的差值,從而減少圖像分割后的噪聲點。字符區(qū)域定位結(jié)果如圖2所示。
圖2 基于局部統(tǒng)計的可變閾值字符區(qū)域定位
字符分割是從包含多個字符的字符區(qū)域中分割只包含單個字符的子集圖像。常用的字符分割算法有投影法、連通域法和聚類分析法等[10-11]。投影法利用灰度投影直方圖的波峰和波谷特性來分割字符,根據(jù)投影方向的不同可分為垂直投影和水平投影。該算法對于圖像質(zhì)量要求較高,目標(biāo)區(qū)域外的噪點、字符變形等因素均會影響分割效果[12]。連通域法將是將圖像中具有相同像素值且像素點位置關(guān)系符合某種規(guī)則的區(qū)域進行字符分割,不適用于由離散點構(gòu)成的大字符噴碼[13-14]。實際應(yīng)用中,噴碼字符點與點的距離有可能大于字符之間的間隙大小,導(dǎo)致圖像閉運算后多個字符黏連無法被正確分割。如圖3所示為連通域法字符分割結(jié)果,圖中第二個字符P被錯誤分割,且由于字符D8和00字符存在黏連,導(dǎo)致無法對其進行正確分割。
圖3 連通域法字符分割
本文提出了一種改進連通域的動態(tài)字符分割算法,可實現(xiàn)字符分割。其動態(tài)分割偽代碼可表示為:
Input:待處理圖像(src)。
Output:文件夾下的單個字符圖像。
{
for(intj=0;j for(inti=0;i {統(tǒng)計每一列的黑像素點個數(shù)} if(相鄰區(qū)域黑色像素點不連續(xù)0){ else{標(biāo)記最左和最右列為疑似分割位置}} 計算每個疑似分割位置間隙,求取間隙眾數(shù)和字符寬眾數(shù)。 for(inti=0;i<字符個數(shù);i++){ if(字符寬和字符寬眾數(shù)相差較小) {分割位置正確,切割字符} else{ if(字符寬約為字符寬眾數(shù)的倍數(shù)且相鄰間隙與眾數(shù)相近) {按眾數(shù)計算倍數(shù)位置,搜索前后1/4,1/2眾數(shù)區(qū)域,求最少黑色像素點位置并進行分割} if(字符寬小于字符寬眾數(shù)且相鄰間隙較小) {將當(dāng)前字符與下個字符合并進行分割} }} } 改進連通域字符分割算法對字符定位區(qū)域重新進行字符分割的結(jié)果如圖4所示。算法能夠有效處理誤分割字符及字符因黏連造成的漏分割,并可根據(jù)每個分割字符的最小包圍矩形裁剪單個字符圖像。 圖4 改進連通域法字符分割 Tesseract是一款由HP實驗室研發(fā)并由Google優(yōu)化、維護的 OCR 引擎,可將各種格式的圖像轉(zhuǎn)化成超過60種語言(包括中文)的文本,并且支持用戶不斷訓(xùn)練字庫,以提高字符識別準(zhǔn)確率,是目前應(yīng)用較為廣泛的OCR引擎之一[15-17]。 Tesseract-OCR引擎自帶的字庫對特定的字符識別率不高,因此需對圖像字符分割后的單個噴碼字符進行訓(xùn)練,生成訓(xùn)練數(shù)據(jù),從而提高單個字符識別準(zhǔn)確率,其具體步驟如下: 步驟1選取tif格式的圖片作為樣本。將前期圖像分割后的同一個字符或數(shù)字的單個字符圖片合并成一張tif圖片。為提升訓(xùn)練效果,確保選取樣本圖像是每個字符或數(shù)字,并保證至少有50個樣本; 步驟2生成并調(diào)整BOX文件。通過Tesseract的makebox命令定位并識別字符,生成BOX文件。再通過jTessBoxEditor工具矯正識別出來的字符,并調(diào)整Box文件; 步驟3生成、合并訓(xùn)練文件。根據(jù)BOX文件和tif圖片進行特征提取和字庫訓(xùn)練,進而生成字符集文件,再通過聚類字符特征及合并訓(xùn)練文件來生成traineddataz格式的訓(xùn)練文件。 以圖5和圖6的實驗為例,Tesseract-OCR引擎原始數(shù)據(jù)集將輸入圖像識別為“Ppit-TO35(L5E89)20201010D8007-806953”,其中4個字符識別錯誤,正確率為88.57%。使用訓(xùn)練數(shù)據(jù)集進行識別時,識別結(jié)果為“PPH-T035(L5E89)20201010D8007-B06953”,所有字符均識別正確。由實驗可知,訓(xùn)練數(shù)據(jù)集的識別效果優(yōu)于引擎原始的數(shù)據(jù)集。 圖5 原始數(shù)據(jù)集字符識別結(jié)果 圖6 訓(xùn)練數(shù)據(jù)集識別結(jié)果 本文實驗選用CPU主頻2.0 GHz,內(nèi)存8 GB的PC機,以??低?HIKVISION)型號為MV-CE100-30GC的彩色 CMOS 千兆以太網(wǎng)工業(yè)相機和焦距為8~50 mm,光圈范圍為F1.4-C的中聯(lián)科創(chuàng)VM08050MP3鏡頭作為實驗平臺。本文實驗對象選用經(jīng)噴碼機噴印信息的包裝袋側(cè)面,需檢測的區(qū)域為800 mm×150 mm??紤]到檢測范圍較大、檢測目標(biāo)表面凹凸不平、包裝側(cè)面為圓弧形等特點,故選用兩個140 mm×20 mm的條形白色光源組合,照明方式為前景光直接照明。 為驗證算法的有效性,在聚丙乙烯生產(chǎn)車間,搭建化工包裝袋噴印信息的質(zhì)量檢測測試平臺。將噴碼機的一組派碼信息與圖像識別字符進行逐一比對,若派碼信息與識別字符完全一致,則判定噴碼質(zhì)量合格;若一個字符不一致,則判定噴碼質(zhì)量不合格,并以正確判定噴碼質(zhì)量是否合格的樣本占總樣本的比例作為評價指標(biāo)。在生產(chǎn)線中使用該實驗平臺對1 000包聚丙乙烯包裝袋的噴碼質(zhì)量進行檢測。本文提出的檢測算法與目測校驗結(jié)果的對比如表1所示。 表1 結(jié)果對比 由表1可以看出,本文提出的檢測算法對噴碼質(zhì)量合格的44件產(chǎn)品進行了錯誤判斷,故噴碼質(zhì)量檢測算法的精確度為 95.6%。被錯誤判斷的44件產(chǎn)品中包裝袋的噴碼部分大部分存在比較明顯的皺褶,字符畸變較為嚴(yán)重,因此導(dǎo)致字符識別率降低。 本文運用均值濾波與高斯雙邊濾波算法對采集圖像進行預(yù)處理,并通過局部統(tǒng)計的可變閾值算法獲取字符區(qū)域。針對噴碼字符點與點的距離有可能大于字符之間的間隙大小,導(dǎo)致二值圖像閉運算后多個字符黏連形成連通域的現(xiàn)象,本文提出了一種改進連通域的動態(tài)字符分割算法。最后,將分割的字符圖像通過Tesseract_OCR引擎進行分類訓(xùn)練和識別。實驗結(jié)果表明,該算法對噴碼質(zhì)量檢測的實時性和準(zhǔn)確性較高,能夠滿足化工包裝袋噴碼質(zhì)量檢測的要求。本研究的不足之處在于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)不夠,泛化能力不夠。此外,由于化工包裝袋存在褶皺,字符畸變較為嚴(yán)重,會降低本文提出的算法的精確度。因此,在之后的實驗中將進一步擴大訓(xùn)練數(shù)據(jù),并考慮加入卷積神經(jīng)網(wǎng)絡(luò)來提高算法的精確度。4 基于Tesseract_OCR引擎的字符識別與訓(xùn)練
5 實驗結(jié)果與分析
6 結(jié)束語