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