林冬婷,程 洋,歐 陽,李柏林,尹可鑫
(西南交通大學 機械工程學院,成都 610031)
標簽作為包裝產業中評判商品是否合格的重要載體,包含著消費者應知的大量信息,如生產日期、商品成份和生產批號等。噴碼機因其靈活方便的優點,被廣泛應用于標簽中字符的制作。噴碼機通過與計算機的信息交互獲取產品的生產信息,再將信息以噴點形式噴印在產品標簽中[1]。為了確保產品生產的合格率,需要對產品的標簽進行檢測。傳統的標簽檢測依靠人工完成,存在檢測速度慢、主觀性強、誤檢率高等缺陷。因此,迫切需要一種高效的自動檢測技術。
針對點陣字符的檢測,國內外學者提出了一些檢測算法。文獻[2~4]中利用形態學操作將單個點陣字符筆畫連接起來形成連通域,再用投影法進行字符分割[5,6]。該類方法對于連通域字符的分割具有一定的有效性,對于彎曲變形的點陣字符存在誤分割率高、效率低的問題。文獻[7]提出了一種基于HALCON的點陣字符識別,算法結構簡便,但存在字符定位不準確,識別率低的問題。文獻[8~10]提出了基于滑動窗口的字符提取方法,能夠克服字符變形及粘連的影響,但存在速度慢且分割準確率不高的問題。
因此,為解決點陣字符因光照不均、字符彎曲導致的字符分割準確率低的問題,本文針對多種曝光度下存在彎曲變形的點陣字符提出了一種基于噴點融合特征的SVM點陣字符分割方法。首先,利用圖像的灰度特點,提出了一種自適應二值化方法,增強了圖像中的目標信息;然后,利用噴點的幾何先驗提取噴點的跳變特征和投影特征,并級聯得到融合特征;接著,建立基于SVM的字符分割模型對字符進行分割;最后,采用ANN對分割得到的字符進行識別。
本文以某食品包裝盒頂部的生產日期作為研究對象,提出了一種基于噴點融合特征的SVM點陣字符分割方法,其整體框架流程如圖1所示。首先,通過自適應二值化處理,增強圖像中的目標信息。然后,提取感興趣區域,獲得字符塊,并對字符塊中的點陣字符是否發生彎曲進行判斷。若存在彎曲,則通過拆分與重組得到單行字符塊;若沒有彎曲,則根據水平投影直方圖的波谷位置分割得到單行字符塊。接著,建立基于SVM的字符分割模型,得到單個字符的分割結果。最后,通過ANN識別,得到最終的識別結果。

圖1 本文框架流程圖
光照不均和字符彎曲等因素會給字符的分割帶來一定的困難[11],為克服以上干擾對字符分割的影響,本文提出了一種結合噴點融合特征的SVM字符分割方法。采用結合圖像灰度信息的自適應二值化方法,增強圖像中的目標信息,克服光照不均帶來的影響。采用一種字符拆分與重組方法,克服字符彎曲帶來的問題。
為增強圖像中的字符特征,同時去除噪點等干擾因素的影響,需對灰度圖像進行適當的預處理[12]。圖像的灰度均值信息反映了圖像的光照強度,均值越大則表明光照程度越強,圖像也越亮。因此,為增強算法的魯棒性,首先獲取圖像的灰度均值Mean,然后將它應用于自適應閾值函數中,對灰度圖像進行自適應二值化處理。自適應閾值函數是依據圖像不同區域的亮度分布計算其局部閾值C,本文在此基礎上,結合灰度均值信息,對其進行改進,如式(1)所示。自適應二值化的結果如圖2(b)所示。

圖2 圖像的自適應二值化

其中:τ為像素灰度均值的懲罰項,設置為20。
為了能準確分割出單個字符,首先需要提取圖像中的感興趣字符區域。感興趣區域的定位越準確,則包含的目標信息越完整,識別可用的特征越可靠。
利用水平投影法將二值圖像進行水平投影,統計每行的白色像素點個數HP(i),如圖3(b)所示。由于點陣字符存在彎曲變形,因此字符的高度在一定范圍之間變化。首先通過水平投影直方圖得到行字符投影的波峰波谷信息,然后依據點陣字符的高度范圍先驗定位出字符所在的區域,如圖3(c)所示。

