徐達(dá)圣 李桂熙 覃翔宇
摘 要:本文通過(guò)對(duì)條碼圖像進(jìn)行預(yù)處理、邊緣檢測(cè)、閉運(yùn)算實(shí)現(xiàn)條碼定位,同時(shí)提出一種新的條碼傾斜角度計(jì)算方法,以校正歪斜條碼,通過(guò)改進(jìn)的自適應(yīng)分段線性灰度變換方法、基于迭代閾值的二值化方法進(jìn)行條碼圖像預(yù)處理,提高了解碼率。
關(guān)鍵詞:條形碼;圖像處理;解碼率
DOI:10.16640/j.cnki.37-1222/t.2019.09.135
0 引 言
基于圖像的條碼識(shí)別屬于模式識(shí)別的研究范疇,主要應(yīng)用于智能終端、物體分類等領(lǐng)域,國(guó)內(nèi)外學(xué)者已經(jīng)取得諸多重要研究成果并進(jìn)行了實(shí)際應(yīng)用。但這些研究仍存在不足,對(duì)于對(duì)比度不高或者存在歪斜的條碼,識(shí)別率和準(zhǔn)確度還待提高。
1 條碼識(shí)別
條碼識(shí)別經(jīng)過(guò)條碼定位、條碼校正、預(yù)處理、條碼解碼四步完成。
1.1 條碼定位
條碼定位過(guò)程包括圖像灰度化、混合濾波器降噪、邊緣檢測(cè)、形態(tài)學(xué)閉運(yùn)算。
1.1.1 混合濾波器降噪
采用幾何均值濾波器和中值均值濾器組成的混合濾波器[1]對(duì)圖像進(jìn)行降噪,保持去噪能力的同時(shí)能保留更多圖像邊緣細(xì)節(jié)。
1.1.2 邊緣檢測(cè)
Roberts算子先計(jì)算像素梯度幅值,而后對(duì)其進(jìn)行閾值處理[2]。如果大于設(shè)定閾值,該點(diǎn)判定為邊緣點(diǎn),否則為非邊緣點(diǎn),所有邊緣點(diǎn)構(gòu)成圖像邊緣。
(1)
1.1.3 形態(tài)學(xué)閉運(yùn)算
圖像處理中,常用集合描述圖像,被處理的圖像稱為目標(biāo)圖像,結(jié)構(gòu)元素是具有一定形狀的集合,尺寸小于目標(biāo)圖像,通常將結(jié)構(gòu)元素的原點(diǎn)選在其中心位置上。
目標(biāo)圖像關(guān)于結(jié)構(gòu)元素的閉運(yùn)算,定義[3]為:
(2)
經(jīng)過(guò)對(duì)邊緣檢測(cè)圖的形態(tài)學(xué)閉運(yùn)算處理,得到多個(gè)連通域,篩選最大聯(lián)通域作為條碼區(qū)域,完成條碼定位,如圖1。
1.2 條碼校正
條碼校正包括傾斜角計(jì)算和旋轉(zhuǎn)映射。
1.2.1 傾斜角計(jì)算
本文基于條碼特性和形態(tài)學(xué)閉運(yùn)算特征提出一種新的傾斜角計(jì)算方法。條碼具有水平間斷豎直連續(xù)的特性,而閉運(yùn)算能保持原連續(xù)邊界。通過(guò)將最大聯(lián)通域圖像的邊緣檢測(cè)圖像與閉運(yùn)算前的邊緣檢測(cè)圖像比對(duì),重合點(diǎn)保留,其余舍棄,濾除散點(diǎn)得到條碼左右兩條短邊側(cè)線,利用短側(cè)線的斜率即可計(jì)算出條碼傾斜角度。
1.2.2 旋轉(zhuǎn)映射
旋轉(zhuǎn)映射需進(jìn)行特定處理:利用取反圖像進(jìn)行旋轉(zhuǎn)映射,再將所得圖像取反得校正圖像。所做處理避免了直接旋轉(zhuǎn)映射而產(chǎn)生的矩形四角填充問(wèn)題。
1.3 預(yù)處理
圖像的預(yù)處理過(guò)程包括自適應(yīng)灰度拉伸、基于迭代閾值的二值化。
1.3.1 自適應(yīng)灰度拉伸
自適應(yīng)灰度拉伸處理將10%最大灰度值中的最小值記為,將10%最小灰度值中的最大值記為,進(jìn)而將圖像的灰度分為、、三個(gè)區(qū)間。而后,將處于灰度區(qū)間的像素灰度壓縮為0,將處于灰度區(qū)間的像素灰度壓縮為255,而對(duì)處于灰度區(qū)間的像素灰度做下述運(yùn)算:
(3)
其中,、 分別為輸入、輸出圖像的灰度值,是圖像理論灰度最大值。
1.3.2 基于迭代閾值的二值化
閾值法二值化首先將圖像中最小、最大灰度值記為和 ,初始閾值為 ,為迭代次數(shù)。而后根據(jù)閾值將圖像中像素分為目標(biāo)像素點(diǎn)和非目標(biāo)像素點(diǎn)兩類,記目標(biāo)像素及非目標(biāo)像素點(diǎn)個(gè)數(shù)及其灰度平均值分別為、、 、。并利用、二者平均值求取新閾值。當(dāng)或時(shí),結(jié)束迭代,利用新閾值進(jìn)行二值化處理,否則,重新劃分目標(biāo)與非目標(biāo)像素點(diǎn),繼續(xù)迭代。
1.4 條碼解碼
Code128碼是最常用的一維條碼,由一系列條空相間組成,分為起始符、數(shù)據(jù)符、檢驗(yàn)符、終止符和空白區(qū)。條碼解碼需解決兩個(gè)關(guān)鍵問(wèn)題,一是消除不同圖像采集距離的影響,二是解決因條碼污損而無(wú)法解碼的難題。針對(duì)前者,由于同一條碼上條空寬度呈比例關(guān)系,利用該關(guān)系可確定條碼編碼序列,從而實(shí)現(xiàn)不同采集距離下的解碼。針對(duì)后一問(wèn)題,可以通過(guò)在條碼解碼操作前確立一條垂直且覆蓋全部條、空的掃描線解決。
2 系統(tǒng)運(yùn)行結(jié)果分析
本文測(cè)試環(huán)境為Matlab 2016a,測(cè)試圖像來(lái)源于muenster數(shù)據(jù)集,數(shù)量為300張。經(jīng)測(cè)試:
由表可知,本文設(shè)計(jì)的條碼識(shí)別算法,識(shí)別成功率為93.6%。其對(duì)于條碼傾斜的情況,校正率亦能達(dá)86%以上,識(shí)別耗時(shí)平均為0.745s。
3 結(jié)語(yǔ)
本文提出了一種新的條碼定位與識(shí)別算法,有效提高了條碼定位識(shí)別率。系統(tǒng)實(shí)際運(yùn)行表明,該算法具有效率高、可靠性強(qiáng)的優(yōu)點(diǎn)。
參考文獻(xiàn):
[1]宋人杰,劉超,王保軍.一種自適應(yīng)的Canny邊緣檢測(cè)算法[J]. 南京郵電大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,38(03):72-76.
[2]賀桂嬌.幾種經(jīng)典的圖像邊緣檢測(cè)算子分析比較[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2014(09):182-183.
[3]閆海霞.基于數(shù)學(xué)形態(tài)學(xué)的圖像邊緣檢測(cè)和增強(qiáng)算法的研究[D]. 吉林大學(xué),2009.
基金項(xiàng)目:吉林大學(xué)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃基金資助項(xiàng)目( 2018A2017)。