面向?qū)崟r(shí)嵌入式系統(tǒng)的一維條碼識(shí)別方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)視覺和實(shí)時(shí)嵌入式系統(tǒng)領(lǐng)域,尤其是一種在智能相機(jī)中內(nèi)嵌入條碼識(shí)別算法,對(duì)貼于工業(yè)生產(chǎn)流水線上的產(chǎn)品及零件上的一維條碼進(jìn)行識(shí)別的方法。
【背景技術(shù)】
[0002]現(xiàn)今,一維條碼在商品流通領(lǐng)域的應(yīng)用已經(jīng)十分廣泛和成熟,如最具代表性的EAN-13商品條形碼已經(jīng)在國(guó)際上廣為流通,并且由國(guó)際物品編碼協(xié)會(huì)管理其標(biāo)識(shí)國(guó)家的前綴碼,而中國(guó)物品編碼中心被分配的是690?695。與商品流通領(lǐng)域的成熟廣泛應(yīng)用相比,工業(yè)生產(chǎn)上的應(yīng)用是一個(gè)尚在發(fā)展、充滿前景的領(lǐng)域。
[0003]目前,一維條碼的識(shí)別方法廣泛采用光電識(shí)別技術(shù)。雖然光電識(shí)別技術(shù)已經(jīng)十分成熟,但是它是建立在對(duì)條碼質(zhì)量要求高、需要人工定位條碼的基礎(chǔ)上的。在商品流通領(lǐng)域中,由于銷售人員的人工參與,光電識(shí)別技術(shù)的基礎(chǔ)被很好滿足。但是,對(duì)于工業(yè)生產(chǎn)領(lǐng)域,為了滿足生產(chǎn)過(guò)程的自動(dòng)化,工人不能去人工參與,利用計(jì)算機(jī)視覺的方法去研宄條碼的定位和識(shí)別成了新的研宄方向。
[0004]自主研發(fā)一種基于計(jì)算機(jī)視覺的一維條碼識(shí)別方法,對(duì)于國(guó)內(nèi)工業(yè)生產(chǎn)領(lǐng)域的條形碼的推廣應(yīng)用具有重大的意義。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的不足,提供一種面向?qū)崟r(shí)嵌入式系統(tǒng)的一維條碼識(shí)別方法,該方法是一種應(yīng)用于實(shí)時(shí)嵌入式系統(tǒng)的圖像式條碼識(shí)別方法,基于計(jì)算機(jī)視覺處理過(guò)程,不需要人工參與可以自動(dòng)定位,適合工業(yè)生產(chǎn)領(lǐng)域的條形碼應(yīng)用。本發(fā)明采用的技術(shù)方案是:
一種面向?qū)崟r(shí)嵌入式系統(tǒng)的一維條碼識(shí)別方法,包括下述步驟:
步驟SI,對(duì)于采集的圖像進(jìn)行處理,獲得降低分辨率的二值化圖像和原分辨率的二值化圖像;
步驟S2,在降低分辨率的二值化圖像中定位條碼區(qū)域;
步驟S3,利用上述條碼區(qū)域定位信息,對(duì)原分辨率的二值化圖像進(jìn)行識(shí)別,進(jìn)行條碼解碼。
[0006]進(jìn)一步地,所述步驟SI具體包括:
5101),將采集的RGB圖像轉(zhuǎn)化為灰度圖;
5102),對(duì)灰度圖進(jìn)行圖像增強(qiáng)的處理;
5103),進(jìn)行圖像去噪的處理;
5104),將灰度圖轉(zhuǎn)化為二值化圖像;
5105),降低上個(gè)步驟S104)所得二值化圖像的分辨率,獲得降低分辨率的二值化圖像。
[0007]進(jìn)一步地,所述步驟S2具體包括:
S201),對(duì)降低分辨率的二值化圖像進(jìn)行邊緣強(qiáng)化處理; 5202),然后對(duì)上述降低分辨率的二值化圖像進(jìn)行形態(tài)學(xué)處理,將整個(gè)條碼區(qū)域連通;
5203),進(jìn)行區(qū)域過(guò)濾的處理;
5204),獲取條碼區(qū)域的四個(gè)角點(diǎn)位置,即可定位條碼區(qū)域。
[0008]進(jìn)一步地,所述步驟S3具體包括:
5301),進(jìn)行位置信息轉(zhuǎn)換,將條碼區(qū)域在降低分辨率的二值化圖像中的位置信息轉(zhuǎn)換為在原分辨率二值化圖像中的位置信息;
5302),在原分辨率二值化圖像中進(jìn)行條碼旋正;
5303),進(jìn)行垂直投影的處理:將條碼上同一列的像素值累加;
5304),進(jìn)行獲取模塊比例的處理:獲取條碼上條空的寬度比例;
5305),進(jìn)行譯碼和校驗(yàn),即根據(jù)所得模塊比例解析條碼攜帶信息。
[0009]本發(fā)明的優(yōu)點(diǎn)在于:本發(fā)明主要提供了一種基于計(jì)算機(jī)視覺的條碼識(shí)別方法,該方法不需要人工參與可以自動(dòng)定位,對(duì)所處理的條碼質(zhì)量要求也比光電技術(shù)的低。適合工業(yè)生產(chǎn)領(lǐng)域的條形碼應(yīng)用,對(duì)工業(yè)生產(chǎn)的自動(dòng)化起到了重要作用。
【附圖說(shuō)明】
[0010]圖1為本發(fā)明的條碼預(yù)處理階段流程圖。
[0011]圖2為本發(fā)明的條碼定位階段流程圖。
[0012]圖3為本發(fā)明的條碼解碼階段流程圖。
【具體實(shí)施方式】
[0013]下面結(jié)合具體附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0014]本發(fā)明提出的面向?qū)崟r(shí)嵌入式系統(tǒng)的一維條碼識(shí)別方法,按階段分為三個(gè)部分,下面參照附圖1?附圖3,對(duì)于該方法進(jìn)行詳細(xì)描述。
[0015]步驟SI,圖像預(yù)處理:對(duì)于采集的圖像進(jìn)行處理,獲得降低分辨率的二值化圖像和原分辨率的二值化圖像;
如圖1所示,是算法的第一階段即預(yù)處理階段的流程(第一階段不含圖1中的兩個(gè)虛線框)。其輸入是一個(gè)由智能相機(jī)采集的RGB圖像,輸出是降低分辨率的二值化圖像和原分辨率的二值化圖像。具體處理的過(guò)程如下:
S101),將采集的RGB圖像轉(zhuǎn)化為灰度圖;灰度化是指將RGB圖像轉(zhuǎn)化為灰度圖的過(guò)程,一般有求算數(shù)平均值、求加權(quán)平均值、求最大值三種方法,本方案采取的是求加權(quán)平均值的方法。其公式為:灰度值Gray=0.30*R+0.59*G+0.11*B,公式中的R、G、B代表紅、綠、藍(lán)三個(gè)通道的顏色?;叶葓D本例中采用8位灰度圖。
[0016]S102),對(duì)灰度圖進(jìn)行圖像增強(qiáng)的處理;圖像增強(qiáng)的主要目的是為了增強(qiáng)圖像的對(duì)比度,這里采用的圖像增強(qiáng)方法主要是USM銳化算法。Unsharp Mask(USM),翻譯為“非銳化遮罩”或翻譯為“虛化掩模銳化”,即在進(jìn)行銳化計(jì)算的過(guò)程中,可對(duì)邊緣進(jìn)行銳化處理,而對(duì)色調(diào)連續(xù)的部分予以保護(hù),達(dá)到既進(jìn)行銳化,又不產(chǎn)生噪點(diǎn)的目的。
[0017]該算法主要思想就是通過(guò)增強(qiáng)圖像的高頻部分來(lái)使得圖像的邊緣更加明顯。USM銳化算法可用如下公式(I)表達(dá)為:
G(x, y)=F(x, y)+k*H(x, y) ;(I) 其中(X,y)表示圖像中的一個(gè)點(diǎn),F(xiàn)(x,y)為輸入圖像,G(x,y)為輸出圖像,而H(x, y)為校正信號(hào),一般可通過(guò)對(duì)F(x,y)進(jìn)行高通濾波獲??;k是用于控制增強(qiáng)效果的一個(gè)縮放因子。這里H(x,y)可用如下公式(2)獲取:
H(X,y) =4*F (x,y) -F (χ-l, y) -F (x+1, y) -F (x, y-1) -F (x, y+1)。 (2)
S103),進(jìn)行圖像去噪的處理;圖像去噪即是去除圖像噪聲的過(guò)程,這里采用的是自適應(yīng)結(jié)構(gòu)元大小的高斯模糊算法。
[0018]該算法可用如下公式⑶表示:
G(x, y)= Σ Σ K(i, j) * F(x+i, y+j) ;(3)
其中,G(x, y)表示輸出圖像,F(xiàn)(x, y)表示輸入圖像,公式(3)中的兩個(gè)連加符號(hào)表示對(duì)(-m€ i ^ m, -n ^ j ^ η)范圍內(nèi)的i和j進(jìn)行連加;這里所取的結(jié)構(gòu)元大小為(2m+l)*(2n+l) ;K(i,j)表示的是相對(duì)于當(dāng)前處理點(diǎn)(x,y)距離(i,j)的點(diǎn)的加權(quán);這里K(i, j)是一個(gè)二階正態(tài)分布函數(shù);如下所示:
K(i,j) = (l/ (2* JT * σ ~2))* exp(_(x~2+y~2)/(2* σ ~2)(4)
σ表示的是二階正態(tài)分布的標(biāo)準(zhǔn)差,取值介于0.5?3之間。此例中m和η取值均為I,則i和j都是取_1,O, I ο
[0019]S104),將灰度圖轉(zhuǎn)化為二值化圖像;二值化即是將灰度圖像轉(zhuǎn)化為二值化圖像的過(guò)程,二值化的方法根據(jù)選取閾值的統(tǒng)計(jì)樣本可分為局部二值化、全局二值化兩種策略,根據(jù)選取閾值的統(tǒng)計(jì)量有OtSlK平均值等方法,這里采用的是動(dòng)態(tài)迭代的OtSU 二值化算法,也可以采用上述提到的現(xiàn)有技術(shù)中其它方法。該過(guò)程后所得圖像可以作為解碼用圖像,也就是原分辨率的二值化圖像。
[0020]動(dòng)態(tài)迭代的otsu 二值化算法;該算法的具體步驟如下:
1.取初始閾值T=128 ;即初始閾值T取灰度圖灰度總級(jí)數(shù)的一半。此例灰度圖共有256級(jí)灰度。
[0021]2.掃描圖像,計(jì)算小于T的所有點(diǎn)的均值minT和大于T的所有點(diǎn)的均值maxT ;進(jìn)而求出 T’ =(minT+maxT)/2 ;
3.如果T=T’,則結(jié)束,以此時(shí)的T為二值化的閾值;否則令Τ=Τ’,并跳至第二步。
[0022]4.以上述第三步確定的T為二值化的閾值,將灰度圖轉(zhuǎn)化為二值化圖像。
[0023]S105),降低上個(gè)步驟S104)所得二值化圖像的分辨率,獲得降低分辨率的二值化圖像;降分辨率是從二值化圖像獲取低分辨率圖像副本的過(guò)程,這里采用的是隔點(diǎn)取樣的方法,圖像在一個(gè)方向上的分辨率降低η倍,就相隔η點(diǎn)取樣。該過(guò)程后所得圖像可以作為定位用圖像。
[0024]步驟S2,在降低分辨率的二值化圖像中定位條碼區(qū)域;
如圖2所示,是算法的第二階段即定位階段的流程。其輸入是預(yù)處理階段所獲得的二值化圖像低分辨率副本,輸出是該圖像中的條碼位置信息。具體定位的過(guò)程如下所述:S201),對(duì)降低分辨率的二值化圖像進(jìn)行邊緣強(qiáng)