林冬婷,程 洋,歐 陽(yáng),李柏林,尹可鑫
(西南交通大學(xué) 機(jī)械工程學(xué)院,成都 610031)
標(biāo)簽作為包裝產(chǎn)業(yè)中評(píng)判商品是否合格的重要載體,包含著消費(fèi)者應(yīng)知的大量信息,如生產(chǎn)日期、商品成份和生產(chǎn)批號(hào)等。噴碼機(jī)因其靈活方便的優(yōu)點(diǎn),被廣泛應(yīng)用于標(biāo)簽中字符的制作。噴碼機(jī)通過(guò)與計(jì)算機(jī)的信息交互獲取產(chǎn)品的生產(chǎn)信息,再將信息以噴點(diǎn)形式噴印在產(chǎn)品標(biāo)簽中[1]。為了確保產(chǎn)品生產(chǎn)的合格率,需要對(duì)產(chǎn)品的標(biāo)簽進(jìn)行檢測(cè)。傳統(tǒng)的標(biāo)簽檢測(cè)依靠人工完成,存在檢測(cè)速度慢、主觀性強(qiáng)、誤檢率高等缺陷。因此,迫切需要一種高效的自動(dòng)檢測(cè)技術(shù)。
針對(duì)點(diǎn)陣字符的檢測(cè),國(guó)內(nèi)外學(xué)者提出了一些檢測(cè)算法。文獻(xiàn)[2~4]中利用形態(tài)學(xué)操作將單個(gè)點(diǎn)陣字符筆畫(huà)連接起來(lái)形成連通域,再用投影法進(jìn)行字符分割[5,6]。該類(lèi)方法對(duì)于連通域字符的分割具有一定的有效性,對(duì)于彎曲變形的點(diǎn)陣字符存在誤分割率高、效率低的問(wèn)題。文獻(xiàn)[7]提出了一種基于HALCON的點(diǎn)陣字符識(shí)別,算法結(jié)構(gòu)簡(jiǎn)便,但存在字符定位不準(zhǔn)確,識(shí)別率低的問(wèn)題。文獻(xiàn)[8~10]提出了基于滑動(dòng)窗口的字符提取方法,能夠克服字符變形及粘連的影響,但存在速度慢且分割準(zhǔn)確率不高的問(wèn)題。
因此,為解決點(diǎn)陣字符因光照不均、字符彎曲導(dǎo)致的字符分割準(zhǔn)確率低的問(wèn)題,本文針對(duì)多種曝光度下存在彎曲變形的點(diǎn)陣字符提出了一種基于噴點(diǎn)融合特征的SVM點(diǎn)陣字符分割方法。首先,利用圖像的灰度特點(diǎn),提出了一種自適應(yīng)二值化方法,增強(qiáng)了圖像中的目標(biāo)信息;然后,利用噴點(diǎn)的幾何先驗(yàn)提取噴點(diǎn)的跳變特征和投影特征,并級(jí)聯(lián)得到融合特征;接著,建立基于SVM的字符分割模型對(duì)字符進(jìn)行分割;最后,采用ANN對(duì)分割得到的字符進(jìn)行識(shí)別。
本文以某食品包裝盒頂部的生產(chǎn)日期作為研究對(duì)象,提出了一種基于噴點(diǎn)融合特征的SVM點(diǎn)陣字符分割方法,其整體框架流程如圖1所示。首先,通過(guò)自適應(yīng)二值化處理,增強(qiáng)圖像中的目標(biāo)信息。然后,提取感興趣區(qū)域,獲得字符塊,并對(duì)字符塊中的點(diǎn)陣字符是否發(fā)生彎曲進(jìn)行判斷。若存在彎曲,則通過(guò)拆分與重組得到單行字符塊;若沒(méi)有彎曲,則根據(jù)水平投影直方圖的波谷位置分割得到單行字符塊。接著,建立基于SVM的字符分割模型,得到單個(gè)字符的分割結(jié)果。最后,通過(guò)ANN識(shí)別,得到最終的識(shí)別結(jié)果。
圖1 本文框架流程圖
光照不均和字符彎曲等因素會(huì)給字符的分割帶來(lái)一定的困難[11],為克服以上干擾對(duì)字符分割的影響,本文提出了一種結(jié)合噴點(diǎn)融合特征的SVM字符分割方法。采用結(jié)合圖像灰度信息的自適應(yīng)二值化方法,增強(qiáng)圖像中的目標(biāo)信息,克服光照不均帶來(lái)的影響。采用一種字符拆分與重組方法,克服字符彎曲帶來(lái)的問(wèn)題。
為增強(qiáng)圖像中的字符特征,同時(shí)去除噪點(diǎn)等干擾因素的影響,需對(duì)灰度圖像進(jìn)行適當(dāng)?shù)念A(yù)處理[12]。圖像的灰度均值信息反映了圖像的光照強(qiáng)度,均值越大則表明光照程度越強(qiáng),圖像也越亮。因此,為增強(qiáng)算法的魯棒性,首先獲取圖像的灰度均值Mean,然后將它應(yīng)用于自適應(yīng)閾值函數(shù)中,對(duì)灰度圖像進(jìn)行自適應(yīng)二值化處理。自適應(yīng)閾值函數(shù)是依據(jù)圖像不同區(qū)域的亮度分布計(jì)算其局部閾值C,本文在此基礎(chǔ)上,結(jié)合灰度均值信息,對(duì)其進(jìn)行改進(jìn),如式(1)所示。自適應(yīng)二值化的結(jié)果如圖2(b)所示。
圖2 圖像的自適應(yīng)二值化
其中:τ為像素灰度均值的懲罰項(xiàng),設(shè)置為20。
為了能準(zhǔn)確分割出單個(gè)字符,首先需要提取圖像中的感興趣字符區(qū)域。感興趣區(qū)域的定位越準(zhǔn)確,則包含的目標(biāo)信息越完整,識(shí)別可用的特征越可靠。
利用水平投影法將二值圖像進(jìn)行水平投影,統(tǒng)計(jì)每行的白色像素點(diǎn)個(gè)數(shù)HP(i),如圖3(b)所示。由于點(diǎn)陣字符存在彎曲變形,因此字符的高度在一定范圍之間變化。首先通過(guò)水平投影直方圖得到行字符投影的波峰波谷信息,然后依據(jù)點(diǎn)陣字符的高度范圍先驗(yàn)定位出字符所在的區(qū)域,如圖3(c)所示。
圖3 定位字符區(qū)域
由于字符的彎曲會(huì)造成字符的分割不完整,因此,在單行字符的分割之前,需要對(duì)字符是否存在變形進(jìn)行判斷。判斷條件為:兩行字符塊中間區(qū)域的波谷投影值LH>P(P為閾值)時(shí),則字符存在彎曲變形;否則,不存在變形。對(duì)于,變形的字符,采用拆分重組的方法進(jìn)行分割,如流程圖4所示。單行字符塊的分割結(jié)果如圖5所示。
圖4 單行字符塊分割流程圖
圖5 彎曲變形字符塊的分割結(jié)果
傳統(tǒng)的連通字符分割方法包括模板匹配法[13],投影法[14]和滴水算法[15]等。對(duì)于由多個(gè)噴點(diǎn)構(gòu)成的點(diǎn)陣字符而言,由于不具有一般字符的連通性,因此使用單一的字符分割方法會(huì)產(chǎn)生誤分割的情況,最終無(wú)法獲取完整的字符信息。為克服點(diǎn)陣字符的誤分割問(wèn)題,本文以點(diǎn)陣字符中噴點(diǎn)的幾何先驗(yàn)為特征,利用單個(gè)噴點(diǎn)的最大直徑信息對(duì)單個(gè)噴點(diǎn)字符進(jìn)行分割。
2.4.1 獲取噴點(diǎn)的跳變特征
將二值化圖像中的像素值表示為二維矩陣src966×1296,矩陣中的元素只包含0和255。其中:0表示背景,255表示目標(biāo)。本文利用基于二值編碼的跳變法,統(tǒng)計(jì)每一列黑白像素的變化。
1)定位各列噴點(diǎn)的位置
統(tǒng)計(jì)矩陣src各列元素中值為255的位置,存儲(chǔ)到列向量An×1(j)中,An×1(j)中的元素為字符區(qū)域位置,其中n為第j列字符區(qū)域包含的像素點(diǎn)。
2)定位各列噴點(diǎn)的邊界
通過(guò)跳變法定位各列噴點(diǎn)的邊界。具體為:當(dāng)Aj(k+1)-Aj(k)≠1(其中Aj(k)表示第j個(gè)列向量中第k個(gè)元素的坐標(biāo)),則A(k),A(k+1)表示坐標(biāo)為字符的邊界位置。最終獲取每列噴點(diǎn)的上下邊界位置,并存入向量Bm×1(j)(m=2,4,6,…)中,m為每列噴點(diǎn)邊界點(diǎn)個(gè)數(shù)。
3)獲取各列噴點(diǎn)的跳變特征
根據(jù)D=Bj(p+1)?Bj(p)(p= 0,1,...,m? 1)計(jì)算每列噴點(diǎn)的高度,噴點(diǎn)的最大徑向尺寸為Dmax,以噴點(diǎn)圓心為中心,離中心越遠(yuǎn),則D的值越小。為克服小噪點(diǎn)的影響,設(shè)定每列噴點(diǎn)的高度閾值為T(mén)。當(dāng)D 2.4.2 獲取噴點(diǎn)的垂直投影特征 對(duì)單行字符塊進(jìn)行垂直投影,獲取垂直投影直方圖,直方圖每列的高度H表示噴點(diǎn)所占像素個(gè)數(shù)的總和。設(shè)存儲(chǔ)投影特征的向量為P(j)(j=0,1,…,1295),若H(j)>10,則令P(j)=1,表示該列為字符區(qū)域;否則P(j)=0,表示背景區(qū)域。最終得到點(diǎn)陣字符的投影特征。 2.4.3 跳變特征與投影特征的融合 跳變特征向量Cx×1(j)中包含每列噴點(diǎn)的跳變個(gè)數(shù),投影特征向量P(j)中包含字符和背景的信息。將Cx×1(j)和P(j)進(jìn)行級(jí)聯(lián),得到矩陣R2×1296。然后以步長(zhǎng)step=1,依次獲取R2×1296中的5列元素作為一個(gè)融合特征,最后遍歷整個(gè)矩陣,得到1292個(gè)融合特征。 2.4.4 基于融合特征的SVM字符分割 支持向量機(jī)(Support Vector Machine,SVM)是一種與學(xué)習(xí)算法有關(guān)的監(jiān)督學(xué)習(xí)模型,可以應(yīng)用于分析數(shù)據(jù)、識(shí)別模式、分類(lèi)和回歸分析[16]。本文通過(guò)建立SVM二分類(lèi)模型分割以獲取單個(gè)字符。將噴點(diǎn)的融合特征作為訓(xùn)練數(shù)據(jù)集。類(lèi)別集中包含0和1,0表示背景,1表示目標(biāo)。選用徑向基函數(shù)作為核函數(shù)對(duì)訓(xùn)練集進(jìn)行訓(xùn)練,得到SVM的模型參數(shù)。將單行字符塊的融合特征作為測(cè)試集輸入訓(xùn)練好的SVM模型中,得到最終的分割結(jié)果,具體分割流程如圖6所示。分割結(jié)果如圖7所示。其中,圖7(a)和圖7(c)中的灰色表示字符區(qū)域,白色為背景區(qū)域,其對(duì)應(yīng)的分割結(jié)果如圖7(b)和圖7(d)所示。 圖6 SVM字符分割流程圖 圖7 字符分割樣本圖 從圖7中的分割結(jié)果可以看出,使用本文分割方法分割點(diǎn)陣字符,能有效提取圖像中的字符信息。 為獲取圖像中的字符信息,需要對(duì)分割得到的單個(gè)字符進(jìn)行識(shí)別。常用于字符識(shí)別的方法包括ANN法[17,18]、模板匹配法[13,19]及特征匹配法[4,20]等,本文采用ANN的方法對(duì)點(diǎn)陣字符進(jìn)行識(shí)別。為提高字符的識(shí)別效率,首先對(duì)字符進(jìn)行歸一化處理,歸一化尺寸為30×60,使得每個(gè)字符的尺寸一致。將分割后的單個(gè)字符進(jìn)行分類(lèi),建立完整的字符庫(kù)。本文共有12類(lèi)不同的字符,包括數(shù)字0~9,字母C和L。 ANN 模型的參數(shù)設(shè)置為:輸入層的節(jié)點(diǎn)數(shù)為1800;輸出的結(jié)果為預(yù)測(cè)字符的類(lèi)別,因此將輸出層的節(jié)點(diǎn)數(shù)設(shè)置為12; 將隱藏層層數(shù)按經(jīng)驗(yàn)式(2)進(jìn)行設(shè)置。最大迭代次數(shù)為50000次,收斂閾值為0.001,誤差設(shè)為0.01。通過(guò)訓(xùn)練集數(shù)據(jù)訓(xùn)練得到ANN網(wǎng)絡(luò)各層連接權(quán)值,并對(duì)測(cè)試集中的單個(gè)字符進(jìn)行識(shí)別,結(jié)果如圖8所示。 圖8 識(shí)別結(jié)果 其中:n為輸入層節(jié)點(diǎn)數(shù),j為輸出層節(jié)點(diǎn)數(shù),?為1~10間的常數(shù),本文取8,因此,隱藏層為50。 文中選用某食品包裝盒頂部的生產(chǎn)日期圖像作為實(shí)驗(yàn)樣本,如圖9(a)所示。其中,第一行噴點(diǎn)信息為產(chǎn)商號(hào)和產(chǎn)品生產(chǎn)的年月日,第二行噴點(diǎn)信息為時(shí)分秒以及流水號(hào),每行均由8個(gè)數(shù)字和一個(gè)字母組成。共采集了10000張大小均為1296×966的圖像作為數(shù)據(jù)集R,R包含了光照不均、字符彎曲和曝光度不同等多種干擾因素的字符圖像。選取分割的每類(lèi)字符各1000個(gè)作為訓(xùn)練集S。以O(shè)pencv3.0作為實(shí)驗(yàn)平臺(tái)進(jìn)行仿真實(shí)驗(yàn)。 4.2.1 點(diǎn)陣字符預(yù)處理實(shí)驗(yàn)結(jié)果對(duì)比 點(diǎn)陣字符的預(yù)處理是字符準(zhǔn)確分割的重要前提。為去除噪聲等干擾信息,采用的字符預(yù)處理方法主要有線性濾波、非線性濾波、形態(tài)學(xué)濾波以及閾值化等。本文方法采用基于灰度均值的自適應(yīng)閾值算法對(duì)圖像進(jìn)行預(yù)處理,結(jié)果對(duì)比如圖9所示。 從圖9中的實(shí)驗(yàn)結(jié)果可以看出:Otsu采用了全局自適應(yīng)閾值進(jìn)行圖像二值化處理,未考慮圖像的灰度均值,因此無(wú)法完整保留圖像中的點(diǎn)陣字符區(qū)域,如圖9(b)所示;膨脹細(xì)化算法的二值圖像產(chǎn)生了多余的噪點(diǎn),導(dǎo)致不同字符粘連在一起,無(wú)法有效的分割出單個(gè)字符,如圖9(c)所示;而本文算法在Otsu算法的基礎(chǔ)上,充分考慮了圖像不同曝光值下的灰度均值特性,其二值化結(jié)果不僅有效的濾除了噪聲,還增強(qiáng)了點(diǎn)陣字符信息,如圖9(d)所示。 率是提高字符識(shí)別準(zhǔn)確率的重要前提。相較于上述三種字符分割算法下的ANN識(shí)別,本文分割算法分割的單個(gè)字符能有效保留點(diǎn)陣字符區(qū)域且不產(chǎn)生額外的干擾,對(duì)點(diǎn)陣字符的分割準(zhǔn)確率較高,最終的ANN識(shí)別準(zhǔn)確率明顯高于其他對(duì)比算法,達(dá)到了98.97%。 本文針對(duì)因光照不均、彎曲變形等導(dǎo)致的點(diǎn)陣字符識(shí)別率較低的問(wèn)題,提出了一種基于噴點(diǎn)融合特征的點(diǎn)陣字符分割方法。首先提出結(jié)合圖像灰度均值的自適應(yīng)二值化算法,有效增強(qiáng)了圖像中的點(diǎn)陣字符信息;然后充分考慮噴點(diǎn)的跳變特征與投影特征以完成基于SVM的單個(gè)字符分割建模,使字符的分割不再局限于傳統(tǒng)分割方法中采用單一特征的瓶頸;最后采用ANN模型識(shí)別分割得到的單個(gè)字符。實(shí)驗(yàn)結(jié)果表明,相比于其他算法,本文提出的方法具有自適應(yīng)程度高、魯棒性強(qiáng)且準(zhǔn)確率高的優(yōu)點(diǎn),對(duì)點(diǎn)陣字符的分割率和識(shí)別率分別達(dá)到了99.92%和98.97%。3 基于ANN的點(diǎn)陣字符識(shí)別
4 實(shí)驗(yàn)與結(jié)果分析
4.1 實(shí)驗(yàn)數(shù)據(jù)
4.2 實(shí)驗(yàn)結(jié)果對(duì)比與分析
5 結(jié)語(yǔ)