馬 玲,羅曉曙,蔣品群
(廣西師范大學(xué) 電子工程學(xué)院,廣西 桂林 541004)
食品、藥品的生產(chǎn)日期、生產(chǎn)批次及產(chǎn)地信息一般都是使用點(diǎn)陣噴碼字符噴印在外包裝袋上,消費(fèi)者和生產(chǎn)者都可以通過(guò)這些噴碼字符來(lái)了解產(chǎn)品的相關(guān)信息。目前,傳統(tǒng)的噴碼字符檢測(cè)是靠人眼完成,這種方法效率低且成本高。因此,研究自動(dòng)識(shí)別點(diǎn)陣噴碼字符的方法對(duì)于滿足工業(yè)生產(chǎn)自動(dòng)化具有重要意義。
目前噴碼字符識(shí)別方法主要有:基于模板匹配的方法、基于支持向量機(jī)(SVM)的方法和基于人工神經(jīng)網(wǎng)絡(luò)的識(shí)別方法等[1-5]。文獻(xiàn)[1]是基于模板匹配的識(shí)別方法,采用特征加權(quán)模板的模板匹配方法對(duì)鋼板噴印字符進(jìn)行識(shí)別,算法簡(jiǎn)單,較易實(shí)現(xiàn),但對(duì)噪聲比較敏感,可靠性不高;文獻(xiàn)[2]使用支持向量機(jī)(SVM)實(shí)現(xiàn)了對(duì)板材噴碼字符的識(shí)別,在針對(duì)多格式字符識(shí)別方面,設(shè)計(jì)的SVM分類器較為復(fù)雜;文獻(xiàn)[3]使用BP神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了對(duì)柱面壓印字符的識(shí)別,其性能與初始權(quán)值、學(xué)習(xí)率等參數(shù)有關(guān),易陷入局部最優(yōu)值和過(guò)擬合等缺陷[4];文獻(xiàn)[5]采用基于HALCON的方法對(duì)乳制品箱體噴碼字符進(jìn)行識(shí)別,但僅適用于采集到的圖像背景單一、不包含標(biāo)準(zhǔn)字符的場(chǎng)合,這簡(jiǎn)化了識(shí)別任務(wù),應(yīng)用范圍受限;文獻(xiàn)[6]提出了一種對(duì)LED點(diǎn)陣文本檢測(cè)和識(shí)別的方法,該方法從自然圖像中定位LED點(diǎn)陣字符,對(duì)本文有一定的指導(dǎo),但該方法使用KNN分類器來(lái)識(shí)別點(diǎn)陣字符,識(shí)別準(zhǔn)確率不高。
產(chǎn)品外包裝上的噴碼字符周?chē);祀s著標(biāo)準(zhǔn)印刷字符和圖案,且點(diǎn)陣噴碼字符的字體大小、噴墨量及受到的光照影響時(shí)常變化,這些因素會(huì)對(duì)點(diǎn)陣噴碼字符的自動(dòng)識(shí)別產(chǎn)生嚴(yán)重的干擾。針對(duì)以上問(wèn)題,本文提出基于PNN的點(diǎn)陣噴碼字符識(shí)別方法。該方法先利用改進(jìn)的FAST(features from accelerated segment test)角點(diǎn)檢測(cè)算法快速、準(zhǔn)確定位點(diǎn)陣噴碼字符;然后,提取字符的HOG特征和網(wǎng)格特征進(jìn)行聯(lián)合;最后,利用PNN建立分類模型識(shí)別點(diǎn)陣噴碼字符。
本文點(diǎn)陣噴碼字符識(shí)別方法如圖1所示。輸入圖像經(jīng)過(guò)預(yù)處理后,先進(jìn)行點(diǎn)陣噴碼字符區(qū)域定位和分割;然后,提取單個(gè)字符的HOG特征和網(wǎng)格特征,將這2種特征聯(lián)合后輸入到PNN,建立分類模型;最后,利用建立好的PNN分類模型來(lái)識(shí)別點(diǎn)陣噴碼字符。
圖1 點(diǎn)陣噴碼字符識(shí)別流程
Rosten等[7]在2010年提出FAST角點(diǎn)檢測(cè)算法,該算法是一種簡(jiǎn)單且快速的角點(diǎn)檢測(cè)算法。
如圖2所示,F(xiàn)AST-16角點(diǎn)檢測(cè)是以某一像素p為圓心像素點(diǎn),計(jì)算以3為半徑的圓上的16個(gè)鄰域像素點(diǎn)的灰度值大小。若這16個(gè)像素點(diǎn)連續(xù)n個(gè)像素點(diǎn)(本文n取9)的灰度值都比Ip+t大,或者都比Ip-t小,即滿足式(1),則該圓心像素點(diǎn)p為角點(diǎn)。
(1)
式中:Ip為圓心像素點(diǎn)的灰度值;t為閾值;Ip→x為這16個(gè)像素點(diǎn)中的某一像素點(diǎn)的灰度值。如圖2,假設(shè)p1~p9這9個(gè)點(diǎn)的灰度值都大于或者小于中心點(diǎn)p的灰度值,則該點(diǎn)p被判定為角點(diǎn)。
圖2 FAST角點(diǎn)特征提取
利用FAST角點(diǎn)檢測(cè)方法檢測(cè)灰度圖像中的角點(diǎn),如圖3中綠色點(diǎn)所示為初始檢測(cè)到的所有角點(diǎn)。此時(shí),角點(diǎn)中屬于點(diǎn)陣噴碼字符角點(diǎn)的數(shù)量居多,這是由于噴碼字符是由一個(gè)個(gè)離散小黑點(diǎn)組成,其周?chē)叶茸兓?,因此,F(xiàn)AST角點(diǎn)數(shù)量較多。但是,檢測(cè)到的角點(diǎn)中還有屬于標(biāo)準(zhǔn)打印字符的,如“滋養(yǎng)生命活力”,需要將檢測(cè)的角點(diǎn)進(jìn)行篩選。
圖3 初始檢測(cè)到的FAST角點(diǎn)
將檢測(cè)到的角點(diǎn)按其特征強(qiáng)度值進(jìn)行排序,根據(jù)實(shí)驗(yàn)結(jié)果得到,只保留排序結(jié)果前40%的角點(diǎn)位置信息時(shí),既能夠保留點(diǎn)陣噴碼字符的角點(diǎn)又能夠刪除一定的非點(diǎn)陣噴碼字符角點(diǎn)。這是由于點(diǎn)陣噴碼字符是由離散小黑點(diǎn)組成,與鄰域內(nèi)的像素點(diǎn)灰度相差較大,即其強(qiáng)度值大于大多數(shù)非噴碼字符的強(qiáng)度值,故可刪除一些非噴碼字符角點(diǎn)。刪除部分角點(diǎn)后的結(jié)果如圖4中品紅點(diǎn)所示。相比圖3,已經(jīng)刪除大部分非點(diǎn)陣字符角點(diǎn),但是還有一些干擾角點(diǎn)的存在。
圖4 保留特征強(qiáng)度較強(qiáng)的角點(diǎn)位置
考慮到點(diǎn)陣噴碼字符的角點(diǎn)空間分布集中的特點(diǎn),計(jì)算角點(diǎn)在X軸和Y軸出現(xiàn)的頻率,頻率低的角點(diǎn)視為干擾角點(diǎn),實(shí)驗(yàn)結(jié)果如圖5中青色點(diǎn)所示,此時(shí),檢測(cè)到的角點(diǎn)都位于點(diǎn)陣噴碼字符處。保留角點(diǎn)位置坐標(biāo)并保存,如圖6中紅色方框所示,即定位到點(diǎn)陣噴碼字符。
圖5 最終角點(diǎn)位置
圖6 最終噴碼字符區(qū)域定位
將去噪后的灰度圖像采用底帽變換法[8]來(lái)消除圖像由于受采集環(huán)境影響而引起的非均勻光照影響或者存在陰影區(qū)域的現(xiàn)象;然后,采用自適應(yīng)閾值的二值化方法即最大類間方差法[9]得到二值化圖像。根據(jù)前面保存的噴碼字符區(qū)域位置坐標(biāo),將圖像中除噴碼字符區(qū)域位置以外的位置都視為背景,即0值,在二值圖像中只保留一個(gè)包含噴碼字符的圖像,如圖7所示。
圖7 噴碼字符二值化
噴碼字符在噴印過(guò)程中會(huì)出現(xiàn)字符隨機(jī)角度傾斜,本文采用Hough變換法[10]計(jì)算噴碼字符的傾斜角度,使用雙線性差值算法將傾斜的噴碼字符校正到水平方向,并采用水平投影法將本例中噴碼字符分割成2行,如圖8所示。若這2行字符在行方向出現(xiàn)黏連,考慮2行字符的高度基本一致,將這黏連的2行字符平均分割成上下兩部分。
圖8 行分割后的噴碼字符
噴碼字符由于其本身的非連續(xù)性及在噴印過(guò)程中有可能會(huì)出現(xiàn)點(diǎn)缺失或噴墨滲出的情況,需要將傾斜校正后的噴碼字符使用3 × 1結(jié)構(gòu)元素進(jìn)行膨脹操作,提高字符質(zhì)量,以便后續(xù)進(jìn)行識(shí)別操作,如圖9所示。然后,采用垂直投影法對(duì)字符進(jìn)行列分割,得到單個(gè)噴碼字符圖像,并統(tǒng)一調(diào)整為42 × 24像素大小字符圖像,如圖10所示,將單個(gè)噴碼字符按類存儲(chǔ)并建立字符庫(kù)。
圖9 膨脹后的噴碼字符
圖10 列分割后的單個(gè)噴碼字符
1.3.1 字符特征提取
由于將得到的單個(gè)噴碼字符圖像采用逐個(gè)像素特征提取算法時(shí),圖像所提取的信息量過(guò)大、耗時(shí)長(zhǎng),且識(shí)別準(zhǔn)確率低,所以,本文采取對(duì)整體圖像進(jìn)行特征提取的方法,即采用提取噴碼字符的HOG特征和噴碼字符的網(wǎng)格特征,并將這2種特征進(jìn)行聯(lián)合,來(lái)表征原噴碼字符。
HOG特征是通過(guò)計(jì)算一幅圖像的局部區(qū)域的梯度方向直方圖來(lái)構(gòu)成的[11-12]。HOG特征提取步驟如下:
Step1分別使用[-1,0,1]和[-1,0,1]T濾波器,提取字符二值化圖像的水平和豎直方向梯度,通過(guò)式(2)~(5)求得該像素的梯度方向和大小。
Gx(x,y)=H(x+1,y)-H(x-1,y),
(2)
Gy(x,y)=H(x,y+1)-H(x,y-1)。
(3)
式中:Gx(x,y)表示圖像(x,y)像素處的水平梯度;Gy(x,y)表示圖像(x,y)像素處的垂直梯度;H(x,y)表示圖像(x,y)像素處的像素值。像素(x,y)處的梯度大小和方向?yàn)椋?/p>
(4)
(5)
Step2原二值字符圖像大小為42 × 24像素,取6 × 6像素為一個(gè)單元,把梯度方向0~360°劃分為9個(gè)區(qū)間。此時(shí),統(tǒng)計(jì)每個(gè)單元里面36個(gè)像素的各個(gè)方向區(qū)間的梯度方向直方圖,得到一個(gè)9維特征向量。將相鄰2 × 2個(gè)單元組成一個(gè)像素塊,則一個(gè)塊內(nèi)可得到36維特征向量,并采用2-范數(shù)對(duì)向量進(jìn)行歸一化處理。
Step3用一個(gè)塊的大小即12 × 12像素對(duì)原二值字符圖像進(jìn)行掃描,取一個(gè)單元即6 × 6像素為掃描步長(zhǎng),則原二值字符圖像水平方向步數(shù)設(shè)置為6,垂直方向步數(shù)設(shè)置為3,則總共提取36 × 6 × 3 = 648維特征,以供分類使用。
本文中點(diǎn)陣噴碼字符的網(wǎng)格特征是將字符分割成由40個(gè)網(wǎng)格組成的形式,橫向分為8等份,縱向分為5等份,取每個(gè)網(wǎng)格中字符像素的個(gè)數(shù)即白色像素的個(gè)數(shù),將所有值排成一列形成40維[13]特征向量,如圖11所示。
圖11 網(wǎng)格特征提取
這樣,就得到了648維的HOG特征和40維網(wǎng)格特征,2種特征聯(lián)合[14]起來(lái)組成一個(gè)688維特征列向量,該特征列向量反映了原來(lái)的二值字符圖像。
1.3.2 概率神經(jīng)網(wǎng)絡(luò)(PNN)
PNN是D.F.Specht提出的一種基于貝葉斯決策理論和Parzen窗概率密度函數(shù)估計(jì)的前饋型神經(jīng)網(wǎng)絡(luò),適用于模式分類問(wèn)題[15]。PNN在模式層中的激活函數(shù)為徑向基函數(shù),選取輸入特征空間的子集作為中心,計(jì)算出局部決策函數(shù),然后將所有的局部決策函數(shù)求和,計(jì)算出全局決策函數(shù)。因此,該網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)單,收斂速度快,不存在局部最優(yōu)值問(wèn)題[16]。
貝葉斯決策理論為:給定輸入向量x=[x1,x2,…,xd](d維)分類到ωi(i=1,2,…,m)中之一,其中m是x可以屬于的可能類的總數(shù)量。根據(jù)貝葉斯公式,后驗(yàn)概率計(jì)算公式為
(6)
式中P(ωi|x)是x發(fā)生情況下,類別ωi的后驗(yàn)概率,P(ωi)為屬于ωi類的先驗(yàn)概率。當(dāng)滿足P(ωi|x)>P(ωj|x),?i,j=1, 2, …,m,i≠j,則輸入向量x被分類為屬于ωi類。而大多數(shù)情況下,P(ωi|x)是未知的。為了解決這個(gè)問(wèn)題,Parzen提出了從訓(xùn)練樣本來(lái)估計(jì)概率密度函數(shù)的方法
(7)
式中:xai為ωA類的第i個(gè)訓(xùn)練向量;m為ωA類的訓(xùn)練樣本數(shù)目;σ為平滑因子。fA(x)為ωA類的概率密度函數(shù),它是以訓(xùn)練樣本為中心的高斯函數(shù)的總和。由此可以看出,PNN使用所有訓(xùn)練數(shù)據(jù)集來(lái)估計(jì)概率密度函數(shù),從而估計(jì)輸入樣本屬于某一類別的可能性。
PNN的基本結(jié)構(gòu)由輸入層、模式層、求和層和輸出層組成,如圖12所示。
圖12 概率神經(jīng)網(wǎng)絡(luò)(PNN)的基本結(jié)構(gòu)
第一層為輸入層,接收來(lái)自訓(xùn)練樣本的特征向量,每個(gè)神經(jīng)元都完全連接到下一層的神經(jīng)元,該層神經(jīng)元數(shù)目和特征向量維數(shù)相等。
第二層為模式層,該層神經(jīng)元的個(gè)數(shù)和輸入的訓(xùn)練樣本的個(gè)數(shù)相等。該層每一個(gè)神經(jīng)元都以訓(xùn)練樣本為中心,計(jì)算輸入特征向量與中心的距離送入高斯函數(shù),使用激活函數(shù)為
(8)
式中:x為輸入向量;xi為訓(xùn)練樣本中心;σ為平滑參數(shù),是該網(wǎng)絡(luò)的唯一參數(shù)。模式層的輸出為
(9)
式中:xij為第i類的第j個(gè)訓(xùn)練中心;d為樣本輸入空間的維數(shù)。
第三層為求和層,該層神經(jīng)元的數(shù)目與類別數(shù)目相等。模式層中的神經(jīng)元只與求和層中對(duì)應(yīng)類別的神經(jīng)元有連接,與其他神經(jīng)元并無(wú)連接。按公式(10)求輸入向量x被分類為屬于ωi類:
(10)
式中Ni為屬于類別ωi的訓(xùn)練樣本個(gè)數(shù)。
第四層為輸出層,根據(jù)貝葉斯決策規(guī)則輸出分類決策,如公式(11)。
(11)
式中m為總類別數(shù)。
本文所有實(shí)驗(yàn)運(yùn)行在64位操作系統(tǒng)的PC機(jī)上:CPU為Intel Core i3 3.9 GHz,內(nèi)存12 GiB,軟件環(huán)境為Matlab R2016a。
將文獻(xiàn)[17]采用基于投影的鋼板圖像定位方法來(lái)定位鋼板字符,文獻(xiàn)[18]采用基于數(shù)學(xué)形態(tài)學(xué)與連通域的定位方法定位易拉罐底噴碼字符,與本文提出的基于FAST角點(diǎn)檢測(cè)的點(diǎn)陣噴碼字符定位方法進(jìn)行對(duì)比,部分實(shí)驗(yàn)結(jié)果如圖13所示。
圖13 點(diǎn)陣噴碼字符定位實(shí)驗(yàn)結(jié)果對(duì)比
圖13(a)是從本文實(shí)驗(yàn)圖像中隨機(jī)選取的字體、背景不同的4幅點(diǎn)陣噴碼字符圖像。通過(guò)觀察可以發(fā)現(xiàn),圖13(b)采用文獻(xiàn)[17]的方法,多數(shù)情況下未定位到點(diǎn)陣噴碼字符。圖13(c)是文獻(xiàn)[18]的定位結(jié)果,在背景稍微復(fù)雜的情況下,定位出現(xiàn)錯(cuò)誤。以上2種方法均給下一步點(diǎn)陣噴碼字符的準(zhǔn)確識(shí)別帶來(lái)困難。圖13(d)是本文方法的定位結(jié)果,能準(zhǔn)確定位到點(diǎn)陣噴碼字符??梢?jiàn),文獻(xiàn)[17]和文獻(xiàn)[18]不適用于背景復(fù)雜的點(diǎn)陣噴碼字符識(shí)別應(yīng)用場(chǎng)合。隨機(jī)選取100幅點(diǎn)陣噴碼字符圖像,進(jìn)行點(diǎn)陣字符定位實(shí)驗(yàn),結(jié)果如表1所示:可見(jiàn)本文定位準(zhǔn)確率及速度均高于其他2種方法。
表1 定位實(shí)驗(yàn)結(jié)果對(duì)比
2.2.1 建立模板字符庫(kù)
將原始采集到的100幅點(diǎn)陣噴碼字符圖像,經(jīng)過(guò)預(yù)處理、定位、字符分割等操作后得到42 × 24像素的單字符圖像,每幅圖像大約可得到22個(gè)點(diǎn)陣噴碼字符,共計(jì)約2 200個(gè)點(diǎn)陣噴碼字符。但圖像中某些點(diǎn)陣噴碼字符出現(xiàn)次數(shù)多,如“0”“1”等,某些字符出現(xiàn)次數(shù)少,如“4”“7”“6”等,造成分割后的不同類別的點(diǎn)陣噴碼字符數(shù)量相差較大,因此對(duì)出現(xiàn)次數(shù)較少的噴碼字符采用輕微旋轉(zhuǎn)方法豐富字符庫(kù),使每類圖片都達(dá)到100張,并設(shè)定好相應(yīng)的標(biāo)簽。字符庫(kù)中部分點(diǎn)陣噴碼字符圖像如圖14所示。
圖14 字符庫(kù)中部分點(diǎn)陣噴碼字符
2.2.2 構(gòu)建PNN分類模型
將聯(lián)合特征輸入到PNN網(wǎng)絡(luò)的第一層輸入層中,第一層神經(jīng)元個(gè)數(shù)為字符特征維數(shù)。第二層是網(wǎng)絡(luò)的模式層:該層神經(jīng)元的個(gè)數(shù)為訓(xùn)練樣本的個(gè)數(shù);該層主要是計(jì)算輸入特征向量和訓(xùn)練樣本中心的距離;該層需要設(shè)置PNN分類模型的平滑參數(shù)σ,平滑參數(shù)σ對(duì)于PNN模型的性能有著較大影響,經(jīng)過(guò)多次實(shí)驗(yàn),本文設(shè)置σ為0.3。第三層的神經(jīng)元個(gè)數(shù)等于需要分類的類別數(shù)目,該層只與屬于自己類的模式層神經(jīng)元相連接,將屬于自己類的模式層神經(jīng)元的輸出求和。最后一層為輸出層:該層的神經(jīng)元個(gè)數(shù)等于類別數(shù)目;該層將求和層輸出的概率密度函數(shù)最大的神經(jīng)元輸出為1,其他神經(jīng)元輸出為0。這樣就可以得到一個(gè)用于點(diǎn)陣噴碼字符識(shí)別的PNN分類模型,保存該模型用于點(diǎn)陣噴碼字符識(shí)別。
2.2.3 點(diǎn)陣字符識(shí)別實(shí)驗(yàn)結(jié)果及分析
圖15為部分點(diǎn)陣噴碼字符實(shí)驗(yàn)圖像,第1列到第6列噴碼字符的字體大小、噴墨量及光照影響都有一定的差異。模型的輸入是隨著外界條件的變化而變化的,如光照影響、采集設(shè)備的位置影響等,識(shí)別模型有一定的自適應(yīng)能力對(duì)識(shí)別準(zhǔn)確率的提高是非常有益的[19]。將450幅原始圖像經(jīng)定位、傾斜矯正、字符分割、特征提取后,利用訓(xùn)練好的PNN分類模型進(jìn)行測(cè)試,準(zhǔn)確識(shí)別圖像為437幅,識(shí)別準(zhǔn)確率為97.1%。
圖15 部分點(diǎn)陣噴碼字符實(shí)驗(yàn)圖像
將文獻(xiàn)[20]和文獻(xiàn)[21]2種識(shí)別方法在本文制作的數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果與本文方法比較見(jiàn)表2。可以看出,本文識(shí)別準(zhǔn)確率優(yōu)于其他2種算法,識(shí)別準(zhǔn)確率達(dá)97.1%,平均識(shí)別2行噴碼字符的時(shí)間為0.56 s。
表2 識(shí)別實(shí)驗(yàn)結(jié)果對(duì)比
為了模擬實(shí)際工業(yè)噴碼過(guò)程中出現(xiàn)噴頭堵塞而造成墨點(diǎn)缺失的情況,本文人為抹掉噴碼字符部分離散點(diǎn),利用PNN訓(xùn)練的分類模型進(jìn)行噴碼字符識(shí)別,實(shí)驗(yàn)結(jié)果如圖16所示。
圖16 部分少量點(diǎn)缺失點(diǎn)陣噴碼字符實(shí)驗(yàn)圖像
實(shí)驗(yàn)結(jié)果表明,本文提出的方法對(duì)非單一字體、背景復(fù)雜及墨點(diǎn)少量缺失的點(diǎn)陣噴碼字符識(shí)別的魯棒性更好,工業(yè)應(yīng)用場(chǎng)合更寬。
實(shí)驗(yàn)證明,點(diǎn)陣噴碼字符準(zhǔn)確定位是準(zhǔn)確識(shí)別點(diǎn)陣字符的關(guān)鍵。本文利用改進(jìn)的FAST角點(diǎn)檢測(cè)算法能快速、準(zhǔn)確定位到點(diǎn)陣噴碼字符。本文提出的基于PNN點(diǎn)陣噴碼字符識(shí)別方法,對(duì)于采集到的原始圖像中含有非點(diǎn)陣噴碼字符、點(diǎn)陣噴碼字符的字體大小不一、噴墨量及受到的外界光照變化時(shí),該方法都能有效地識(shí)別噴碼字符,且建立的模型所需參數(shù)少,能夠滿足一些工業(yè)點(diǎn)陣噴碼字符識(shí)別應(yīng)用場(chǎng)合。