專利名稱:復(fù)雜工況背景下的Data Matrix二維條碼快速識(shí)別方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種Data Matrix 二維條碼快速識(shí)別方法,尤其是一種復(fù)雜工況背景下的Data Matrix 二維條碼快速識(shí)別方法,屬于Data Matrix 二維條碼識(shí)別的技術(shù)領(lǐng)域。
背景技術(shù):
條碼技術(shù)是在計(jì)算機(jī)應(yīng)用實(shí)踐中形成的一種自動(dòng)識(shí)別技術(shù)。自上個(gè)世紀(jì)70年代初期問世以來,一維條碼技術(shù)已被廣泛地應(yīng)用。但是,隨著現(xiàn)代高新技術(shù)的發(fā)展,迫切需要用條碼在有限的幾何空間內(nèi)表示更多的信息,從而滿足千變?nèi)f化的信息需要。二維條碼技術(shù)正是為了滿足人們的這種需求而誕生。傳統(tǒng)的一維條碼只有校驗(yàn)功能,沒有糾錯(cuò)能力。而二維條碼具有很強(qiáng)的錯(cuò)誤校驗(yàn)和錯(cuò)誤糾正功能。由于二維條碼密度遠(yuǎn)大于一維條碼,其識(shí)別技術(shù)不同于一維條碼,如何快速準(zhǔn)確地識(shí)別條碼成為了一個(gè)值得研究的問題。
目前,Data Matrix的識(shí)別方法的文獻(xiàn)很多,主要分為四類。李雅靜在Data Matrix二維條碼圖像識(shí)別的算法研究與實(shí)現(xiàn)中提出了以Data Matrix二維條碼區(qū)域的面積最大值作為判斷根據(jù)來定位條碼。Wei Xu 在 2D Barcode Localization and Motion DeblurringUsing a Flutter Shutter Camera 一文中提出由于條碼區(qū)域的角點(diǎn)密度高。Anan Liu等在A Hierarchical Framework for 2D Data Matrix Recognition一文中提出外接矩形方法定位二維條碼。珠海炬力集成電路設(shè)計(jì)有限公司的專利中提出輪廓跟蹤法。蔡強(qiáng)等人專利中提出采用特征匹配方法定位Data Matrix條碼區(qū)域。在條碼圖像中搜索位置探測(cè)圖形來確定所述探測(cè)圖形的像素坐標(biāo);該專利采用灰度特征匹配的方法。上述Data Matrix 二維條碼識(shí)別方法存在計(jì)算量大,識(shí)別速度慢,容易受背景干擾,極性不同時(shí)導(dǎo)致無法識(shí)別的缺點(diǎn),不能滿足快速識(shí)別要求。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的不足,提供一種復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其操作方便,降低識(shí)別計(jì)算量,提高識(shí)別速度,識(shí)別抗干擾能力強(qiáng),識(shí)別適應(yīng)范圍廣,識(shí)別精度高。按照本發(fā)明提供的技術(shù)方案,所述復(fù)雜工況背景下的Data Matrix 二維條碼快速識(shí)別方法,所述Data Matrix 二維條碼快速識(shí)別方法包括如下步驟a、讀取包含有Data Matrix二維條碼的灰度圖像,對(duì)上述灰度圖像進(jìn)行中值濾波,并利用Sobel邊緣檢測(cè)算子提取灰度圖像每個(gè)像素點(diǎn)的方向向量及梯度值,且對(duì)灰度圖像的梯度值進(jìn)行非極大值抑制及閾值二值化梯度圖像,以獲得灰度圖像的邊緣;b、對(duì)上述圖像,根據(jù)邊緣點(diǎn)的八方向上邊緣點(diǎn)數(shù)目進(jìn)行分類,并對(duì)每類邊緣點(diǎn)分別進(jìn)行鏈碼跟蹤,且記錄每條鏈碼的起點(diǎn)坐標(biāo)、方向碼及鏈碼長(zhǎng)度;C、提取上述每條鏈碼的直線段,記錄每條直線段的起點(diǎn)坐標(biāo)、終點(diǎn)坐標(biāo)、角度以及直線段的長(zhǎng)度;d、根據(jù)上述直線段角度,查找相鄰相差90度的兩條直線段,以獲得“L”型的兩條直線段,在“L”型兩條直線段的對(duì)角分別作兩條平行的線段,以記錄條碼區(qū)域兩條虛線邊的邊界線,并根據(jù)“L”型的兩條直線段與兩條虛線邊的邊界線,判斷條碼區(qū)域;e、根據(jù)上述判定的條碼區(qū)域,在原始灰度圖像上截取條碼區(qū)域;擬合具有“L”型形狀的兩條直線段,并根據(jù)擬合“L”型兩條直線段的角度得到條碼區(qū)域的旋轉(zhuǎn)角度,根據(jù)旋轉(zhuǎn)角度將條碼區(qū)域旋轉(zhuǎn)到水平正方位置,并對(duì)旋轉(zhuǎn)后的條碼區(qū)域進(jìn)行雙線性插值;f、高斯平滑上述二維條碼區(qū)域。采用最大類間方差法對(duì)高斯平滑后的二維條碼區(qū)域進(jìn)行二值化,并對(duì)二值化后的條碼區(qū)域進(jìn)行采樣,且根據(jù)Data Matrix條碼類型對(duì)采樣后的條碼區(qū)域進(jìn)行譯碼。所述步驟a包括如下步驟al、采用中值濾波對(duì)灰度圖像進(jìn)行濾波時(shí),設(shè)定濾波窗口內(nèi)輸入序列為{x(i,j),i, j e I},I為自然數(shù)集合或子集,窗口大小為mXn,則y (i, j) =Med{x(i-u, j-v),…,x(i+u, j+v)},其中
權(quán)利要求
1.一種復(fù)雜工況背景下的Data Matrix 二維條碼快速識(shí)別方法,其特征是,所述DataMatrix 二維條碼快速識(shí)別方法包括如下步驟 (a)、讀取包含有DataMatrix 二維條碼的灰度圖像,對(duì)上述灰度圖像進(jìn)行中值濾波,并利用Sobel邊緣檢測(cè)算子提取灰度圖像每個(gè)像素點(diǎn)的方向向量及梯度值,且對(duì)灰度圖像的梯度值進(jìn)行非極大值抑制及閾值二值化梯度圖像,以獲得灰度圖像的邊緣; (b)、對(duì)上述圖像,根據(jù)邊緣點(diǎn)的八方向上邊緣點(diǎn)數(shù)目進(jìn)行分類,并對(duì)每類邊緣點(diǎn)分別進(jìn)行鏈碼跟蹤,且記錄每條鏈碼的起點(diǎn)坐標(biāo)、方向碼及鏈碼長(zhǎng)度; (C)、提取上述每條鏈碼的直線段,記錄每條直線段的起點(diǎn)坐標(biāo)、終點(diǎn)坐標(biāo)、角度以及直線段的長(zhǎng)度; (d)、根據(jù)上述直線段角度,查找相鄰相差90度的兩條直線段,以獲得“L”型的兩條直線段,在“L”型兩條直線段的對(duì)角分別作兩條平行的線段,以記錄條碼區(qū)域兩條虛線邊的邊界線,并根據(jù)“L”型的兩條直線段與兩條虛線邊的邊界線,判斷條碼區(qū)域; (e)、根據(jù)上述判定的條碼區(qū)域,在原始灰度圖像上截取條碼區(qū)域;擬合具有“L”型形狀的兩條直線段,并根據(jù)擬合“L”型兩條直線段的角度得到條碼區(qū)域的旋轉(zhuǎn)角度,根據(jù)旋轉(zhuǎn)角度將條碼區(qū)域旋轉(zhuǎn)到水平正方位置,并對(duì)旋轉(zhuǎn)后的條碼區(qū)域進(jìn)行雙線性插值; (f)、高斯平滑上述二維條碼區(qū)域。
2.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是采用最大類間方差法對(duì)高斯平滑后的二維條碼區(qū)域進(jìn)行二值化,并對(duì)二值化后的條碼區(qū)域進(jìn)行采樣,且根據(jù)Data Matrix條碼類型對(duì)采樣后的條碼區(qū)域進(jìn)行譯碼。
3.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是,所述步驟(a)包括如下步驟 (al)、采用中值濾波對(duì)灰度圖像進(jìn)行濾波時(shí),設(shè)定濾波窗口內(nèi)輸入序列為{x(i,j),i,j G I},I為自然數(shù)集合或子集,窗口大小為mXn,則 y (i, j) = Med{x(i-u, j-v),…,x(i+u, j+v)},其中Z e /," = 1,1 = 5 y 為濾波輸出; (a2)、利用Sobel邊緣檢測(cè)算子提取灰度圖像內(nèi)每個(gè)像素點(diǎn)X方向、Y方向的方向向量及梯度值時(shí),X方向、Y方向的檢測(cè)算子為
4.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是,所述步驟(b)包括如下步驟 (bl)、提取梯度圖像中的“L”型區(qū)域,當(dāng)“L”型區(qū)域?qū)?yīng)角點(diǎn)的左邊點(diǎn)、右點(diǎn)邊、上邊點(diǎn)或下邊點(diǎn)的八方向上只有兩個(gè)邊緣點(diǎn)時(shí),將相應(yīng)的左邊點(diǎn)、右邊點(diǎn)、上邊點(diǎn)或下邊點(diǎn)刪除;當(dāng)“L”型區(qū)域?qū)?yīng)角點(diǎn)的上邊點(diǎn)、下邊點(diǎn)、左邊點(diǎn)、右邊點(diǎn)的八方向上大于兩個(gè)邊緣點(diǎn)時(shí),將所述角點(diǎn)刪除; (b2)、在上述梯度圖像上,將邊緣點(diǎn)八方向上邊緣點(diǎn)數(shù)為O的邊緣點(diǎn)刪除,根據(jù)邊緣點(diǎn)的八方向上邊緣點(diǎn)數(shù)目進(jìn)行分類,將邊緣點(diǎn)八方向上邊緣點(diǎn)數(shù)目為I的邊緣點(diǎn)作為端點(diǎn),將邊緣點(diǎn)八方向上邊緣點(diǎn)數(shù)為2的邊緣點(diǎn)作為鏈碼中間點(diǎn),將邊緣點(diǎn)八方向上邊緣點(diǎn)數(shù)大于2的邊緣點(diǎn)作為鏈碼交叉點(diǎn); (b3)、以八方向上邊緣點(diǎn)數(shù)為I的邊緣點(diǎn)作為起點(diǎn),記錄作為起點(diǎn)的邊緣點(diǎn)與前一個(gè)邊緣點(diǎn)、下一個(gè)邊緣點(diǎn)的方向碼,并將前一個(gè)邊緣點(diǎn)置O,且記錄鏈碼的長(zhǎng)度,直到遇到八方向上邊緣點(diǎn)數(shù)為I或大于2的邊緣點(diǎn),此條鏈碼跟蹤結(jié)束; (b4)、以八方向上邊緣點(diǎn)數(shù)大于2的邊緣點(diǎn)作為起點(diǎn),記錄作為起點(diǎn)的邊緣點(diǎn)與前一個(gè)邊緣點(diǎn)、下一個(gè)邊緣點(diǎn)的方向碼,并將前一個(gè)邊緣點(diǎn)置O,且記錄鏈碼的長(zhǎng)度,直到遇到八方向上邊緣點(diǎn)數(shù)為I或2的邊緣點(diǎn),此條鏈碼跟蹤結(jié)束; (b5)、剩余的邊緣點(diǎn)為八方向上邊緣點(diǎn)數(shù)為2的邊緣點(diǎn),剩余的邊緣點(diǎn)構(gòu)成閉合線圈,以任意一個(gè)八方向上邊緣點(diǎn)數(shù)為2的邊緣點(diǎn)作為起點(diǎn),記錄作為起點(diǎn)的邊緣點(diǎn)與前一個(gè)邊緣點(diǎn)、下一個(gè)邊緣點(diǎn)的方向碼,并將前一個(gè)邊緣點(diǎn)置O、且記錄鏈碼的長(zhǎng)度,直到不再遇到邊緣點(diǎn),此條鏈碼跟蹤結(jié)束。
5.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是,所述步驟(C)包括如下步驟 (Cl)、對(duì)每條鏈碼進(jìn)行分割,以6個(gè)像素為一條子鏈碼,記錄子鏈碼的長(zhǎng)度及角度;(c2)、當(dāng)前子鏈碼與上一條相鄰的子鏈碼與合并條件匹配時(shí),將當(dāng)前子鏈碼與上一條相鄰的子鏈碼合并;否則,將上一條子鏈碼作為單獨(dú)的直線段;記錄每條直線段的起點(diǎn)坐標(biāo)、終點(diǎn)坐標(biāo)、角度以及直線段長(zhǎng)度; (c3)、掃描每條直線段,查找存在能合并的直線段,并將相應(yīng)的直線段合并; (c4)、將長(zhǎng)度小于25個(gè)像素的直線段刪除。
6.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是,所述步驟(d)包括如下步驟 (dl)、根據(jù)上述直線段角度,查找相鄰相差90度的兩條直線段,以獲得“L”型的兩條直線段; (d2)、在在“L”型兩條直線段的對(duì)角分別作兩條平行的線段,并將兩條所作的線段向外平移直至線段上無邊界點(diǎn),以記錄條碼區(qū)域兩條虛線邊的邊界線; (d3)、以兩條虛邊的邊界線向里延伸兩個(gè)像素分別做兩條平行線段,判斷所作線段與“L”型的兩條直線段間的區(qū)域是否為條碼區(qū)域,獲得條碼區(qū)域。
7.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是,所述步驟(e)包括如下步驟 (el)、根據(jù)上述獲得條碼區(qū)域及條碼區(qū)域?qū)?yīng)的邊界,計(jì)算條碼區(qū)域的頂點(diǎn),以在原始灰度圖像上截取條碼區(qū)域; (e2)、采用最小二乘法擬合截取條碼區(qū)域內(nèi)“L”型的兩條直線段,精確Data Matrix 二維條碼的旋轉(zhuǎn)角度,得到
8.根據(jù)權(quán)利要求I所述的復(fù)雜工況背景下的Data Matrix 二維條碼快速識(shí)別方法,其特征是,所述步驟(f)中,高斯卷積模版為
9.根據(jù)權(quán)利要求2所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是,對(duì)二值化后的條碼區(qū)域進(jìn)行采樣時(shí),對(duì)條碼區(qū)域進(jìn)行水平投影與垂直投影,以得到條碼的上邊界、下邊界、左邊界、右邊界;以上邊界向下每落兩個(gè)像素做一條直線,直至下邊界;記錄邊界點(diǎn)的橫坐標(biāo),以兩點(diǎn)之間的中心點(diǎn)坐標(biāo)做豎直直線,并以兩點(diǎn)之間的中心點(diǎn)坐標(biāo)做水平直線;以水平直線與豎直直線的交點(diǎn)作為此采樣模塊的值。
10.根據(jù)權(quán)利要求5所述的復(fù)雜工況背景下的DataMatrix 二維條碼快速識(shí)別方法,其特征是所述當(dāng)前子鏈碼與上一條相鄰的子鏈碼間的合并條件是兩條子鏈碼間角度大于165度且兩條子鏈碼的直線相似度大于0. 9,直線相似度的為上一條相鄰的子鏈碼起點(diǎn)與當(dāng)前子鏈碼的終點(diǎn)之間的距離與兩條子鏈碼對(duì)應(yīng)長(zhǎng)度之和的比值。
全文摘要
本發(fā)明提出一種復(fù)雜工況背景下的Data Matrix二維條碼快速識(shí)別方法,其首先采用基于鏈碼跟蹤技術(shù)提取邊緣鏈碼,然后利用直線段合并技術(shù)提取直線段,即將鏈碼分割成子鏈碼,根據(jù)直線段相似度合并子鏈碼構(gòu)成直線段;接著利用最小二乘法技術(shù)擬合直線段,精確角度;最后利用向量外積技術(shù)計(jì)算二維條碼旋轉(zhuǎn)角度。采用基于鏈碼跟蹤的方法,對(duì)每條鏈碼進(jìn)行直線段提取,克服以往計(jì)算量大、識(shí)別速度慢、容易受背景干擾、極性不同時(shí)而無法識(shí)別的缺點(diǎn)。該方法計(jì)算量小,只需遍歷圖像兩次,不受條碼極性的影響,黑色條碼或白色條碼均可識(shí)別,可識(shí)別的最小條碼可以達(dá)到3個(gè)像素單位模塊的二維條碼,不容易受背景干擾。
文檔編號(hào)G06K7/10GK102708351SQ20121016370
公開日2012年10月3日 申請(qǐng)日期2012年5月24日 優(yōu)先權(quán)日2012年5月24日
發(fā)明者吉峰, 徐義釗, 李新, 白瑞林 申請(qǐng)人:無錫信捷電氣有限公司, 江南大學(xué)