專利名稱:Data Matrix碼條碼解碼芯片及其解碼方法
DataMatr i χ碼條碼解碼芯片及其解碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及條碼識別技術(shù)領(lǐng)域,特別地,涉及一種Data Matrix碼條碼解碼芯片及 其解碼方法。
背景技術(shù):
條碼技術(shù)是在計(jì)算機(jī)技術(shù)與信息技術(shù)基礎(chǔ)上發(fā)展起來的一門集編碼、印刷、識別、 數(shù)據(jù)采集和處理于一身的新興技術(shù)。條碼技術(shù)由于其識別快速、準(zhǔn)確、可靠以及成本低等優(yōu) 點(diǎn),被廣泛應(yīng)用于商業(yè)、圖書管理、倉儲、郵電、交通和工業(yè)控制等領(lǐng)域,并且勢必在逐漸興 起的“物聯(lián)網(wǎng)”應(yīng)用中發(fā)揮重大的作用。目前被廣泛使用的條碼包括一維條碼及二維條碼。一維條碼又稱線形條碼是由平 行排列的多個(gè)“條”和“空”單元組成,條形碼信息靠條和空的不同寬度和位置來表達(dá)。一 維條碼只是在一個(gè)方向(一般是水平方向)表達(dá)信息,而在垂直方向則不表達(dá)任何信息,因 此信息容量及空間利用率較低,并且在條碼污損后即無法識別。二維條碼是由按一定規(guī)律在二維方向上分布的黑白相間的特定幾何圖形組成,其 可以在二維方向上表達(dá)信息,因此信息容量及空間利用率較低,并具有一定的校驗(yàn)功能。二 維條碼可以分為堆疊式二維條碼和矩陣式二維條碼。堆疊式二維條碼是由多行短截的一 維條碼堆疊而成,代表性的堆疊式二維條碼包括PDF417、Code 49、Code 16K等。矩陣式二 維條碼是由按預(yù)定規(guī)則分布于矩陣中的黑、白模塊組成,代表性的矩陣式二維條碼包括QR 碼、Data Matrix碼、Maxi Code、Aztec Code、漢信碼等。二維條碼除具備一維條碼也具有 的優(yōu)點(diǎn)外,同時(shí)還具有信息容量大、密度高、具有糾錯(cuò)功能、可表示各種多媒體信息以及多 種文字信息、保密防偽性強(qiáng)、解碼可靠性高的特點(diǎn)?,F(xiàn)有技術(shù)在對二維條碼進(jìn)行解碼的過程中,通常是利用攝影設(shè)備對條碼進(jìn)行拍 攝,以獲取條碼圖像,然后對條碼圖像進(jìn)行去燥、灰度提取、二值化、碼字提取、譯碼等處理 方法。然而,上述現(xiàn)有技術(shù)在對條碼圖像進(jìn)行自適應(yīng)亮度均衡化和二值化處理過程時(shí), 是針對每一個(gè)像素點(diǎn)進(jìn)行自適應(yīng)亮度均衡化和二值化處理,因此要對每一個(gè)像素點(diǎn)的灰度 進(jìn)行調(diào)節(jié),并與閾值灰度進(jìn)行比對,數(shù)據(jù)計(jì)算量很大,降低了系統(tǒng)的處理速度。而且由于該 系統(tǒng)是在不知曉條碼特征信息(即條碼的相關(guān)參數(shù),包括條碼方向、條碼區(qū)域尺寸和條碼 版本、條碼畸變系數(shù)等信息)的情況下進(jìn)行二值化處理,會造成模塊錯(cuò)誤,即在二值化過程 中,由于噪聲、畸變等因素的影響,出現(xiàn)模塊的深淺狀態(tài)和設(shè)計(jì)狀態(tài)發(fā)生倒置的情況,這大 大降低條碼的識別能力,增加了條碼識別的誤碼率。尤其在條碼版本較高,所含模塊數(shù)量較 多的情況下,或者是條碼圖像分辨率低,曝光質(zhì)量不佳的情況下,這種方法較難對二維條碼 進(jìn)行識別。另外,現(xiàn)有技術(shù)的Data Matrix碼識別系統(tǒng)通常是采用處理器調(diào)用程序存儲器中 的解碼程序,對條碼圖像進(jìn)行處理來實(shí)現(xiàn)識別解碼。該系統(tǒng)的問題在于一、處理速度慢,該 系統(tǒng)需要在微處理器中寫入實(shí)現(xiàn)解碼算法的一系列程序,單個(gè)處理器只能同時(shí)針對一種特定類型的條碼格式進(jìn)行解碼處理,處理器在一個(gè)時(shí)鐘周期只能處理一個(gè)操作,軟件處理也 決定了解碼流程的單流程特性,較難實(shí)現(xiàn)對條碼圖像的流水線作業(yè)和并行處理,處理速度 較慢;二、使用成本高,由于解碼算法較為復(fù)雜,因此需要使用高端的處理器(如32位處理 器)實(shí)現(xiàn)以上算法,需要處理器以及硬件加速電路相配合,這樣會造成系統(tǒng)成本高昂;三、 系統(tǒng)復(fù)雜,集成難度大,功耗高,不易于便攜應(yīng)用。因此,針對現(xiàn)有技術(shù)存在的以上不足,亟需提供一種Data Matrix碼條碼解碼芯片 及其解碼方法,使得能保證解碼過程快速、順利地進(jìn)行。
發(fā)明內(nèi)容針對現(xiàn)有技術(shù)存在的處理速度慢、錯(cuò)誤發(fā)生機(jī)率較大等不足,本發(fā)明提供一種 Data Matrix碼條碼解碼芯片及其解碼方法,能保證Data Matrix碼解碼過程快速、順利地 進(jìn)行。本發(fā)明提供一種Data Matrix碼條碼解碼芯片,包括特征搜索單元、條碼參數(shù)獲取 單元、校正特征獲取單元、模塊信息處理單元、二值化單元、碼字提取單元以及糾錯(cuò)譯碼單 元。特征搜索單元在條碼圖像中搜索位置探測圖形來確定位置探測圖形的像素坐標(biāo)。條碼 參數(shù)獲取單元根據(jù)位置探測圖形的像素坐標(biāo)來獲取條碼參數(shù),確定條碼區(qū)域和條碼方向。 校正特征獲取單元在條碼圖像上搜索校正圖形,獲取校正圖形的像素坐標(biāo)。模塊信息處理 單元根據(jù)校正圖形的像素坐標(biāo)計(jì)算模塊尺寸,獲取模塊參數(shù)和糾錯(cuò)等級,并根據(jù)模塊參數(shù) 計(jì)算校正圖形的模塊坐標(biāo),然后根據(jù)條碼參數(shù)、模塊參數(shù)、以及校正圖形的像素坐標(biāo)和模塊 坐標(biāo),計(jì)算Data Matrix碼的模塊所對應(yīng)的灰度值。二值化單元對Data Matrix碼的模塊 進(jìn)行二值化處理。碼字提取單元根據(jù)二值化處理的Data Matrix碼的模塊提取碼字。糾錯(cuò) 譯碼單元根據(jù)糾錯(cuò)等級對碼字進(jìn)行糾錯(cuò)譯碼處理。本發(fā)明還提供一種Data Matrix碼解碼方法,包括以下步驟a.獲取條碼圖像; b.搜索位置探測圖形,根據(jù)位置探測圖形的像素坐標(biāo)來獲取條碼參數(shù);c.搜索校正特征, 獲取校正特征的像素坐標(biāo);d.根據(jù)校正特征的像素坐標(biāo)計(jì)算模塊尺寸、模塊參數(shù)以及校正 特征的模塊坐標(biāo),根據(jù)校正特征的像素坐標(biāo)和模塊坐標(biāo)計(jì)算條碼圖像的像素坐標(biāo)與模塊坐 標(biāo)之間的映射關(guān)系;f.根據(jù)映射關(guān)系和Data Matrix碼的模塊參數(shù)計(jì)算模塊灰度值;g.對 模塊灰度值進(jìn)行二值化處理;i.根據(jù)二值化處理的結(jié)果提取碼字;j.對碼字進(jìn)行譯碼處 理。本發(fā)明另提供一種Data Matrix碼解碼方法,包括以下步驟a.獲取條碼圖像; b.在條碼圖像的預(yù)定區(qū)域內(nèi),提取符合預(yù)定長度的多個(gè)黑白邊界線段;c.基于多個(gè)黑白邊 界線段構(gòu)建多個(gè)直線;d.根據(jù)平行線特性對多個(gè)直線進(jìn)行分組并形成行平行線組及列平 行線組;e.根據(jù)Data Matrix碼的特性,通過對行平行線組及列平行線組構(gòu)建的網(wǎng)格進(jìn)行 判斷來確認(rèn)是否存在Data Matrix碼;f.獲取行平行線組及列平行線組構(gòu)建的網(wǎng)格的特征 圖形的像素坐標(biāo),根據(jù)位置探測圖形的像素坐標(biāo)獲取條碼參數(shù);g.搜索校正特征,獲取校 正特征的像素坐標(biāo);h.根據(jù)校正特征的像素坐標(biāo)計(jì)算模塊尺寸、模塊參數(shù)以及校正特征的 模塊坐標(biāo),根據(jù)校正特征的像素坐標(biāo)和模塊坐標(biāo)計(jì)算條碼圖像的像素坐標(biāo)與模塊坐標(biāo)之間 的映射關(guān)系;i.根據(jù)映射關(guān)系和DataMatrix碼的模塊參數(shù)計(jì)算模塊灰度值;j.對模塊灰 度值進(jìn)行二值化處理;k.根據(jù)二值化處理的結(jié)果提取碼字;1.對碼字進(jìn)行譯碼處理。
本發(fā)明的Data Matrix碼解碼方法,通過搜索位置探測圖形和校正圖形,獲取校正 圖形的像素灰度坐標(biāo)與模塊坐標(biāo),計(jì)算條碼圖像的像素坐標(biāo)與模塊坐標(biāo)之間的映射關(guān)系, 然后根據(jù)該映射關(guān)系計(jì)算模塊灰度值,對模塊灰度值進(jìn)行二值化,進(jìn)而還原Data Matrix碼 所對應(yīng)的條碼符號圖形。與現(xiàn)有技術(shù)相比,本發(fā)明的Data Matrix碼解碼方法是在知曉條 碼特征信息,并根據(jù)條碼特征信息對條碼圖像進(jìn)行校正后進(jìn)行的二值化處理,因此降低了 噪聲、畸變等因素對二值化過程的影響,減少了模塊錯(cuò)誤的出現(xiàn),大大增加了條碼的識別能 力,提升了條碼識別的解碼成功率。本發(fā)明的Data Matrix碼條碼解碼芯片采用硬件流水線結(jié)構(gòu),通過硬件邏輯實(shí)現(xiàn) 對條碼圖像的識別解碼,由于硬件流水線結(jié)構(gòu)適于對條碼圖像進(jìn)行流水線作業(yè)和并行處 理,因此處理速度很快。相對于現(xiàn)有技術(shù)的處理器解碼技術(shù)而言,本發(fā)明的Data Matrix碼條碼解碼芯片 采用全硬件結(jié)構(gòu),無需處理器參與解碼,芯片結(jié)構(gòu)相對于處理器而言結(jié)構(gòu)更為簡化、面積更 小、功耗更低、成本更低、易于集成,容易實(shí)現(xiàn)便攜應(yīng)用??梢苑奖愕嘏c物聯(lián)網(wǎng)技術(shù)相結(jié)合, 為條碼技術(shù)的應(yīng)用提供了更為廣闊的發(fā)展空間。
圖1是Data Matrix碼的條碼符號圖形示意圖。圖2是Data Matrix碼的條碼符號圖形的功能示意圖。圖3是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的解碼方法的處理流程圖。圖4是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式的結(jié)構(gòu)示意 圖。圖5是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式中校正特征獲 取單元的第一種校正點(diǎn)獲取結(jié)構(gòu)的示意圖。圖6是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式中模塊信息處 理單元的結(jié)構(gòu)示意圖。圖7是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式中模塊信息處 理單元的轉(zhuǎn)換原理示意圖。
具體實(shí)施方式有關(guān)本發(fā)明的特征及技術(shù)內(nèi)容,請參考以下的詳細(xì)說明與附圖,附圖僅提供參考 與說明,并非用來對本發(fā)明加以限制。為使本領(lǐng)域技術(shù)人員更易于理解本發(fā)明的技術(shù)內(nèi)容,提供以下條碼術(shù)語的參考與 說明,其中部分條碼術(shù)語是根據(jù)中華人民共和國國家標(biāo)準(zhǔn)GB/T12905-2000而來,并非用于 對本發(fā)明加以限制。條碼符號某種條碼定義的表示信息的條、空組合形式或模塊的組合形式。碼字碼字表示源數(shù)據(jù)向條碼符號轉(zhuǎn)換的中間值。一種符號的碼字?jǐn)?shù)決定了該條 碼符號的所有符號的數(shù)量。數(shù)據(jù)碼字?jǐn)?shù)據(jù)碼字表示數(shù)據(jù)符號的值。糾錯(cuò)碼字糾錯(cuò)碼字表示糾錯(cuò)符號的值。
模塊矩陣式二維條碼中的一個(gè)最小獨(dú)立單元,代表一位二進(jìn)制數(shù)據(jù)。功能圖形矩陣式二維條碼符號中用于符號定位與特征識別的特定圖形。功能圖 形包括探測圖形、定位圖形、校正圖形等。探測圖形矩陣式二維條碼符號圖形中,用于在條碼圖像中進(jìn)行符號定位的特殊 圖形,也稱位置探測圖形。定位圖形矩陣式二維條碼符號圖形中,用于確定符號中模塊的像素坐標(biāo)的圖形。校正圖形矩陣式二維條碼符號圖形中,用于確定符號位置的一個(gè)固定的參照圖 形。在條碼圖像有一定程度畸變或污損的情況下,可以通過校正圖形對條碼圖像中模塊的 像素坐標(biāo)進(jìn)行校正。編碼區(qū)域矩陣式二維條碼符號圖形中,未被功能圖形占據(jù),用于對數(shù)據(jù)和糾錯(cuò)碼 字進(jìn)行編碼,表示數(shù)據(jù)符號和糾錯(cuò)符號的區(qū)域。版本用于表示矩陣式二維條碼符號規(guī)格的序列,反映了符號尺寸、符號中的模塊 數(shù)量和符號中的模塊的排列方式。版本信息矩陣式二維條碼符號圖形中,用于確定矩陣式二維條碼符號版本號的 功能圖形。格式用于表示矩陣式二維條碼符號所使用的糾錯(cuò)等級以及掩模圖形。格式信息矩陣式二維條碼符號圖形中,用于確定矩陣式二維條碼符號所使用的 糾錯(cuò)等級以及掩模圖形信息的功能圖形。掩模圖形在編碼區(qū)域內(nèi)用掩模圖形對位圖進(jìn)行異或處理,其目的是使符號中深 色與淺色模塊的比例均衡,并減少影響條碼圖像處理的圖形出現(xiàn)。二值化條碼圖像用整體閾值或局部閾值對灰度條碼圖像進(jìn)行處理,從而得到的 深淺兩色的條碼圖像。閾值分割兩個(gè)檢驗(yàn)等級的邊界值,其值本身是上面等級的下限值。模塊錯(cuò)誤在二值化條碼圖像中,深淺狀態(tài)和設(shè)計(jì)狀態(tài)發(fā)生倒置的模塊。像素光敏陣列(如CXD或CMOS器件)上的單個(gè)光敏單元在條碼圖像上所對應(yīng)的 單位,一個(gè)像素通常被視為條碼圖像的最小的完整單位。數(shù)碼條碼圖像的儲存方式一般以 像素(Pixel)為單位,每個(gè)像素是數(shù)碼條碼圖像里面積最小的單位。圖1是Data Matrix碼的符號圖形示意圖,圖2是Data Matrix碼的符號圖形功 能說明圖。為使本領(lǐng)域技術(shù)人員更易于理解本發(fā)明的技術(shù)內(nèi)容,以下結(jié)合圖1、圖2對Data Matrix碼進(jìn)行簡單說明。Data Matrix碼也稱數(shù)據(jù)矩陣碼,包括兩種類型ECC000_140和ECC200。 ECC000-140采用卷積碼糾錯(cuò),而ECC200則使用Reed-Solomon算法糾錯(cuò)。目前Data Matrix 碼的研究與應(yīng)用主要以ECC200為主,ECC000-140應(yīng)用很少。Data Matrix碼的功能圖形 包括位置探測圖形和校正圖形。編碼區(qū)包括表示符號信息的版本信息和格式信息區(qū),以及 數(shù)據(jù)碼字和糾錯(cuò)碼字區(qū)。ECC200Data Matrix碼的符號編碼不采用掩模圖形,其糾錯(cuò)與模 塊排列方式關(guān)聯(lián),因此ECC200Data Matrix碼的編碼區(qū)沒有表示符號信息的區(qū)域,只包括數(shù) 據(jù)碼字和糾錯(cuò)碼字區(qū),根據(jù)檢測到的ECC200Data Matrix碼的模塊像素坐標(biāo),即可以確定 ECC200Data Matrix碼的模塊參數(shù)(模塊尺寸、行數(shù)、列數(shù)等)和糾錯(cuò)等級。如圖2所示,Data Matrix碼的位置探測圖形是位于數(shù)據(jù)區(qū)域邊緣寬度為1個(gè)模塊的區(qū)域。Data Matrix碼的左邊和下邊相鄰的兩條邊為深色實(shí)線,形成了一個(gè)L形邊界, 主要用于確定條碼的物理尺寸(即條碼區(qū)域)、定位和校正失真。L形邊界的兩條對邊由交 替的單個(gè)模塊寬度的深色和淺色模塊組成的校正圖形,主要用于限定條碼的模塊坐標(biāo)和校 正失真,但也能輔助確定條碼的物理尺寸。以下對本發(fā)明的Data Matrix碼解碼方法進(jìn)行詳細(xì)描述,圖3是根據(jù)本發(fā)明的 Data Matrix碼解碼方法的處理流程圖。如圖3所示,在步驟901,在條碼圖像上進(jìn)行特征搜索,以確定位置探測圖形(L形 邊界)的像素坐標(biāo),根據(jù)位置探測圖形的像素坐標(biāo)獲取條碼參數(shù),條碼參數(shù)包括條碼區(qū)域 和條碼方向。在本發(fā)明的一種實(shí)施方式中,此步驟可以通過模板匹配檢測位置探測圖形的 方式實(shí)現(xiàn)。在本發(fā)明的另一種實(shí)施方式中,此步驟也可以通過比例檢測的方式實(shí)現(xiàn),該方式 包括通過掃描方式檢測條碼圖像中的深淺模塊邊界點(diǎn),將深淺模塊邊界點(diǎn)構(gòu)成的線特征與 位置探測圖形相比較,根據(jù)比較結(jié)果確定條碼圖像中位置探測圖形的像素坐標(biāo)。確定位置 探測圖形(L形邊界)的像素坐標(biāo)包括模板匹配、十字掃描等多種方法。在條碼圖像中,由 于某些模塊組合的圖形也具有類似于L形邊界的L形圖形,特征搜索可能獲取多個(gè)L形圖 形的匹配位置,因此需要根據(jù)L形邊界與空白區(qū)之間的相對關(guān)系進(jìn)行判斷,排除無效的L形 圖形。另外,本發(fā)明還提供一種通過行列線檢測實(shí)現(xiàn)對Data Matrix碼的識別的實(shí)施方式, 該方法包括以下步驟首先在條碼圖像的預(yù)定區(qū)域內(nèi),提取符合預(yù)定長度的多個(gè)黑白邊界 線段;然后基于提取到的多個(gè)黑白邊界線段構(gòu)建多個(gè)直線;再根據(jù)平行線特性對多個(gè)直線 進(jìn)行分組并形成行平行線組及列平行線組;最后根據(jù)Data Matrix碼的特性,通過對行平 行線組及列平行線組構(gòu)建的網(wǎng)格進(jìn)行判斷來確認(rèn)是否存在Data Matrix碼,并獲取行平行 線組及列平行線組構(gòu)建的網(wǎng)格的特征圖形的像素坐標(biāo),根據(jù)特征圖形的像素坐標(biāo)獲取條碼 參數(shù)。在步驟902,根據(jù)檢測到的位置探測圖形的像素坐標(biāo)和條碼參數(shù),在條碼圖像上搜 索校正圖形,例如為軌道線(也稱鐵路線),獲取校正圖形中心點(diǎn)和/或邊緣點(diǎn)的像素坐標(biāo), 即軌道線的像素坐標(biāo),獲取校正特征。在步驟903,根據(jù)校正特征提取模塊參數(shù)和校正參數(shù)。具體步驟包括根據(jù)軌道線中 多個(gè)模塊的中心點(diǎn)的像素坐標(biāo)來計(jì)算Data Matrix碼的模塊間隔,獲取模塊尺寸,根據(jù)條碼 參數(shù)和模塊尺寸獲取Data Matrix碼的模塊行數(shù)和列數(shù),獲取模塊參數(shù)。然后根據(jù)模塊參 數(shù)計(jì)算軌道線的模塊坐標(biāo)。并根據(jù)軌道線中多個(gè)模塊的中心點(diǎn)的像素坐標(biāo)和模塊坐標(biāo)計(jì)算 校正參數(shù),該校正參數(shù)反映了條碼圖像的像素點(diǎn)與條碼模塊之間的映射關(guān)系。之后根據(jù)模 塊尺寸和校正參數(shù)計(jì)算各個(gè)模塊所對應(yīng)的像素點(diǎn),根據(jù)各個(gè)模塊所對應(yīng)的像素點(diǎn)的坐標(biāo)和 灰度值計(jì)算各個(gè)模塊所對應(yīng)的灰度值,構(gòu)造模塊圖。由于條碼在印刷和成像過程中可能發(fā)產(chǎn)生畸變,造成條碼上不同區(qū)域所對應(yīng)的模 塊寬度可能不相等,而Data Matrix碼的軌道線是由交替的單個(gè)模塊寬度的深色和淺色模 塊組成,而且會貫穿條碼的水平方向和垂直方向,軌道線上深色和淺色模塊的模塊寬度變 化就反映了 Data Matrix碼的畸變情況,因此通過根據(jù)軌道線來計(jì)算每個(gè)模塊的寬度,可以 有效地抵御條碼畸變。在步驟904,對模塊圖進(jìn)行二值化處理以提取位圖。在步驟905,根據(jù)Data Matrix碼的排列規(guī)則進(jìn)行位流提取并轉(zhuǎn)換為數(shù)據(jù)碼字和糾錯(cuò)碼字。在步驟906,根據(jù)糾錯(cuò)等級,重新將數(shù)據(jù)碼字和糾錯(cuò)碼字按塊排列,進(jìn)行錯(cuò)誤檢測 和糾錯(cuò)計(jì)算,糾正刪除錯(cuò)誤和未知錯(cuò)誤,還原表示Data Matrix碼信息的數(shù)據(jù)位流。在步驟907,將還原的數(shù)據(jù)位流進(jìn)行譯碼,以獲得Data Matrix碼信息。以下對本發(fā)明的Data Matrix碼條碼解碼芯片進(jìn)行詳細(xì)描述,圖4是根據(jù)本發(fā)明 的Data Matrix碼條碼解碼芯片的第一實(shí)施方式的結(jié)構(gòu)示意圖。如圖4所示,數(shù)據(jù)存儲器11存儲條碼圖像,Data Matrix碼條碼解碼芯片10對數(shù) 據(jù)存儲器11存儲條碼圖像進(jìn)行識別解碼。Data Matrix碼條碼解碼芯片10包括控制邏輯 單元100、特征搜索單元101、條碼參數(shù)獲取單元102、模塊參數(shù)獲取單元103、校正特征獲 取單元104、模塊信息處理單元105、二值化單元106、碼字提取單元107以及糾錯(cuò)譯碼單元 108??刂七壿媶卧?00用于控制特征搜索單元101、條碼參數(shù)獲取單元102、模塊參數(shù) 獲取單元103、校正特征獲取單元104、模塊信息處理單元105、二值化單元106、碼字提取單 元107以及糾錯(cuò)譯碼單元108的工作狀態(tài)和處理流程。控制邏輯單元100采用有限狀態(tài)機(jī) (Finite State Machine)形式進(jìn)行控制。有限狀態(tài)機(jī)又稱有限狀態(tài)自動機(jī)或簡稱狀態(tài)機(jī), 是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的狀態(tài)邏輯??刂七壿媶卧?100可以用可編程邏輯設(shè)備、可編程邏輯控制器、邏輯門和觸發(fā)器來構(gòu)造。優(yōu)選的實(shí)施方式 中,控制邏輯單元100包括寄存器、確定狀態(tài)轉(zhuǎn)移的組合邏輯以及確定狀態(tài)控制模塊輸出 的組合邏輯。寄存器用于存儲狀態(tài)變量。特征搜索單元101通過在條碼圖像中搜索特征圖形來確定特征圖形在條碼圖像 上的像素坐標(biāo)。特征圖形包括但不限于條碼的功能圖形,例如位置探測圖形、校正圖形等。 優(yōu)選的實(shí)施方式中,位置特征搜索單元101采用模板匹配的方式搜索位置探測圖形,例如 是L形邊界,其根據(jù)L形邊界的形狀,生成L形邊界檢測模板,將L形邊界檢測模板相對條 碼圖像進(jìn)行平移并進(jìn)行灰度匹配,以確定L形邊界檢測模板與條碼圖像的最佳匹配位置, 并根據(jù)最佳匹配位置確定條碼圖像中L形邊界的轉(zhuǎn)折點(diǎn)和邊界點(diǎn)的像素坐標(biāo)。在條碼圖像 中,由于某些模塊組合的圖形也具有類似L形邊界的L形圖形,特征搜索單元101可能獲取 多個(gè)L形圖形的匹配位置,因此需要根據(jù)L形邊界與空白區(qū)之間的相對關(guān)系進(jìn)行判斷,排除 無效的L形圖形。在本發(fā)明的另一種實(shí)施方式中,特征搜索單元101也可以通過比例檢測 的方式來確定特征圖形在條碼圖像上的像素坐標(biāo),該方式包括通過掃描方式檢測條碼圖像 中的深淺模塊邊界點(diǎn),將深淺模塊邊界點(diǎn)構(gòu)成的線特征與位置探測圖形相比較,根據(jù)比較 結(jié)果確定條碼圖像中位置探測圖形的像素坐標(biāo)。另外,本發(fā)明還提供一種通過行列線檢測 實(shí)現(xiàn)對Data Matrix碼的識別的實(shí)施方式,在該實(shí)施方法中,特征搜索單元101首先在條碼 圖像的預(yù)定區(qū)域內(nèi),提取符合預(yù)定長度的多個(gè)黑白邊界線段,然后基于提取到的多個(gè)黑白 邊界線段構(gòu)建多個(gè)直線,再根據(jù)平行線特性對多個(gè)直線進(jìn)行分組并形成行平行線組及列平 行線組,最后根據(jù)Data Matrix碼的特性,通過對行平行線組及列平行線組構(gòu)建的網(wǎng)格進(jìn)行 判斷來確認(rèn)是否存在Data Matrix碼,并獲取行平行線組及列平行線組構(gòu)建的網(wǎng)格的特征 圖形的像素坐標(biāo)。條碼參數(shù)獲取單元102根據(jù)特征搜索單元101所檢測的位置探測圖形的像素坐標(biāo) 來計(jì)算模塊尺寸,通過位置探測圖形的L形圖形的長度獲取條碼區(qū)域,根據(jù)L形圖形的兩條邊在條碼圖像坐標(biāo)系的朝向來獲取條碼方向。更進(jìn)一步的,條碼參數(shù)獲取單元102還可以 根據(jù)L形圖形的寬度估算模塊尺寸的大致范圍。校正特征獲取單元103根據(jù)特征搜索單元101所檢測的位置探測圖形的像素坐標(biāo) 以及條碼參數(shù)獲取單元102所獲取的條碼參數(shù),包括條碼區(qū)域、條碼方向等,在條碼圖像上 搜索校正圖形,例如為軌道線(也稱鐵路線),獲取校正圖形中多個(gè)模塊的中心點(diǎn)和/或邊 緣點(diǎn)的像素坐標(biāo),即軌道線的像素坐標(biāo),獲取校正特征。圖5是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式中校正特征獲 取單元的第一種校正點(diǎn)獲取結(jié)構(gòu)的示意圖。如圖5所示,校正特征獲取單元103包括校正圖 形搜索單元1031和校正點(diǎn)獲取單元1032。校正圖形搜索單元1041根據(jù)特征搜索單元101 所檢測的位置探測圖形的像素坐標(biāo)以及條碼參數(shù)獲取單元102所獲取的條碼參數(shù),按照軌 道線的模塊排列方式生成軌道線檢測模板,將軌道線檢測模板相對條碼圖像進(jìn)行平移并進(jìn) 行灰度匹配。校正點(diǎn)獲取單元1032對匹配結(jié)果進(jìn)行相似度計(jì)算處理,以確定軌道線檢測模 板與條碼圖像的最佳匹配位置,根據(jù)最佳匹配位置確定條碼圖像中軌道線中多個(gè)模塊的中 心點(diǎn)的像素坐標(biāo)和灰度值。模塊信息處理單元104根據(jù)軌道線中多個(gè)模塊的中心點(diǎn)的像素坐標(biāo)來計(jì)算Data Matrix碼的模塊間隔,獲取模塊尺寸,根據(jù)條碼參數(shù)和模塊尺寸確定Data Matrix碼的模 塊行數(shù)和列數(shù),獲取模塊參數(shù)。然后根據(jù)模塊參數(shù)計(jì)算軌道線的模塊坐標(biāo)。并根據(jù)軌道線 中多個(gè)模塊的中心點(diǎn)的像素坐標(biāo)和模塊坐標(biāo)計(jì)算校正參數(shù),該校正參數(shù)反映了條碼圖像的 像素點(diǎn)與Data Matrix碼模塊之間的映射關(guān)系。再根據(jù)Data Matrix碼的模塊參數(shù)和校正 參數(shù)計(jì)算各個(gè)模塊所對應(yīng)的像素點(diǎn)。之后根據(jù)各個(gè)模塊所對應(yīng)的像素點(diǎn)的坐標(biāo)和灰度值計(jì) 算各個(gè)模塊所對應(yīng)的灰度值,構(gòu)造模塊圖。圖6是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式中模塊信息處 理單元的結(jié)構(gòu)示意圖。模塊信息處理單元104包括模塊參數(shù)計(jì)算單元1041、校正特征模塊 坐標(biāo)計(jì)算單元1042、校正參數(shù)計(jì)算單元1043、模塊像素點(diǎn)計(jì)算單元1044以及模塊灰度值計(jì) 算單元1045。模塊參數(shù)計(jì)算單元1051根據(jù)軌道線中多個(gè)模塊的中心點(diǎn)的像素坐標(biāo)來計(jì)算 Data Matrix碼的模塊間隔,獲取模塊尺寸,根據(jù)條碼參數(shù)和模塊尺寸確定Data Matrix碼 的模塊行數(shù)和列數(shù),獲取模塊參數(shù)。由于Data Matrix碼的糾錯(cuò)等級與模塊的行數(shù)和列數(shù) 相關(guān)聯(lián),因此通過獲取模塊參數(shù)還可以確定Data Matrix碼的糾錯(cuò)等級。校正特征模塊坐 標(biāo)計(jì)算單元1042根據(jù)校正特征獲取單元103提供的軌道線的像素坐標(biāo),結(jié)合模塊參數(shù)計(jì)算 獲得軌道線的模塊坐標(biāo)。校正參數(shù)計(jì)算單元1043根據(jù)軌道線的像素坐標(biāo)和模塊坐標(biāo)計(jì)算 獲得校正參數(shù),該校正參數(shù)反映了條碼圖像的像素點(diǎn)與條碼模塊之間的映射關(guān)系。模塊像 素點(diǎn)計(jì)算單元1044根據(jù)模塊參數(shù)和校正參數(shù)計(jì)算各個(gè)模塊所對應(yīng)的像素點(diǎn)。模塊與像素 點(diǎn)之間的映射計(jì)算可以通過多種方式實(shí)現(xiàn),包括透視變換、二次多項(xiàng)式、三次多項(xiàng)式、三角 網(wǎng)格、小波變換或上述計(jì)算方式的結(jié)合等。模塊像素點(diǎn)計(jì)算單元1044可以通過模塊坐標(biāo)計(jì) 算對應(yīng)的像素點(diǎn)的坐標(biāo),也可以通過像素坐標(biāo)計(jì)算對應(yīng)的模塊的坐標(biāo)。本發(fā)明對上述計(jì)算 過程及其所采取的計(jì)算手段并不加以限定。模塊灰度值計(jì)算單元1045根據(jù)各個(gè)模塊所對 應(yīng)的像素點(diǎn)的坐標(biāo)和灰度值計(jì)算各個(gè)模塊所對應(yīng)的灰度值,以構(gòu)造模塊圖。模塊的灰度值 計(jì)算可以通過多種方式實(shí)現(xiàn),包括統(tǒng)計(jì)計(jì)算、插值計(jì)算、均值計(jì)算、加權(quán)計(jì)算或上述計(jì)算方 式的結(jié)合等,本發(fā)明對上述計(jì)算過程及其所采取的計(jì)算手段并不加以限定。為便于本領(lǐng)域技術(shù)人員理解本發(fā)明的模塊信息處理單元的處理過程,本發(fā)明舉例一種計(jì)算方法對本發(fā)明 的模塊信息處理單元的轉(zhuǎn)換原理進(jìn)行說明,但是,該計(jì)算方法不應(yīng)理解為對本發(fā)明的模塊 信息處理單元的限制。圖7是根據(jù)本發(fā)明的Data Matrix碼條碼解碼芯片的第一實(shí)施方式中模塊信息處 理單元的轉(zhuǎn)換原理示意圖。模塊81與像素區(qū)域82之間具有映射關(guān)系,變形區(qū)域821對應(yīng) 于模塊81在像素區(qū)域82上的映射范圍。模塊81的中心點(diǎn)W在像素區(qū)域82所對應(yīng)的映射 點(diǎn)為W'。由圖9可知,模塊81所對應(yīng)的像素點(diǎn)包括多個(gè)像素點(diǎn),圍繞映射點(diǎn)W'的像素點(diǎn) 為A、B、C、D 4個(gè)像素點(diǎn)。中心變形區(qū)域822對應(yīng)于模塊81的中心區(qū)域在像素區(qū)域82上的 映射范圍。對于矩陣條碼而言,模塊的中心區(qū)域所反映的模塊值最準(zhǔn)確。優(yōu)選的實(shí)施方式 中,可以通過A、B、C、D 4個(gè)像素點(diǎn)的灰度值來計(jì)算與映射點(diǎn)W'相對應(yīng)的模塊中心點(diǎn)W的 灰度值。當(dāng)然,也可以通過像素區(qū)域82所對應(yīng)的所有像素點(diǎn)來計(jì)算模塊81的灰度值。艮口, 模塊81的灰度值可以通過與其對應(yīng)的若干個(gè)像素點(diǎn)的灰度值計(jì)算得出。二值化單元105接收模塊信息處理單元104計(jì)算獲得的模塊灰度值,根據(jù)閾值對 模塊圖進(jìn)行二值化處理以提取位圖。閾值的獲取方式包括預(yù)設(shè)閾值、整體閾值獲取、局部閾 值獲取等多種方式碼字提取單元106根據(jù)Data Matrix碼的排列規(guī)則進(jìn)行位流提取并根據(jù)模塊編碼 模式轉(zhuǎn)換為數(shù)據(jù)碼字和糾錯(cuò)碼字。糾錯(cuò)譯碼單元107根據(jù)模塊信息處理單元104得到的糾錯(cuò)等級,重新將數(shù)據(jù)碼字 和糾錯(cuò)碼字按塊排列,進(jìn)行錯(cuò)誤檢測和糾錯(cuò)計(jì)算,糾正刪除錯(cuò)誤和未知錯(cuò)誤,還原表示Data Matrix碼信息的數(shù)據(jù)位流,將還原的數(shù)據(jù)位流根據(jù)模塊編碼模式進(jìn)行譯碼,以獲得Data Matrix碼信息。本發(fā)明的Data Matrix碼解碼方法,通過搜索位置探測圖形和校正圖形,獲取校正 圖形的像素灰度坐標(biāo)與模塊坐標(biāo),計(jì)算條碼圖像的像素坐標(biāo)與模塊坐標(biāo)之間的映射關(guān)系, 然后根據(jù)該映射關(guān)系計(jì)算模塊灰度值,對模塊灰度值進(jìn)行二值化,進(jìn)而還原Data Matrix碼 所對應(yīng)的條碼符號圖形。與現(xiàn)有技術(shù)相比,本發(fā)明的Data Matrix碼解碼方法是在知曉條 碼特征信息,并根據(jù)條碼特征信息對條碼圖像進(jìn)行校正后進(jìn)行的二值化處理,因此降低了 噪聲、畸變等因素對二值化過程的影響,減少了模塊錯(cuò)誤的出現(xiàn),大大增加了條碼的識別能 力,提升了條碼識別的解碼成功率。本發(fā)明的Data Matrix碼條碼解碼芯片采用硬件流水線結(jié)構(gòu),通過硬件邏輯實(shí)現(xiàn) 對條碼圖像的識別解碼,由于硬件流水線結(jié)構(gòu)適于對條碼圖像進(jìn)行流水線作業(yè)和并行處 理,因此處理速度很快。相對于現(xiàn)有技術(shù)的處理器解碼技術(shù)而言,本發(fā)明的Data Matrix碼條碼解碼芯片 采用全硬件結(jié)構(gòu),無需處理器參與解碼,芯片結(jié)構(gòu)相對于處理器而言結(jié)構(gòu)更為簡化、面積更 小、功耗更低、成本更低、易于集成,容易實(shí)現(xiàn)便攜應(yīng)用??梢苑奖愕嘏c物聯(lián)網(wǎng)技術(shù)相結(jié)合, 為條碼技術(shù)的應(yīng)用提供了更為廣闊的發(fā)展空間。以上參照
了本發(fā)明的各種優(yōu)選實(shí)施例,但是只要不背離本發(fā)明的實(shí)質(zhì)和 范圍,本領(lǐng)域的技術(shù)人員可以對其進(jìn)行各種形式上的修改和變更,都屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種Data Matrix碼條碼解碼芯片,包括特征搜索單元,在條碼圖像中搜索位置探測圖形來確定所述位置探測圖形的像素坐標(biāo);條碼參數(shù)獲取單元,根據(jù)所述位置探測圖形的像素坐標(biāo)來獲取條碼參數(shù),確定條碼區(qū)域和條碼方向;校正特征獲取單元,在所述條碼圖像上搜索校正圖形,獲取所述校正圖形的像素坐標(biāo);模塊信息處理單元,根據(jù)所述校正圖形的像素坐標(biāo)計(jì)算模塊尺寸,獲取模塊參數(shù)和糾錯(cuò)等級,并根據(jù)所述模塊參數(shù)計(jì)算所述校正圖形的模塊坐標(biāo),然后根據(jù)所述條碼參數(shù)、所述模塊參數(shù)、以及所述校正圖形的像素坐標(biāo)和模塊坐標(biāo),計(jì)算所述Data Matrix碼的模塊所對應(yīng)的灰度值;二值化單元,對所述Data Matrix碼的模塊進(jìn)行二值化處理;碼字提取單元,根據(jù)二值化處理的所述Data Matrix碼的模塊提取碼字;糾錯(cuò)譯碼單元,根據(jù)所述糾錯(cuò)等級對所述碼字進(jìn)行糾錯(cuò)譯碼處理。
2.根據(jù)權(quán)利要求1所述的DataMatrix碼條碼解碼芯片,其特征在于,所述特征搜索單 元根據(jù)所述位置探測圖形的形狀生成位置探測圖形檢測模板,將所述位置探測圖形檢測模 板相對所述條碼圖像進(jìn)行平移并進(jìn)行灰度匹配,以確定所述位置探測圖形檢測模板與所述 條碼圖像的最佳匹配位置,并根據(jù)所述最佳匹配位置確定所述條碼圖像中所述位置探測圖 形的像素坐標(biāo)。
3.根據(jù)權(quán)利要求1所述的DataMatrix碼條碼解碼芯片,其特征在于,所述特征搜索單 元通過掃描方式檢測所述條碼圖像中的深淺模塊邊界點(diǎn),將所述深淺模塊邊界點(diǎn)構(gòu)成的線 特征與所述位置探測圖形相比較,根據(jù)比較結(jié)果確定所述條碼圖像中所述位置探測圖形的 像素坐標(biāo)。
4.根據(jù)權(quán)利要求1所述的DataMatrix碼條碼解碼芯片,其特征在于,所述特征搜索單 元在所述條碼圖像的預(yù)定區(qū)域內(nèi),提取符合預(yù)定長度的多個(gè)黑白邊界線段,然后基于提取 到的所述多個(gè)黑白邊界線段構(gòu)建多個(gè)直線,再根據(jù)平行線特性對所述多個(gè)直線進(jìn)行分組并 形成行平行線組及列平行線組,最后根據(jù)Data Matrix碼的特性,通過對所述行平行線組及 列平行線組構(gòu)建的網(wǎng)格即網(wǎng)格所對應(yīng)的灰度進(jìn)行判斷來確認(rèn)是否存在Data Matrix碼,并 獲取所述行平行線組及列平行線組構(gòu)建的網(wǎng)格的所述位置探測圖形的像素坐標(biāo)。
5.根據(jù)權(quán)利要求1所述的DataMatrix碼條碼解碼芯片,其特征在于,所述校正圖形包 括軌道線,所述校正特征獲取單元根據(jù)所述條碼參數(shù),在條碼圖像上搜索所述軌道線,獲取 所述軌道線中多個(gè)模塊的像素坐標(biāo)。
6.根據(jù)權(quán)利要求5所述的DataMatrix碼條碼解碼芯片,其特征在于,所述軌道線由交 替的單個(gè)模塊寬度的深色和淺色模塊組成,所述模塊信息處理單元根據(jù)所述軌道線中多個(gè) 模塊的像素坐標(biāo)計(jì)算所述Data Matrix碼的模塊尺寸。
7.根據(jù)權(quán)利要求6所述的DataMatrix碼條碼解碼芯片,其特征在于,所述模塊信息處 理單元根據(jù)所述模塊尺寸和所述條碼參數(shù)獲取所述模塊參數(shù),所述模塊參數(shù)包括所述Data Matrix碼的模塊行數(shù)和列數(shù)。
8.根據(jù)權(quán)利要求7所述的DataMatrix碼條碼解碼芯片,其特征在于,所述模塊信息處理單元根據(jù)所述模塊參數(shù)獲取所述Data Matrix碼的糾錯(cuò)等級。
9.根據(jù)權(quán)利要求7所述的DataMatrix碼條碼解碼芯片,其特征在于,所述模塊信息處 理單元根據(jù)所述模塊參數(shù)和所述軌道線中多個(gè)模塊的像素坐標(biāo),計(jì)算所述軌道線中多個(gè)模 塊的模塊坐標(biāo)。
10.根據(jù)權(quán)利要求9所述的DataMatrix碼條碼解碼芯片,其特征在于,所述模塊信息 處理單元根據(jù)所述軌道線的像素坐標(biāo)和模塊坐標(biāo)計(jì)算獲得所述校正參數(shù),所述校正參數(shù)反 映了所述條碼圖像的像素點(diǎn)與所述Data Matrix碼模塊之間的映射關(guān)系。
11.根據(jù)權(quán)利要求10所述的DataMatrix碼條碼解碼芯片,其特征在于,獲得所述校正 參數(shù)的方法包括透視變換、二次多項(xiàng)式、三次多項(xiàng)式、三角網(wǎng)格、小波變換或上述計(jì)算方式 的結(jié)合。
12.—種Data Matrix碼解碼方法,其特征在于,包括以下步驟a.獲取條碼圖像;b.搜索位置探測圖形,根據(jù)所述位置探測圖形的像素坐標(biāo)來獲取條碼參數(shù);c.搜索校正特征,獲取校正特征的像素坐標(biāo);d.根據(jù)所述校正特征的像素坐標(biāo)計(jì)算模塊尺寸、模塊參數(shù)以及所述校正特征的模塊坐 標(biāo),根據(jù)所述校正特征的像素坐標(biāo)和模塊坐標(biāo)計(jì)算所述條碼圖像的像素坐標(biāo)與模塊坐標(biāo)之 間的映射關(guān)系;f.根據(jù)所述映射關(guān)系和DataMatrix碼的模塊參數(shù)計(jì)算所述模塊灰度值;g.對所述模塊灰度值進(jìn)行二值化處理;i.根據(jù)所述二值化處理的結(jié)果提取碼字;j.對所述碼字進(jìn)行譯碼處理。
13.一種Data Matrix碼解碼方法,其特征在于,包括以下步驟a.獲取條碼圖像;b.在所述條碼圖像的預(yù)定區(qū)域內(nèi),提取符合預(yù)定長度的多個(gè)黑白邊界線段;c.基于所述多個(gè)黑白邊界線段構(gòu)建多個(gè)直線;d.根據(jù)平行線特性對所述多個(gè)直線進(jìn)行分組并形成行平行線組及列平行線組;e.根據(jù)DataMatrix碼的特性,通過對所述行平行線組及列平行線組構(gòu)建的網(wǎng)格進(jìn)行 判斷來確認(rèn)是否存在Data Matrix碼;f.獲取行平行線組及列平行線組構(gòu)建的網(wǎng)格的特征圖形的像素坐標(biāo),根據(jù)所述特征圖 形的像素坐標(biāo)獲取條碼參數(shù);g.搜索校正特征,獲取校正特征的像素坐標(biāo);h.根據(jù)所述校正特征的像素坐標(biāo)計(jì)算模塊尺寸、模塊參數(shù)以及所述校正特征的模塊坐 標(biāo),根據(jù)所述校正特征的像素坐標(biāo)和模塊坐標(biāo)計(jì)算所述條碼圖像的像素坐標(biāo)與模塊坐標(biāo)之 間的映射關(guān)系;i.根據(jù)所述映射關(guān)系和DataMatrix碼的模塊參數(shù)計(jì)算所述模塊灰度值;j.對所述模塊灰度值進(jìn)行二值化處理;k.根據(jù)所述二值化處理的結(jié)果提取碼字;l.對所述碼字進(jìn)行譯碼處理。
全文摘要
本發(fā)明提供一種Data Matrix碼條碼解碼芯片。特征搜索單元在條碼圖像中搜索位置探測圖形來確定位置探測圖形的像素坐標(biāo)。條碼參數(shù)獲取單元根據(jù)位置探測圖形的像素坐標(biāo)來獲取條碼參數(shù),確定條碼區(qū)域和條碼方向。校正特征獲取單元在條碼圖像上搜索校正圖形,獲取校正圖形的像素坐標(biāo)。模塊信息處理單元根據(jù)校正圖形的像素坐標(biāo)計(jì)算Data Matrix碼的模塊所對應(yīng)的灰度值。二值化單元對Data Matrix碼的模塊進(jìn)行二值化處理。碼字提取單元根據(jù)二值化處理的Data Matrix碼的模塊提取碼字。糾錯(cuò)譯碼單元根據(jù)糾錯(cuò)等級對碼字進(jìn)行糾錯(cuò)譯碼處理。本發(fā)明還提供一種通過Data Matrix碼解碼方法。本發(fā)明的DataMatrix碼條碼解碼芯片以及Data Matrix碼解碼方法能保證Data Matrix碼解碼過程快速、順利地進(jìn)行。
文檔編號G06K7/10GK101882207SQ20101018897
公開日2010年11月10日 申請日期2010年6月1日 優(yōu)先權(quán)日2010年6月1日
發(fā)明者楊韜, 蔡強(qiáng), 邱有森, 陳文傳 申請人:福建新大陸電腦股份有限公司