圖3 定位字符區域
由于字符的彎曲會造成字符的分割不完整,因此,在單行字符的分割之前,需要對字符是否存在變形進行判斷。判斷條件為:兩行字符塊中間區域的波谷投影值LH>P(P為閾值)時,則字符存在彎曲變形;否則,不存在變形。對于,變形的字符,采用拆分重組的方法進行分割,如流程圖4所示。單行字符塊的分割結果如圖5所示。

圖4 單行字符塊分割流程圖

圖5 彎曲變形字符塊的分割結果
傳統的連通字符分割方法包括模板匹配法[13],投影法[14]和滴水算法[15]等。對于由多個噴點構成的點陣字符而言,由于不具有一般字符的連通性,因此使用單一的字符分割方法會產生誤分割的情況,最終無法獲取完整的字符信息。為克服點陣字符的誤分割問題,本文以點陣字符中噴點的幾何先驗為特征,利用單個噴點的最大直徑信息對單個噴點字符進行分割。
2.4.1 獲取噴點的跳變特征
將二值化圖像中的像素值表示為二維矩陣src966×1296,矩陣中的元素只包含0和255。其中:0表示背景,255表示目標。本文利用基于二值編碼的跳變法,統計每一列黑白像素的變化。
1)定位各列噴點的位置
統計矩陣src各列元素中值為255的位置,存儲到列向量An×1(j)中,An×1(j)中的元素為字符區域位置,其中n為第j列字符區域包含的像素點。
2)定位各列噴點的邊界
通過跳變法定位各列噴點的邊界。具體為:當Aj(k+1)-Aj(k)≠1(其中Aj(k)表示第j個列向量中第k個元素的坐標),則A(k),A(k+1)表示坐標為字符的邊界位置。最終獲取每列噴點的上下邊界位置,并存入向量Bm×1(j)(m=2,4,6,…)中,m為每列噴點邊界點個數。
3)獲取各列噴點的跳變特征
根據D=Bj(p+1)?Bj(p)(p= 0,1,...,m? 1)計算每列噴點的高度,噴點的最大徑向尺寸為Dmax,以噴點圓心為中心,離中心越遠,則D的值越小。為克服小噪點的影響,設定每列噴點的高度閾值為T。當D 2.4.2 獲取噴點的垂直投影特征 對單行字符塊進行垂直投影,獲取垂直投影直方圖,直方圖每列的高度H表示噴點所占像素個數的總和。設存儲投影特征的向量為P(j)(j=0,1,…,1295),若H(j)>10,則令P(j)=1,表示該列為字符區域;否則P(j)=0,表示背景區域。最終得到點陣字符的投影特征。 2.4.3 跳變特征與投影特征的融合 跳變特征向量Cx×1(j)中包含每列噴點的跳變個數,投影特征向量P(j)中包含字符和背景的信息。將Cx×1(j)和P(j)進行級聯,得到矩陣R2×1296。然后以步長step=1,依次獲取R2×1296中的5列元素作為一個融合特征,最后遍歷整個矩陣,得到1292個融合特征。 2.4.4 基于融合特征的SVM字符分割 支持向量機(Support Vector Machine,SVM)是一種與學習算法有關的監督學習模型,可以應用于分析數據、識別模式、分類和回歸分析[16]。本文通過建立SVM二分類模型分割以獲取單個字符。將噴點的融合特征作為訓練數據集。類別集中包含0和1,0表示背景,1表示目標。選用徑向基函數作為核函數對訓練集進行訓練,得到SVM的模型參數。將單行字符塊的融合特征作為測試集輸入訓練好的SVM模型中,得到最終的分割結果,具體分割流程如圖6所示。分割結果如圖7所示。其中,圖7(a)和圖7(c)中的灰色表示字符區域,白色為背景區域,其對應的分割結果如圖7(b)和圖7(d)所示。 圖6 SVM字符分割流程圖 圖7 字符分割樣本圖 從圖7中的分割結果可以看出,使用本文分割方法分割點陣字符,能有效提取圖像中的字符信息。 為獲取圖像中的字符信息,需要對分割得到的單個字符進行識別。常用于字符識別的方法包括ANN法[17,18]、模板匹配法[13,19]及特征匹配法[4,20]等,本文采用ANN的方法對點陣字符進行識別。為提高字符的識別效率,首先對字符進行歸一化處理,歸一化尺寸為30×60,使得每個字符的尺寸一致。將分割后的單個字符進行分類,建立完整的字符庫。本文共有12類不同的字符,包括數字0~9,字母C和L。 ANN 模型的參數設置為:輸入層的節點數為1800;輸出的結果為預測字符的類別,因此將輸出層的節點數設置為12; 將隱藏層層數按經驗式(2)進行設置。最大迭代次數為50000次,收斂閾值為0.001,誤差設為0.01。通過訓練集數據訓練得到ANN網絡各層連接權值,并對測試集中的單個字符進行識別,結果如圖8所示。 圖8 識別結果 其中:n為輸入層節點數,j為輸出層節點數,?為1~10間的常數,本文取8,因此,隱藏層為50。 文中選用某食品包裝盒頂部的生產日期圖像作為實驗樣本,如圖9(a)所示。其中,第一行噴點信息為產商號和產品生產的年月日,第二行噴點信息為時分秒以及流水號,每行均由8個數字和一個字母組成。共采集了10000張大小均為1296×966的圖像作為數據集R,R包含了光照不均、字符彎曲和曝光度不同等多種干擾因素的字符圖像。選取分割的每類字符各1000個作為訓練集S。以Opencv3.0作為實驗平臺進行仿真實驗。 4.2.1 點陣字符預處理實驗結果對比 點陣字符的預處理是字符準確分割的重要前提。為去除噪聲等干擾信息,采用的字符預處理方法主要有線性濾波、非線性濾波、形態學濾波以及閾值化等。本文方法采用基于灰度均值的自適應閾值算法對圖像進行預處理,結果對比如圖9所示。 從圖9中的實驗結果可以看出:Otsu采用了全局自適應閾值進行圖像二值化處理,未考慮圖像的灰度均值,因此無法完整保留圖像中的點陣字符區域,如圖9(b)所示;膨脹細化算法的二值圖像產生了多余的噪點,導致不同字符粘連在一起,無法有效的分割出單個字符,如圖9(c)所示;而本文算法在Otsu算法的基礎上,充分考慮了圖像不同曝光值下的灰度均值特性,其二值化結果不僅有效的濾除了噪聲,還增強了點陣字符信息,如圖9(d)所示。 率是提高字符識別準確率的重要前提。相較于上述三種字符分割算法下的ANN識別,本文分割算法分割的單個字符能有效保留點陣字符區域且不產生額外的干擾,對點陣字符的分割準確率較高,最終的ANN識別準確率明顯高于其他對比算法,達到了98.97%。 本文針對因光照不均、彎曲變形等導致的點陣字符識別率較低的問題,提出了一種基于噴點融合特征的點陣字符分割方法。首先提出結合圖像灰度均值的自適應二值化算法,有效增強了圖像中的點陣字符信息;然后充分考慮噴點的跳變特征與投影特征以完成基于SVM的單個字符分割建模,使字符的分割不再局限于傳統分割方法中采用單一特征的瓶頸;最后采用ANN模型識別分割得到的單個字符。實驗結果表明,相比于其他算法,本文提出的方法具有自適應程度高、魯棒性強且準確率高的優點,對點陣字符的分割率和識別率分別達到了99.92%和98.97%。

3 基于ANN的點陣字符識別


4 實驗與結果分析
4.1 實驗數據
4.2 實驗結果對比與分析



5 結語