專利名稱:數據矩陣碼的識別方法
技術領域:
本發明涉及數據識別領域,尤其涉及一種數據矩陣碼的識別方法。
背景技術:
隨著社會的發展,類似于條形碼的一維代碼在諸如商業、藥品、后勤運輸等各種領域都得到了廣泛的應用,條形碼所代表的商品信息在商品管理以及對商品信息的加密等多個方面都有重要的意義。一般的條形碼都只能在一個水平方向表達信息,其在垂直方向則不表達任何信息,因此,表達的信息量較小。隨著信息量的增大及存儲要求的不斷提高,條形碼因信息容量小而使其應用受到了的限制。于是,業界開始采用一種二維代碼,即數據矩陣碼(data matrix code),其信息存儲原理是在一個矩形空間內,通過黑、白像素在矩陣中的不同分布進行編碼。國際標準化組織于2000年將數據矩陣碼命名為ISO/IEC 16022∶2000并予以頒布,自此,數據矩陣碼得到了廣泛的應用。
圖1揭示了一種常見的標準數據矩陣碼1的結構,其包括特征邊10、校正模塊11以及數據區12,特征邊10呈“L”形,其位于數據矩陣碼1的兩個相鄰邊緣,包括垂直特征邊101和水平特征邊102;校正模塊11位于數據矩陣碼1的另外兩個相鄰邊緣(分別與特征邊10相對),其包括多個間隔排列的黑色模塊110和白色模塊111;數據區12位于由特征邊10和校正模塊11圍成的矩形區域之內,其包含若干個黑色碼元120和白色碼元121,這些黑色碼元120和白色碼元121即包含了特定的編碼信息,通過識別黑色碼元120和白色碼元121,可以讀取出數據矩陣碼1所包含的特定信息。
根據ISO/IEC 16022∶2000標準,現有的數據矩陣碼識別方法包括以下幾個主要步驟(為了簡單起見,以下步驟中未包括一些糾錯處理等過程,詳盡的識別過程可以參見ISO/IEC 16022∶2000標準)步驟1用區域合并分裂法搜尋數據矩陣碼1的輪廓;步驟2對輪廓上的點進行直線擬合,最終確定“L”形特征邊10;步驟3找到虛線邊(即校正模塊11)上每個黑色模塊110和白色模塊111的中心點,并從這些中心點出發畫垂直相對垂直特征邊101或者水平特征邊102的網格線;步驟4根據網格線提取比特圖案,即得到數據矩陣碼1的編碼信息。
上述數據矩陣碼識別方法中,步驟1中所述的區域合并分裂法是一種迭代方法,其原理是先找到具有封閉連續邊界的所有候選區域,然后反復進行合并和分裂的操作,直至搜尋到步驟二中所需要的L特征邊區域(這種方法在ISO/IEC 16022∶2000標準中有詳盡的描述,在此不做贅述),這種區域合并分裂法的存儲量和運算量比較大;另一方面,步驟3采用了先逐一尋找中心點,然后逐一做垂線的方法來確定網格線,這種方法運算量也比較大,在一些處理器性能并不太高的場合,此種方法會使得數據處理十分緩慢,不能達到快速識別的要求,而且,如果虛線邊(校正模塊11)受到污損,那么中心點的尋找可能會不準確,導致識別錯誤。
因此,提供一種高效、快速的數據矩陣碼的識別方法實為必要。
發明內容
本發明的主要目的是提供一種高效、快速的數據矩陣碼的識別方法;本發明的另一目的是提供一種降低對數據矩陣碼識別硬件要求的識別方法。
為實現上述目的,本發明提供的數據矩陣碼的識別方法包括以下步驟步驟一,使用輪廓跟蹤法搜尋數據矩陣碼的輪廓;步驟二,對輪廓上的點進行直線擬合,搜尋“L”形特征邊所在直線;步驟三,計算輪廓上的點到特征邊所在直線的距離,分別得到垂直特征邊(201)和水平特征邊(202)的長度,并通過垂直特征邊(201)和水平特征邊(202)的長度計算出識別模塊中單個模塊在垂直方向與水平方向的兩個平均邊長(M1、M2);步驟四,作一組與垂直特征邊(201)平行的直線,相鄰平行直線之間的間距為其中一個邊長(M1),且垂直特征邊(201)與其相鄰直線之間的間距為1.5倍此邊長(M1);作另一組與水平特征邊(202)平行的直線,相鄰平行直線之間的間距為另一個邊長(M2),且水平特征邊(201)與其相鄰直線之間的間距為1.5倍此邊長(M2);步驟五,根據兩組直線的交點確定黑色碼元和白色碼元的坐標,并提取比特矩陣。
本發明所提供的數據矩陣碼的識別方法是根據特征邊20的長度計算邊長M1和M2,然后直接作平行線得到比特矩陣,摒棄了現有技術中先確定校正模塊的中心點,再確定網格線交點的做法,減小了運算量;此外,本發明所述的數據矩陣碼的識別方法采用輪廓跟蹤法代替現有技術中的區域合并分裂法,也減小了運算量和存儲量,達到了高效、快速識別的目的,同時也降低了對數據矩陣碼進行識別的硬件要求。
圖1是常見的標準數據矩陣碼的結構圖;圖2是將圖像信息二值化處理后得到的數據矩陣碼;圖3是采用輪廓跟蹤法搜尋數據矩陣碼的輪廓的示意圖;圖4是輪廓跟蹤法的示意圖;圖5是對圖3中所得到的輪廓進行直線擬合的示意圖;圖6是提取數據矩陣的示意圖;圖7是單個黑色模塊的放大示意圖;圖8是本發明所述的數據矩陣碼識別方法應用在整個識別過程中的流程圖。
以下結合實施例及其附圖作進一步的詳細說明。
具體實施例方式
為了清楚的說明本發明所涉及的數據矩陣碼的識別方法,以下實施例從實際應用的角度出發,從圖像二值化階段開始介紹數據矩陣碼的識別過程。
參見圖2所示,使用類似于CMOS(互補型金屬氧化物半導體)或CCD(電荷耦合裝置)之類的感光成像裝置將標志于產品上的數據矩陣碼標記進行取像操作后得到圖像信息(圖未示),將此圖像信息通過眾所周知的二值化處理后即可得到圖2中所示的數據矩陣碼2。
類似于圖1中所示的數據矩陣碼1,圖2中所示數據矩陣碼2包括特征邊20、校正模塊21以及數據區22,特征邊20呈“L”形,其位于數據矩陣碼2的兩個相鄰邊緣,包括垂直特征邊201和水平特征邊202;校正模塊21位于數據矩陣碼1的另外兩個相鄰邊緣(分別與特征邊20相對),其包括多個間隔排列的黑色模塊210和白色模塊211;數據區22位于由特征邊20和校正模塊21圍成的矩形區域之內,其包含若干個黑色碼元220和白色碼元221。
由于圖2中所示的數據矩陣碼2是對圖像信息經過取像、二值化之后得到的,導致其邊緣并不規則,這是因為在感光成像裝置的取向過程中,像素密度、拍攝焦距、拍攝角度以及圖像信息本身的污損等諸多因素都會對二值化過程產生影響,導致數據矩陣碼2的形狀不能達到最理想的狀況。然而,只要這種形狀上的誤差不超出一定的范圍,數據矩陣碼2仍然是可以被識別的,本發明也正是要在校正模塊11存在一定誤差的情況下,還能夠準確地對數據矩陣碼2進行高效、快速的識別。
圖2中所示的是一個12×12規格的數據矩陣碼2,即,校正模塊21包括黑色模塊210和白色模塊211共計22個(每條邊11個),加上垂直特征邊201和水平特征邊202的頂端,即組成12x12規格的數據矩陣碼2。
圖3中是采用輪廓跟蹤法搜尋數據矩陣碼2的輪廓。輪廓跟蹤法的基本思路是先根據探測準則找到目標輪廓的一個點,再以此為起始點,用跟蹤準則找出目標輪廓上的其他點。所謂探測準則是指按從左到右,從上到下的順序搜索,在數據矩陣碼2中找到第一個黑點,如果此黑點位于前面找到的非目標輪廓內,則繼續搜索,直至找到位于前面已經搜索到的輪廓外的第一個黑點,把它作為起始點。
結合圖4所示,所謂跟蹤準則是指從上述起始點開始,定義初始的搜索方向為沿左下方即圖4中的0方向(每個點的四周有八個相鄰點,故每個點周圍劃分為0~7八個方向),觀測像素,若是白點,則逆時針旋轉45度,觀測其1方向的像素,依次類推,直至找到黑點。當前點為黑點時,即找到一邊緣點,此時掃描方向退回2格(即圖4中順時針轉90度),以保證搜索到的是最外邊的黑色點。直至邊緣搜索過程回到起始點,就得到了一個物體的輪廓。
圖5中對圖3中所得到的輪廓進行直線擬合(采用最小二乘法),并得到“L”型特征邊20所在的直線L1和L2,需要說明的是,由于上述成像過程中的各種可能存在的誤差,特征邊20并不是理想的“L”形狀,因此直線擬合過程是必需的,由于采用最小二乘法對直線進行擬合是公知的現有技術,在此不做贅述。
得到直線L1和L2之后,計算輪廓上的點到兩條直線的距離,到其中一條直線的最大距離即為另一條直線所對應的特征邊的長度。例如,假設輪廓上到直線L2距離最遠的點為點A,二者之間的距離為max1,則L1所對應的特征邊(水平特征邊202)的長度為max1;同理,假設輪廓上到直線L1距離最遠的點為點B,二者之間的距離為max2,則L2所對應的特征邊(垂直特征邊201)的長度為max2。
得到垂直特征邊201和水平特征邊202的長度后,計算校正模塊21所包含的單個模塊(每一個黑色模塊210或白色模塊211均可稱之為單個模塊,而且黑色模塊210和白色模塊211在理論上是大小相等的)在垂直方向與水平方向的兩個平均邊長,如圖6和圖7所示,假設圖6中某一個黑色模塊210a的兩個平均邊長為M1、M2,則M1=max1/12,M2=max2/12。為清楚起見,圖7中給出了黑色模塊210a的放大示意圖。
如圖6所示,在計算出邊長M1、M2后,作10條平行于直線L1的直線v1、v2、v3......v10(為簡單起見,圖6中只標示直線v1、v2、v3、v10),其中直線v1與直線L1之間的間距為1.5M1,v2與v1之間的間距為M1,v3與v2之間的間距也為M1,以此類推,即,v1至v10中任意兩條相鄰直線之間的間距均為M1。同樣的,作10條平行于直線L2的直線h1、h2、h3......h10(為簡單起見,圖6中只標示直線h1、h2、h3、h10),其中直線h1與直線L2之間的間距為1.5M2,h2與h1之間的間距為M2,h3與h2之間的間距也為M2,以此類推,即,h1至h10中任意兩條相鄰直線之間的間距均為M2。
顯然,直線v1、v2、v3......v10分別平分了其所對應的黑色模塊210或白色模塊211,而直線h1、h2、h3......h10也分別平分了其所對應的黑色模塊210或白色模塊211。直線v1、v2、v3......v10與直線h1、h2、h3......h10的各交點即為數據區22中的黑色碼元220或白色碼元221的中心點,若中心點為黑色,則其對應的比特值為1,反之為0。為了更加準確的判斷每個點的比特值,可以檢測每個中心點鄰域中黑白像素的個數,若黑色像素個數大于閾值,則認為該點的比特值為1,反之為0,由此獲取數據區22的比特矩陣。
在獲取數據區22的比特矩陣后,即完成了數據矩陣碼2的識別工作。后續按照ISO/IEC 16022∶2000標準中的相關規則進行處理,即可得到最終的編碼信息,這些后續處理與本發明的發明目的無關,在此不做贅述。
以上描述實質上揭示出了本發明所述的數據矩陣碼的識別過程中的幾個主要步驟,為了更系統、完整的描述本發明,以下再結合圖8中的流程圖,進一步說明本發明所述的數據矩陣碼識別方法應用在整個識別過程中的詳細流程
首先,在步驟81中對需要識別的對象進行取像,并得到圖像信息9,在步驟82中將圖像信息9進行二值化處理,得到數據矩陣碼2,在步驟83中運用輪廓跟蹤法搜尋數據矩陣碼2的輪廓,在步驟84中判斷輪廓搜尋是否成功,如果輪廓搜尋不成功,則可能是由于取像過程中的干擾和誤差較大,因此重新執行步驟81,重新對需要識別的對象進行取像;如果輪廓搜尋成功,則執行步驟85,搜尋“L”形特征邊20所在直線,如果搜尋“L”形特征邊20所在直線不成功,則可能是輪廓搜尋錯誤,因此重新執行步驟83,再次搜尋數據矩陣碼2的輪廓;如果搜尋“L”形特征邊20所在直線成功,則執行步驟87,確定特征邊20的邊長及校正模塊21所包含模塊(黑色模塊210和白色模塊211)的邊長M1和M2,在步驟88中判斷邊長M1和M2的長度差是否小于預定的閾值,如果大于或等于預定的閾值,則重新執行步驟83,如果小于預定的閾值,則執行步驟89,確定數據區22的碼元坐標(包括黑色碼元220和白色碼元221)并提取比特矩陣,關于確定數據區22的碼元坐標的確定方法,上述對圖6的描述中已經詳細作了介紹,再次簡要說明如下作一組與垂直特征邊201平行的直線v1、v2、v3......v10,相鄰平行直線之間的間距為M1,且垂直特征邊201與其相鄰直線之間的間距為1.5M1;作另一組與水平特征邊202平行的直線h1、h2、h3......h10,相鄰平行直線之間的間距為M2,且水平特征邊201與其相鄰直線之間的間距為1.5M2。
通過上述描述可知,本發明所述的數據矩陣碼的識別方法根據特征邊20的長度計算邊長M1和M2,然后直接作平行線得到比特矩陣,摒棄了現有技術中先確定校正模塊的中心點,再確定網格線交點的做法,減小了運算量;此外,本發明所述的數據矩陣碼的識別方法采用輪廓跟蹤法代替現有技術中的區域合并分裂法,也減小了運算量和存儲量,達到了高效、快速識別的目的,同時也降低了對數據矩陣碼進行識別的硬件要求。
顯然,上述步驟中,步驟81和步驟82是進行矩陣識別前的準備工作,并不是本發明所述的數據矩陣碼的識別方法的必要步驟,而步驟84、步驟86與步驟88是為了更加準確地進行識別,避免可能出現的誤差,因此也不是本發明所述的數據矩陣碼的識別方法的必要步驟,基于上述考慮的微小改變以及等效變換均應包含在本發明權利要求所保護的范圍之內。
權利要求
1.數據矩陣碼的識別方法,所述數據矩陣碼包括“L”形特征邊、校正模塊以及數據區,“L”形特征邊位于數據矩陣碼的兩個相鄰邊緣,包括垂直特征邊(201)和水平特征邊(202);校正模塊位于數據矩陣碼的另外兩個相鄰邊緣,其包括多個間隔排列的黑色模塊和白色模塊;數據區位于由特征邊和校正模塊圍成的矩形區域之內,其包含若干個黑色碼元和白色碼元,所述數據矩陣碼的識別方法包括以下步驟步驟一,使用輪廓跟蹤法搜尋數據矩陣碼的輪廓;步驟二,對輪廓上的點進行直線擬合,搜尋“L”形特征邊所在直線;步驟三,計算輪廓上的點到特征邊所在直線的距離,分別得到垂直特征邊(201)和水平特征邊(202)的長度,并通過垂直特征邊(201)和水平特征邊(202)的長度計算出識別模塊中單個模塊在垂直方向與水平方向的兩個平均邊長(M1、M2);步驟四,作一組與垂直特征邊(201)平行的直線,相鄰平行直線之間的間距為其中一個邊長(M1),且垂直特征邊(201)與其相鄰直線之間的間距為1.5倍此邊長(M1);作另一組與水平特征邊(202)平行的直線,相鄰平行直線之間的間距為另一個邊長(M2),且水平特征邊(201)與其相鄰直線之間的間距為1.5倍此邊長(M2);步驟五,根據兩組直線的交點確定黑色碼元和白色碼元的坐標,并提取比特矩陣。
2.根據權利要求1所述的數據矩陣碼的識別方法,其特征在于在進行步驟一之前,首先對需要識別的對象進行取像操作和二值化處理。
3.根據權利要求1所述的數據矩陣碼的識別方法,其特征在于在執行完步驟一之后,判斷輪廓搜尋是否成功,如果輪廓搜尋不成功,則重新對需要識別的對象進行取像操作;如果輪廓搜尋成功,則執行步驟二。
4.根據權利要求1所述的數據矩陣碼的識別方法,其特征在于在執行步驟二之后,判斷搜尋“L”形特征邊所在直線是否成功,如果不成功,則重新執行步驟一;如果搜尋“L”形特征邊所在直線成功,則執行步驟三。
5.根據權利要求1所述的數據矩陣碼的識別方法,其特征在于執行所述步驟三之后,判斷兩個平均邊長(M1、M2)之間的長度差是否小于預定的閾值,如果大于或等于預定的閾值,則重新執行步驟一,如果小于預定的閾值,則執行步驟四。
6.根據權利要求1至5中任一項所述的數據矩陣碼的識別方法,其特征在于所述步驟五包括檢測每個交點的鄰域中黑白像素個數的過程,若黑色像素個數大于閾值,則認為該點的比特值為1,反之為0。
全文摘要
數據矩陣碼的識別方法,包括使用輪廓跟蹤法搜尋數據矩陣碼的輪廓;搜尋“L”形特征邊所在直線;計算識別模塊中單個模塊在垂直方向與水平方向的兩個平均邊長;根據上述邊長作一組與垂直特征邊平行的相應直線,作另一組與水平特征邊平行的直線;根據兩組直線的交點確定黑色碼元和白色碼元的坐標,并提取比特矩陣。本發明采用輪廓跟蹤法代替現有技術中的區域合并分裂法,同時通過計算特征邊的長度計算識別模塊中單個模塊的邊長,然后直接作平行線得到比特矩陣,摒棄了現有技術中先確定校正模塊的中心點,再確定網格線交點的做法,減小了運算量和存儲量,達到了高效、快速識別的目的,同時也降低了對數據矩陣碼進行識別的硬件要求。
文檔編號G06K9/36GK101017527SQ200610035088
公開日2007年8月15日 申請日期2006年4月18日 優先權日2006年4月18日
發明者陸勇, 方偉 申請人:珠海炬力集成電路設計有限公司