馬 玲,羅曉曙,蔣品群
廣西師范大學(xué) 電子工程學(xué)院,廣西 桂林541004
食品、藥品的生產(chǎn)日期及有效期一般是使用點(diǎn)陣字符打印在包裝袋上,當(dāng)發(fā)生安全事故時(shí),很容易溯源,并找出故障原因并追責(zé),因此研究與開發(fā)自動(dòng)點(diǎn)陣字符識(shí)別系統(tǒng)不僅可以有效保證食品、藥品安全,而且可以減少質(zhì)量控制過程中所需的勞動(dòng)力成本。
目前針對(duì)基于點(diǎn)陣字符的識(shí)別研究,主要分為三種方法:基于人工神經(jīng)網(wǎng)絡(luò)的方法、基于統(tǒng)計(jì)學(xué)識(shí)別的方法和基于匹配識(shí)別的方法[1-3]。由于人工神經(jīng)網(wǎng)絡(luò)一般需要大量樣本,很難在樣本數(shù)據(jù)有限及識(shí)別環(huán)境復(fù)雜的情況下取得很好的識(shí)別效果。例如,文獻(xiàn)[1]采用卷積神經(jīng)網(wǎng)絡(luò)對(duì)易拉罐點(diǎn)陣字符進(jìn)行識(shí)別,文獻(xiàn)[2]采用基于HALCON的乳制品箱體點(diǎn)陣字符進(jìn)行識(shí)別,這兩種方法都只針對(duì)原始采集到的圖像,且只包含點(diǎn)陣字符,而不包含其他非點(diǎn)陣字符信息,但是實(shí)際生活中產(chǎn)品外包裝上的信息一般包括點(diǎn)陣字符信息和非點(diǎn)陣字符信息,因此這兩種方法有一定局限性。那么,基于統(tǒng)計(jì)學(xué)識(shí)別的方法和基于匹配識(shí)別的方法就成為目前點(diǎn)陣字符識(shí)別研究的熱點(diǎn)。文獻(xiàn)[3]提出了一種針對(duì)LED點(diǎn)陣文本檢測(cè)與識(shí)別的方法,考慮了復(fù)雜背景下的點(diǎn)陣字符識(shí)別,對(duì)本文有一定的參考價(jià)值,但是該方法的總體識(shí)別率不高。與以上方法不同的是,本文提出了一種基于模板匹配和支持向量機(jī)(Support Vector Machine,SVM)的組合識(shí)別方法。本文方法與傳統(tǒng)字符識(shí)別方法相比考慮了兩點(diǎn)實(shí)際問題:第一,充分利用點(diǎn)陣字符的離散性質(zhì),在包含其他非點(diǎn)陣字符信息的圖像中自動(dòng)定位出點(diǎn)陣字符區(qū)域,這對(duì)于復(fù)雜背景下的點(diǎn)陣字符識(shí)別具有一定意義。第二,考慮到點(diǎn)陣字符識(shí)別不同于一般的連續(xù)字符識(shí)別,單一方法對(duì)點(diǎn)陣字符識(shí)別率的提高效果甚微,故提出組合方法。
傳統(tǒng)的點(diǎn)陣字符識(shí)別方法,對(duì)于圖像中包含連續(xù)字符等情況考慮得較少,一般采集到的圖像只包含點(diǎn)陣字符信息,如文獻(xiàn)[1]和文獻(xiàn)[2],這不符合實(shí)際情況。本文考慮點(diǎn)陣字符的非連續(xù)性質(zhì),通過采用組合識(shí)別方法,不僅提高了字符定位的準(zhǔn)確性,而且提高了復(fù)雜環(huán)境下的字符識(shí)別率,且識(shí)別結(jié)果的魯棒性較好。實(shí)驗(yàn)結(jié)果表明:在保證實(shí)時(shí)性的前提下,該組合算法的識(shí)別率達(dá)到96.10%,基本滿足工業(yè)場(chǎng)合的應(yīng)用要求。
本文提出的組合點(diǎn)陣字符識(shí)別方法主要流程如圖1所示,以伊利盒裝純牛奶頂面的字符圖像為例進(jìn)行研究。首先讀取伊利盒裝純牛奶頂面的字符圖像,因?yàn)樽x取的圖像會(huì)有噪聲、非均勻光照、傾斜等問題,所以先要對(duì)其進(jìn)行預(yù)處理。然后,對(duì)預(yù)處理后的圖像進(jìn)行點(diǎn)陣字符的定位和分割。最后,分割后得到的圖像分別進(jìn)行灰度模板匹配判定和特征模板匹配判定,繼而得到兩個(gè)判定結(jié)果。若判定結(jié)果相同,則輸出字符識(shí)別結(jié)果;若判定結(jié)果相異,將這兩個(gè)結(jié)果送給SVM進(jìn)行判定,得到最終識(shí)別結(jié)果。下面介紹具體識(shí)別過程。
對(duì)采集到的伊利盒裝純牛奶頂面的RGB圖像轉(zhuǎn)換為灰度圖像,如圖2(a)所示。由于采集的圖像存在非均勻光照影響,則需要在灰度圖像上進(jìn)行底帽變換,以便獲得的二值圖像不丟失點(diǎn)陣字符信息。底帽變換定義為閉操作圖像減去圖像本身,即:
圖1 識(shí)別流程圖
其中,f為原始圖像,b為結(jié)構(gòu)元素,Bhat為經(jīng)過底帽變換后的圖像。
得到底帽變換后的圖像,如圖2(b)所示。然后,本文采用最大類間方差法(Otsu),得到二值圖像如圖2(c)所示。該算法是基于自適應(yīng)閾值的二值化方法,利用灰度特征將圖像劃分為目標(biāo)和背景。如果類間方差較大,則目標(biāo)與背景之間的差異更大。因此,使用Otsu算法在圖像二值化中獲得顯著效果[4]。圖2(c)中待識(shí)別點(diǎn)陣字符的白色像素為目標(biāo)像素。該二值圖像較好地保留了點(diǎn)陣字符的完整性,為后續(xù)的字符分割工作做好了準(zhǔn)備。
圖2 預(yù)處理圖像
對(duì)于得到的二值圖像,需要提取包含點(diǎn)陣字符信息的圖像區(qū)域,以便提取單個(gè)字符。分割的準(zhǔn)確性越高,字符識(shí)別效率就越高。本文圖像的分割按以下兩步進(jìn)行。
3.2.1 帶有噪聲的圖像行分割
一個(gè)點(diǎn)陣字符是由一個(gè)個(gè)離散小點(diǎn)組成的,具有離散性質(zhì),與一般的連續(xù)字符相比,相鄰的點(diǎn)陣之間有一定的空隙,如圖3紅色方框中的感興趣區(qū)域所示。一般采用的連通分量分析、滑動(dòng)窗口、基于水平或垂直投影等方法都不能直接用于分割點(diǎn)陣字符圖像,因?yàn)檫@些方法都是假定字符是具有整體性的。
文中提出使用點(diǎn)陣字符的離散性質(zhì)來解決其定位及分割問題。如圖3所示,圖像中有點(diǎn)陣字符、連續(xù)字符和噪聲,這里將非點(diǎn)陣字符部分視為噪聲。考慮點(diǎn)陣字符是由一個(gè)個(gè)離散小點(diǎn)按照一定規(guī)律排列而成的字符,可以看到,組成點(diǎn)陣字符的離散小點(diǎn)的連通面積在小噪聲連通面積S1和連續(xù)字符連通面積S2之間。故將連通面積在(S1,S2)之外的像素進(jìn)行刪除,得到的圖像如圖4所示。這一步操作可以減少提取目標(biāo)像素點(diǎn)時(shí)的噪聲影響。
圖3 點(diǎn)陣字符區(qū)域
圖4 進(jìn)行連通域處理后的圖像
如圖4所示,非目標(biāo)像素中也有一些具有與點(diǎn)陣字符類似的區(qū)域。因此,需要進(jìn)一步處理,以分割出最終點(diǎn)陣字符區(qū)域。因?yàn)槿魏巫址ǔ6际窃谒椒较蛏险归_,所以先使用3×24的水平結(jié)構(gòu)元素對(duì)二值圖像進(jìn)行膨脹。這樣,白色像素區(qū)域就會(huì)連接起來,形成多個(gè)連通域,如圖5所示。較小的矩形區(qū)域?qū)儆诜屈c(diǎn)陣字符信息,是需要?jiǎng)h除的噪聲。然后,對(duì)圖5中的矩形區(qū)域進(jìn)行連通域面積計(jì)算,連通域面積較高的兩個(gè)區(qū)域作為字符點(diǎn)陣區(qū)域,其他區(qū)域可視為噪聲刪除,如圖6所示。
圖5 膨脹連通域圖像
圖6 兩個(gè)較大連通域
考慮牛奶盒上的點(diǎn)陣字符在打印過程中會(huì)發(fā)生隨機(jī)角度傾斜的現(xiàn)象,如圖7紅色方框中的點(diǎn)陣字符所示。對(duì)于此類圖像,在找到兩個(gè)連通域面積最高的區(qū)域后,采用Hough變換[5]進(jìn)行直線傾斜角度計(jì)算,然后采用雙線性插值算法將傾斜的點(diǎn)陣字符區(qū)域矯正為水平方向。接著,采用兩個(gè)連通區(qū)域的最小矩形的方法,找到這兩個(gè)連通域的邊界框。最后,使用計(jì)算出的邊界框從圖2(c)中裁剪包含完整點(diǎn)陣字符的原始二值點(diǎn)陣字符,得到行分割點(diǎn)陣字符圖像,如圖8所示。
圖7 點(diǎn)陣字符傾斜
圖8 點(diǎn)陣字符行分割圖像
3.2.2 字符分割
經(jīng)過以上處理步驟以后,可以得到兩行待識(shí)別的點(diǎn)陣字符圖像。由于點(diǎn)陣字符的離散性,及在打印過程中點(diǎn)陣字符會(huì)出現(xiàn)少量點(diǎn)缺失、少量墨水滲出等現(xiàn)象,這些會(huì)對(duì)字符正確識(shí)別產(chǎn)生影響,因此需要將得到的圖像進(jìn)行形態(tài)學(xué)處理。形態(tài)學(xué)的基本思想就是用具有一定形態(tài)的結(jié)構(gòu)元素,去度量和提取圖像中的對(duì)應(yīng)形狀,以達(dá)到對(duì)圖像分析和識(shí)別的目的[6]。本文實(shí)驗(yàn)中使用3×1的垂直元素來膨脹圖8點(diǎn)陣字符行分割后的圖像,以增加字符質(zhì)量。
然后,使用垂直投影法對(duì)膨脹后的行分割圖像進(jìn)行單個(gè)字符分割。垂直投影可以簡(jiǎn)單地定義為一個(gè)列向量,包含每行中存在的白色像素的數(shù)量,即:
圖9展示了圖2(a)中點(diǎn)陣字符行分割后膨脹的垂直投影。
圖9 行字符垂直投影
可以發(fā)現(xiàn)字符之間用空格分隔,因此該區(qū)域中的垂直投影為0。從圖9中可以看到有11個(gè)谷,利用這種特性進(jìn)行逐個(gè)字符分割,得到10個(gè)單個(gè)字符。分割后得到的字符大小不一,將其統(tǒng)一大小為42×24,如圖10所示。
圖10 分割后單個(gè)字符圖像
3.3.1 字符庫(kù)的建立
模板匹配是基于測(cè)試圖像和模板圖像之間的某些相似性來識(shí)別字符的方法。首先為每個(gè)類別建立標(biāo)準(zhǔn)模板庫(kù),模板的數(shù)量可以是一個(gè)或多個(gè),這樣可以增加模板特征的差異性。然后將測(cè)試字符與每個(gè)類別的標(biāo)準(zhǔn)模板進(jìn)行比較,以獲得基于相似距離或相關(guān)系數(shù)的最佳匹配模板[7]。本文的模板庫(kù)是提取實(shí)驗(yàn)中分割后得到的單個(gè)字符圖像,其大小也為42×24,如圖10所示部分字符模板庫(kù)。共收集約500個(gè)字符,分為14類:數(shù)字“0~9”,特殊字符“:”,字母“A~C”。
3.3.2 基于灰度的模板匹配判定方法
基于灰度的模板匹配方法是采用統(tǒng)計(jì)相關(guān)的方法來求待識(shí)別字符和模板庫(kù)字符的匹配相關(guān)程度,通過相關(guān)函數(shù)R確定[8],將待識(shí)別字符和存儲(chǔ)在模板庫(kù)中的字符進(jìn)行如式(3)的計(jì)算。選擇具有最相關(guān)值的字符作為該字符的最佳匹配字符,得到識(shí)別結(jié)果Out1。
3.3.3 基于特征的模板匹配判定方法
基于特征的模板匹配方法,一般提取的特征有點(diǎn)特征、線特征等,將這些特征與模板庫(kù)中的字符進(jìn)行特征匹配,得出識(shí)別結(jié)果。文中的實(shí)驗(yàn)是將字符分割成由40個(gè)網(wǎng)格組成的形式,橫向上分為8份,縱向上分為5份,取每個(gè)網(wǎng)格中字符像素的個(gè)數(shù)即白色像素的個(gè)數(shù),將所有值排成一列形成40維[9]特征向量,如圖11所示。根據(jù)網(wǎng)格特征判定待識(shí)別字符,得到識(shí)別結(jié)果Out2。
圖11 網(wǎng)格特征
支持向量機(jī)是一種監(jiān)督機(jī)器學(xué)習(xí)算法,能找到全局最優(yōu)解,很好地避免了過擬合的發(fā)生[10],主要用于模式分類和非線性回歸。本文采用支持向量分類模型(CSVM for Classification,C-SVC),它是一種比較常見的二分類支持向量機(jī)模型。具體形式如下:
(1)設(shè)已知訓(xùn)練集:
其中,xi∈Rn,yi∈{1,-1},i=1,2,…,l;l為訓(xùn)練樣本總數(shù);n為樣本空間維數(shù)。
(2)選取適當(dāng)?shù)暮撕瘮?shù)K(x,x′)和適當(dāng)?shù)膮?shù)C,構(gòu)造并求解最優(yōu)化問題:
使得:
得到最優(yōu)解:α?=(α。本文核函數(shù)采用徑向基函數(shù):K(x,x′)=exp(-γ‖ x-x′‖2),γ>0。
(3)選取α?的一個(gè)正分量0<α?i<C,并據(jù)此計(jì)算閾值:
(4)構(gòu)造決策函數(shù):
SVM的二分類模型是先制作訓(xùn)練集,并將每個(gè)樣本對(duì)應(yīng)的類別號(hào)做成類別集,輸入訓(xùn)練樣本和類別號(hào),進(jìn)行SVM訓(xùn)練,得到每種組合的SVM的二分類模型。在基于灰度模板匹配和特征模板匹配判定結(jié)果相異情況下,即Out1≠Out2,將相異識(shí)別結(jié)果送給SVM進(jìn)行識(shí)別。SVM將待識(shí)別字符分類為最接近的匹配類,并返回類標(biāo)簽,為最終識(shí)別結(jié)果Out。
輸入:原始采集圖像In。
輸出:原始圖像中每一個(gè)待識(shí)別點(diǎn)陣字符的識(shí)別結(jié)果Out。
(1)將原始采集圖像In進(jìn)行灰度化、底帽變換、Otsu二值化處理,得到預(yù)處理后的圖像I1,其中目標(biāo)像素為白色像素點(diǎn)。
(2)將I1圖像中聯(lián)通面積小于S1且大于S2的噪聲去除,得到圖像I2。
(3)用3×24結(jié)構(gòu)元素對(duì)圖像I2進(jìn)行膨脹處理,取出兩個(gè)連通域面積較大部分的圖像I3。
(4)采用Hough變換進(jìn)行傾斜角度α計(jì)算,并給定閾值α,若|α|>θ,則進(jìn)行傾斜校正,得到圖像I4。
(5)計(jì)算I4圖像中兩個(gè)聯(lián)通面積的矩形邊界坐標(biāo),按照坐標(biāo)位置從I1圖像中分割出兩行點(diǎn)陣字符I5、I6。
(6)采用垂直投影法,將行字符I5、I6進(jìn)行單個(gè)字符切割,得到一個(gè)個(gè)的單個(gè)字符。
(7)將單個(gè)字符采用基于灰度的模板匹配算法進(jìn)行識(shí)別,得到識(shí)別結(jié)果Out1。
(8)將單個(gè)字符采用基于特征的模板匹配算法進(jìn)行識(shí)別,得到識(shí)別結(jié)果Out2。
(9)若Out1≠Out2,則將Out1和Out2送給SVM進(jìn)行判定,得到最終識(shí)別結(jié)果Out。若Out1=Out2,則識(shí)別出單個(gè)字符。
如圖12所示的識(shí)別結(jié)果,藍(lán)色方框內(nèi)的字符是識(shí)別結(jié)果Out1,綠色方框內(nèi)的字符是識(shí)別結(jié)果Out2,紅色方框內(nèi)的為最終識(shí)別結(jié)果Out。通過觀察可以看到,一般正常點(diǎn)陣字符可以得到正確識(shí)別,例如數(shù)字“2、1、8”等。但數(shù)字0,由于在噴碼過程中出現(xiàn)點(diǎn)陣字符少量的點(diǎn)缺失,采用本文方法,先使用基于灰度的模板匹配識(shí)別結(jié)果為“C”,再使用基于特征的模板匹配識(shí)別結(jié)果為“0”,最后使用SVM識(shí)別結(jié)果為“0”,做出正確識(shí)別。這表明本文方法對(duì)點(diǎn)陣字符圖像識(shí)別的魯棒性較強(qiáng)。
對(duì)于模板匹配算法而言,假設(shè)圖像尺寸為n×n,那么循環(huán)的次數(shù)由圖像的大小決定,對(duì)整幅圖像的所有像素完成一次遍歷,故需要執(zhí)行n×n次循環(huán)操作,總體的算法復(fù)雜度為O(n2)。標(biāo)準(zhǔn)支持向量機(jī)的時(shí)間復(fù)雜度為O(n3)[11]。故本文提出的算法時(shí)間復(fù)雜度是:
圖12 識(shí)別結(jié)果
由上式可以看出,本文提出的組合算法相比于目前常用的單一模板匹配算法復(fù)雜度略高,相比于SVM算法并沒有增加其時(shí)間復(fù)雜度,且本文提出的算法識(shí)別準(zhǔn)確率均高于這兩種單一算法。
本文所有算法都是使用Matlab R2016a進(jìn)行仿真實(shí)驗(yàn)的。不同牛奶外包裝盒點(diǎn)陣字符設(shè)計(jì)規(guī)則不同,但是一般的規(guī)律為第一行字符為產(chǎn)品的生產(chǎn)日期和生產(chǎn)流水號(hào),第二行字符為生產(chǎn)時(shí)間及序號(hào)。生產(chǎn)日期和生產(chǎn)時(shí)間為“0~9”和特殊字符“:”,共11類字符。由于生產(chǎn)廠商不同,生產(chǎn)流水號(hào)則不同,一般為“A~C”中任意字母。
實(shí)驗(yàn)中采集150幅牛奶外包裝盒頂面圖像,每個(gè)圖像點(diǎn)陣字符共20個(gè)字符左右,共計(jì)3 000個(gè)字符。這150幅圖像,包含外包裝盒點(diǎn)陣字符在不同背景、不同角度傾斜及拍攝到的原始圖像具有不同尺寸等情況下收集,如圖13所示。
圖13 測(cè)試圖像部分示例
4.2.1 點(diǎn)陣字符定位結(jié)果對(duì)比
點(diǎn)陣字符的定位是實(shí)現(xiàn)點(diǎn)陣字符正確識(shí)別的關(guān)鍵步驟。目前,字符定位的主要方法有:基于投影的方法、基于邊緣檢測(cè)的定位方法、基于數(shù)學(xué)形態(tài)學(xué)與連通域的定位方法等[11]。本文利用Matlab R2016a軟件按照?qǐng)D14所示的流程圖進(jìn)行點(diǎn)陣字符定位。
圖14 點(diǎn)陣字符定位方法流程圖
圖15是本文方法與其他兩種定位方法的定位結(jié)果對(duì)比圖。從圖15中可以觀察出,第二列是文獻(xiàn)[12]的定位結(jié)果,定位圖像中帶有噪聲,且定位位置錯(cuò)誤。第三列是文獻(xiàn)[13]的定位結(jié)果,結(jié)果中帶入了其他不需要的連續(xù)字符和噪聲。以上兩種方法均給下一步進(jìn)行點(diǎn)陣字符的準(zhǔn)確識(shí)別帶來困難。第四列是本文方法的定位結(jié)果,定位準(zhǔn)確且未帶有噪聲。
圖15 點(diǎn)陣字符定位結(jié)果對(duì)比
對(duì)于本文實(shí)驗(yàn)中所有點(diǎn)陣字符的定位效果,使用定位準(zhǔn)確性來進(jìn)行評(píng)價(jià)。
由圖16的對(duì)比結(jié)果可以看出,采用本文提出的定位方法,定位準(zhǔn)確性均高于其他兩種方法。因此,本文提出的利用點(diǎn)陣字符離散性質(zhì)的定位方法能夠在復(fù)雜背景下很好地自動(dòng)定位到點(diǎn)陣字符位置,定位準(zhǔn)確性高。
圖16 不同方法字符定位準(zhǔn)確性比較圖
4.2.2 點(diǎn)陣字符識(shí)別準(zhǔn)確率對(duì)比
為了驗(yàn)證本文組合識(shí)別方法的有效性,采用文獻(xiàn)[14]和文獻(xiàn)[15]的字符識(shí)別方法,與本文方法進(jìn)行對(duì)比,字符識(shí)別準(zhǔn)確率如圖17所示。
圖17 不同方法的字符識(shí)別準(zhǔn)確率比較圖
前兩種算法都僅考慮了連續(xù)字符的特征,而本文采用的三種識(shí)別方法的組合方法,綜合考慮了點(diǎn)陣字符的離散性質(zhì)及經(jīng)過形態(tài)學(xué)處理以后的字符的連續(xù)性質(zhì),從而有效地提高了整體識(shí)別率。
4.2.3 運(yùn)算耗時(shí)比較
運(yùn)算耗時(shí)通常也是評(píng)價(jià)算法優(yōu)劣性的一個(gè)重要指標(biāo)?,F(xiàn)將本文方法與文獻(xiàn)[6]提出的方法進(jìn)行對(duì)比,其對(duì)比結(jié)果如表1所示。實(shí)驗(yàn)表明,本文方法相比文獻(xiàn)[6]的方法在識(shí)別22個(gè)字符時(shí),識(shí)別時(shí)間節(jié)省了約40 ms。文獻(xiàn)[6]采用4次不同結(jié)構(gòu)元素閉運(yùn)算填寫細(xì)小空洞,而本文采用了一個(gè)垂直元素1次填寫細(xì)小空洞,故而節(jié)約了一定時(shí)間。
表1 兩種識(shí)別方法識(shí)別耗時(shí)比較
本文提出了一種基于模板匹配和SVM組合的點(diǎn)陣字符識(shí)別方法,研究了復(fù)雜背景下點(diǎn)陣字符的識(shí)別問題。相比于傳統(tǒng)的字符定位和識(shí)別方法,本文通過考慮點(diǎn)陣字符的離散性質(zhì)提高了點(diǎn)陣字符的定位準(zhǔn)確性,通過組合識(shí)別的方法不僅提高了點(diǎn)陣字符的識(shí)別準(zhǔn)確率,并且具有較高的字符識(shí)別魯棒性,研究結(jié)果對(duì)保證食品與藥品安全具有較好的應(yīng)用價(jià)值。