陳 燕, 楊 艷, 董 坤, 孫長(zhǎng)偉, 鄧運(yùn)生
(蚌埠學(xué)院電子與電氣工程學(xué)院,安徽 蚌埠 233030)
鋰電池由于其體積小、容量大等優(yōu)點(diǎn),目前已被廣泛的應(yīng)用在各類電子產(chǎn)品中。鋰電池上的噴碼字符則表征了電池的產(chǎn)品信息,對(duì)噴碼字符進(jìn)行自動(dòng)識(shí)別對(duì)產(chǎn)品的自動(dòng)管理有著重要的意義。噴碼字符的分割定位是進(jìn)行字符識(shí)別[1-2]的前提,字符定位的準(zhǔn)確性對(duì)字符識(shí)別精度有著關(guān)鍵的影響。由于鋰電池表面光滑,采用攝像機(jī)進(jìn)行抓拍時(shí)容易產(chǎn)生反光,從而導(dǎo)致成像亮度不均勻,此時(shí)采用傳統(tǒng)的閾值分割難以取得理想的分割結(jié)果,增加了字符定位的難度。
隨著智能制造技術(shù)的不斷發(fā)展,產(chǎn)品管理的自動(dòng)化程度越來(lái)越高,基于機(jī)器視覺的產(chǎn)品標(biāo)識(shí)自動(dòng)識(shí)別技術(shù)也貫穿其中[3-8],而對(duì)包含產(chǎn)品信息的字符進(jìn)行定位和識(shí)別則是這個(gè)過(guò)程中不可或缺的任務(wù)之一。針對(duì)該問(wèn)題,文獻(xiàn)[9]采用首先檢測(cè)字符邊緣點(diǎn),然后將邊緣點(diǎn)連接為直線的方法對(duì)線束連接器上的印刷字符進(jìn)行檢測(cè)。閔鋒等人[10]則針對(duì)接觸網(wǎng)支柱號(hào)牌定位和字符分割問(wèn)題提出一種將形態(tài)學(xué)操作和支持向量機(jī)分類器相結(jié)合的解決方案。南陽(yáng)等人[11]針對(duì)易拉罐生產(chǎn)過(guò)程中的噴碼實(shí)時(shí)識(shí)別問(wèn)題提出一種基于卷積神經(jīng)網(wǎng)絡(luò)的方法,該方法可以對(duì)噴碼進(jìn)行有效處理,然而卷積神經(jīng)網(wǎng)絡(luò)需要較高的硬件配置需求,增加了系統(tǒng)的成本。在文獻(xiàn)[12]中,王睿等人則對(duì)啤酒包裝電子監(jiān)管碼定位問(wèn)題展開研究,設(shè)計(jì)了一種基于邊緣檢測(cè)和霍夫變化相結(jié)合的方法來(lái)解決該問(wèn)題。上述的方法針對(duì)不同的機(jī)器視覺任務(wù)設(shè)計(jì)了對(duì)應(yīng)的解決方案,取得了良好的效果,但在當(dāng)圖像成像不均勻時(shí)如何提高字符定位質(zhì)量等問(wèn)題上尚需要開展進(jìn)一步的研究。
以設(shè)計(jì)一種輕量、高效的鋰電池噴碼字符檢測(cè)定位系統(tǒng)為目的,本文力求采用簡(jiǎn)潔高效的傳統(tǒng)圖像處理手段,開發(fā)一種可以克服圖像成像不均勻等問(wèn)題,能對(duì)噴碼字符進(jìn)行準(zhǔn)確、快速檢測(cè)定位的算法,為鋰電池噴碼字符的識(shí)別應(yīng)用提供一種可行的途徑。
如圖1為常用的鋰電池圖像,從圖像可以看出噴碼字符位于電池的中間部位,且噴碼由一系列的噴墨圓點(diǎn)組成。圖像整體上灰度分布并不均勻,由于電池表面的不平整導(dǎo)致噴碼區(qū)域明暗相間,難以采用傳統(tǒng)的閾值分割得到理想的噴碼字符。鑒于鋰電池圖像的上述特點(diǎn),本文提出了如圖2所示的字符定位流程,首先對(duì)字符區(qū)域進(jìn)行初定位,獲得字符區(qū)域的粗略位置;在此基礎(chǔ)上對(duì)字符區(qū)域進(jìn)行進(jìn)一步的精細(xì)定位,并通過(guò)水平和垂直兩次投影來(lái)得到單個(gè)字符的位置的尺度信息。
圖1 鋰電池圖像示例
圖2 算法的整體流程
對(duì)鋰電池圖像中的噴碼字符進(jìn)行檢測(cè)定位,首先需要確定噴碼字符區(qū)域所處的范圍。以圖3(a)所示的鋰電池圖像為例,由于字符區(qū)域的灰度分布并不均勻,此時(shí)采用通用的閾值分割方法不能得到理想的效果。考慮到噴碼字符區(qū)域灰度變化較為密集,此處采用梯度模型來(lái)構(gòu)建區(qū)域特征。對(duì)于一幅圖像f(x,y)而言,其x和y方向上的梯度gx,gy可以描述為:
(1)
(2)
為了消除噪聲的影響,給定梯度閾值tg進(jìn)行噪聲濾除,將x和y方向梯度中大于閾值的保留,其余清零,可得到圖3(b)和圖3(c)的梯度二值圖像。從圖中可以看出,對(duì)于字符區(qū)域無(wú)論x方向還是y方向梯度都保持了較大密度,而對(duì)于其他的干擾區(qū)域則同一位置的像素點(diǎn)僅存在較大的x方向或y方向梯度。根據(jù)該特點(diǎn),此處對(duì)不同方向的梯度圖像進(jìn)行鄰域融合,融合的規(guī)則為:
s(x,y)=
(3)
其中s(x,y)為得到的融合圖像,如圖3(d)所示,此時(shí)多數(shù)噪聲已被消除。
圖3 方向梯度的領(lǐng)域融合
針對(duì)上一步得到的結(jié)果,通過(guò)形態(tài)學(xué)操作進(jìn)行膨脹處理,將字符區(qū)域膨脹為一個(gè)整體的連通域,由于該連通域的面積和長(zhǎng)寬比都處于一定范圍內(nèi),以此為依據(jù)可得到字符區(qū)域的初定位位置如圖4所示。
(a) 形態(tài)學(xué)操作后結(jié)果 (b)噴碼區(qū)域的位置
在得到字符區(qū)域的粗略位置后,將字符區(qū)域從原圖中截取下來(lái)得到如圖5(a)所示的目標(biāo)圖像,后續(xù)操作將依據(jù)此圖開展。觀察該圖可知字符區(qū)域的整體灰度并不均勻,且存在一定的傾斜,需要進(jìn)行傾斜校正。采用將字符區(qū)域按照一定角度進(jìn)行水平投影的方式來(lái)獲得校正角度,因?yàn)樽址麉^(qū)域的傾斜角度與投影方向平行時(shí)得到的投影寬度最小,因此在獲取投影寬度后即可得到旋轉(zhuǎn)角度值。如式(4)所示:
(4)
其中θ為旋轉(zhuǎn)角度,width(θ)為投影寬度,由于所拍攝圖像近似水平,因此將角度校正的范圍限定在了[-10,10]之內(nèi)。
由于字符區(qū)域灰度并不均勻,不利于采用直接灰度投影的方法,再者,此時(shí)采用閾值分割也難以得到理想的分割圖像。考慮到上述原因,此處采用先對(duì)原圖進(jìn)行Canny邊緣檢測(cè),然后利用邊緣圖像進(jìn)行投影來(lái)獲得投影寬度。如圖5(b)所示為對(duì)應(yīng)的Canny邊緣,該圖像可以克服灰度不均勻的影響,得到的投影寬度曲線如圖5(c)所示,可以明顯看出投影寬度隨著角度的改變而變化明顯,投影寬度取最小值時(shí)的角度即為所需的校正角度,校正后得到如圖5(d)所示的精細(xì)定位圖像。
圖5 噴碼區(qū)域的精細(xì)定位
圖6 垂直投影噴碼圖像的獲得
通過(guò)上述幾個(gè)步驟的處理,可以得到姿態(tài)標(biāo)準(zhǔn)的噴碼字符區(qū)域,接下來(lái)需要將噴碼字符區(qū)域中的每一個(gè)字符都檢測(cè)出來(lái)并進(jìn)行定位。由于噴碼字符的排列格式整體較為標(biāo)準(zhǔn),因此此處提出對(duì)噴碼字符進(jìn)行水平和垂直投影,按照投影曲線的變化來(lái)對(duì)字符進(jìn)行分割的方法。該方法的前提是獲得準(zhǔn)確的字符投影。從上節(jié)可知,采用直接閾值分割受亮度不均勻的影響難以得到理想的分割效果,采用Canny邊緣檢測(cè)則可以克服該問(wèn)題,然而檢測(cè)到的邊緣往往相對(duì)噴碼的準(zhǔn)確位置存在一定的偏移。鑒于上述分析,以垂直投影為例,采用如圖6所示方案來(lái)獲取位置準(zhǔn)確的字符圖像。對(duì)于原始輸入圖像,分別進(jìn)行圖像分割和Canny邊緣檢測(cè),得到分割圖像和Canny邊緣圖像。然后將Canny邊緣圖像沿垂直方向進(jìn)行形態(tài)學(xué)膨脹,并將膨脹后的圖像與分割圖像進(jìn)行邏輯與操作得到投影噴碼圖像。
得到垂直投影噴碼圖像后,將該圖像按照垂直方向進(jìn)行投影,得到如圖7所示的投影曲線,從圖中可以看出經(jīng)過(guò)投影后,由于相鄰的兩列字符之間存在一定的間隔,且間隔區(qū)域由于不存在邊緣,故對(duì)應(yīng)的投影值為0。然而也存在一定的字符粘連現(xiàn)象,如圖中紅色圓形所標(biāo)出的位置,此時(shí)第二列字符與第三列字符投影后存在粘連,需要將粘連去除。具體步驟如下:
第一步,統(tǒng)計(jì)投影值為零點(diǎn)的位置,則相鄰零點(diǎn)之間為字符列。然后獲取相鄰字符列之間的寬度wi,i=1,…,C,并求取平均字符列寬度wm。
第二步,計(jì)算各字符列寬度wi與平均寬度wm的比值ri=wi/wm。
第三步,如果ri>1.2或ri<0.8,則認(rèn)為該列寬度存在異常并將其排除,重新計(jì)算正常字符列的平均寬度wn,此時(shí)wn對(duì)應(yīng)了標(biāo)準(zhǔn)的字符列寬度。
第四步,對(duì)寬度異常的字符列進(jìn)行處理,如果ri>1.2則說(shuō)明第i列需要進(jìn)行拆分,在該列離起點(diǎn)距離為wn的整數(shù)倍處尋找最小值,作為拆分點(diǎn)進(jìn)行拆分。如果ri<0.8,則說(shuō)明第i列需要與相鄰列進(jìn)行合并,則尋找相鄰列寬度之和與wn最接近的進(jìn)行合并。
進(jìn)行上述處理后得到的分割結(jié)果如圖7所示,從圖中可以看出,通過(guò)所提出的粘連處理策略對(duì)異常列進(jìn)行拆分或合并,能夠準(zhǔn)確的對(duì)每一列字符進(jìn)行定位。
定位到字符列的位置后,下一步通過(guò)水平投影對(duì)字符行進(jìn)行定位,采用與字符列相同的策略,將Canny邊緣圖像按照水平方向進(jìn)行膨脹后,再與分割圖像進(jìn)行邏輯與得到水平投影字符圖像,通過(guò)水平投影和對(duì)水平投影曲線進(jìn)行粘連處理,可以對(duì)字符行進(jìn)行定位。從而通過(guò)每一行和每一列的定位結(jié)果,可以獲取單個(gè)字符的最終定位位置。
圖7 投影曲線的粘連處理與分割結(jié)果
在本部分中將通過(guò)實(shí)驗(yàn)對(duì)所提出的算法進(jìn)行評(píng)估和驗(yàn)證。所用的實(shí)驗(yàn)平臺(tái)為CPU corei7、內(nèi)存8G的臺(tái)式計(jì)算機(jī),軟件開發(fā)平臺(tái)為Matlab2012a。在實(shí)驗(yàn)前首先采集構(gòu)建了鋰電池噴碼字符數(shù)據(jù)集,數(shù)據(jù)集包含了不同型號(hào)、不同亮度分布的102張鋰電池圖片樣本。實(shí)驗(yàn)中采用本文算法對(duì)樣本圖片進(jìn)行噴碼字符定位,并衡量觀測(cè)字符的定位結(jié)果。
如圖8所示為部分樣本的噴碼字符區(qū)域定位結(jié)果,通過(guò)觀察可以看出,盡管電池樣本的形狀、樣本圖像灰度的分布、字符區(qū)域的灰度分布各不相同,但本文算法都可以對(duì)樣本圖像進(jìn)行準(zhǔn)確的初定位和精細(xì)定位,從而得到理想的噴碼字符區(qū)域。
圖8 噴碼區(qū)域的定位結(jié)果
圖9 噴碼字符的定位結(jié)果
圖9則給出了部分樣本圖樣的單個(gè)噴碼字符定位結(jié)果。該圖中每一個(gè)字符對(duì)應(yīng)圖中一個(gè)紅色的矩形框。從圖中可以看出噴碼中的有效字符都可以得到準(zhǔn)確檢測(cè),只有圖9(e)中的點(diǎn)號(hào)由于噴碼灰度太淺而被漏檢。字符定位系統(tǒng)的運(yùn)行速度方面,在Matlab2012a中可以達(dá)到9fps的檢測(cè)速度,如果將算法移植到速度更快的c語(yǔ)言系統(tǒng)中將完全可以滿足實(shí)時(shí)檢測(cè)的需求??傮w來(lái)看,本文所提出的算法無(wú)論在精度還是速度上都取得了優(yōu)異的性能。
產(chǎn)品噴碼是獲取產(chǎn)品信息的重要途徑,對(duì)產(chǎn)品噴碼進(jìn)行自動(dòng)識(shí)別可以加快產(chǎn)品的自動(dòng)化進(jìn)程。本文針對(duì)鋰電池噴碼字符的檢測(cè)定位問(wèn)題,從機(jī)器視覺的角度出發(fā)設(shè)計(jì)了一種字符檢測(cè)和定位方法。該方法首先依據(jù)噴碼字符區(qū)域的梯度特征進(jìn)行鄰域融合,獲取噴碼區(qū)域的初步定位,在此基礎(chǔ)上進(jìn)一步對(duì)噴碼區(qū)域進(jìn)行傾斜校正得到噴碼字符所在的精細(xì)區(qū)域。同時(shí)考慮到閾值分割圖像和Canny邊緣圖像的優(yōu)缺點(diǎn),通過(guò)將分割圖像與邊緣膨脹圖像進(jìn)行邏輯與操作得到投影圖像。最后對(duì)投影圖像進(jìn)行垂直和水平投影得到相應(yīng)的投影曲線,以此獲取單個(gè)噴碼字符的位置,同時(shí)設(shè)計(jì)了拆分和合并算法對(duì)投影時(shí)產(chǎn)生的粘連現(xiàn)象進(jìn)行處理。實(shí)驗(yàn)結(jié)果表明,本文所設(shè)計(jì)的方法可以準(zhǔn)確的對(duì)各類鋰電池噴碼字符定位,具有一定的實(shí)用潛力。