亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種二維條碼及其編解碼方法

文檔序號:6390621閱讀:291來源:國知局
專利名稱:一種二維條碼及其編解碼方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種二維條碼以及將數(shù)據(jù)編碼生成該二維條碼的碼圖和從該碼圖解碼還原數(shù)據(jù)的方法。
背景技術(shù)
二維條碼一般由三部分組成特征模式區(qū)域,格式信息區(qū)域,數(shù)據(jù)碼詞區(qū)域。其中特征模式區(qū)域指導(dǎo)圖像識別算法識別定位碼圖,格式信息區(qū)域存放描述碼圖格式與數(shù)據(jù)糾錯相關(guān)的參數(shù),數(shù)據(jù)碼詞區(qū)域存放經(jīng)過糾錯編碼算法編碼后的數(shù)據(jù)。如果特征模式區(qū)域與格式信息區(qū)域被破壞到一定程度就會導(dǎo)致碼圖不能被識別,因此這兩個區(qū)域也就成為了碼圖中的致命區(qū)域(vulnerablearea),降低了二維碼的可靠性。
如圖1所示是PDF417碼結(jié)構(gòu)示意圖,在碼圖的左右兩端的寬細(xì)不等的豎線是其特征模式區(qū)域10,在碼圖的左右兩端的特征模式區(qū)域10以內(nèi)的一部分是其格式信息區(qū)域20,如果特征模式區(qū)域10與格式信息區(qū)域20受到一定的破壞,該碼圖將不能被正確識別。
如圖2所示是QR碼結(jié)構(gòu)示意圖,在碼圖的上部左右兩角和下部左角處的“回”形區(qū)域其特征模式區(qū)域30,在碼圖的三個角附近的特征模式區(qū)域30以內(nèi)用虛線框出的部分是其格式信息區(qū)域40,如果特征模式區(qū)域30與格式信息區(qū)域40受到一定的破壞,該碼圖將不能被正確識別。

發(fā)明內(nèi)容
本發(fā)明的目的在于克服現(xiàn)有二維條碼的特征模式區(qū)域與格式信息區(qū)域比較集中、易于被破壞(vulnerable)、抗變形能力(anti-deformation)差的缺點,提出一種二維條碼以及將數(shù)據(jù)編碼生成該二維條碼的碼圖和從該碼圖解碼還原數(shù)據(jù)的方法。
本發(fā)明公開了一種二維條碼,具有矩形碼圖,所述碼圖包括在表面上無間隙排列的,具有不同光學(xué)特征的矩形單元模塊;所述碼圖中的單元模塊分割成多個矩形的宏模塊,所述宏模塊包括Num×Num個單元模塊,其中Num為大于3的自然數(shù),每個宏模塊包括存儲具有固定數(shù)據(jù)長度的數(shù)據(jù)碼詞的單元模塊和存儲代表該宏模塊在碼圖中的位置的簇號的單元模塊。
按照本發(fā)明的實施例,本發(fā)明的二維條碼還包括下述從屬技術(shù)特征所述宏模塊包括最外圍一周全部為深色單元模塊的黑邊框宏模塊和最外圍一周全部為淺色單元模塊的白邊框宏模塊,所述數(shù)據(jù)碼詞和簇號存放于邊框以內(nèi)的單元模塊之中,所述黑邊框宏模塊和白邊框宏模塊在碼圖中交替排列;所述碼圖包括Mnum×Mnum個所述宏模塊,其中Mnum是大于1的奇數(shù);所述碼圖中心的所述宏模塊的簇號為0,由所述碼圖的中心往邊界的所述宏模塊的簇號按層順序增加;不同的所述宏模塊中存放所述簇號信息的簇號單元模塊的位置和數(shù)量相同,所述簇號單元模塊中存放的值是該宏模塊位于碼圖中的層數(shù)對所述簇號單元模塊的最大存儲值進(jìn)行取模運(yùn)算所獲得的數(shù)值。
本發(fā)明還公開了一種二維條碼的編碼方法,通過計算機(jī)將二進(jìn)制數(shù)據(jù)流編制成碼圖,包括如下步驟A、首先將所述二進(jìn)制數(shù)據(jù)流分割成具有特定比特長度的信息數(shù)據(jù)碼詞;B、然后對所述信息數(shù)據(jù)碼詞應(yīng)用糾錯算法進(jìn)行運(yùn)算,生成糾錯碼詞;C、在內(nèi)存中生成碼圖的主框架,包括每一個宏模塊的邊框和存儲的數(shù)據(jù)表示該宏模塊在所述碼圖中所處的位置的簇號模塊;D、從碼圖中心開始按順時針螺旋方向?qū)?shù)據(jù)碼詞和糾錯碼詞填充到碼圖中,從而生成碼像文件。
本發(fā)明還公開了一種二維條碼的解碼方法,通過數(shù)字照相機(jī)和計算機(jī)將碼圖還原成二進(jìn)制數(shù)據(jù)流,包括如下步驟
I.通過照相方式獲取碼圖的、包括每一個象素的灰度值的象素矩陣的灰階數(shù)字圖像;II.對灰階數(shù)字圖像中不同象素的灰度值的分布進(jìn)行統(tǒng)計,根據(jù)所述統(tǒng)計值選擇閥值將灰階圖像轉(zhuǎn)化成二值圖像;III.檢測上述二值圖像中的每一個淺色像素,如果與它最臨近的上下左右四個像素中有一個或者一個以上深色像素則該像素被標(biāo)記為邊界像素,獲得邊界圖像;檢測所述邊界圖像中的直線獲得直線方程并且解所述直線方程求得每個宏模塊的四角坐標(biāo);IV.根據(jù)每個宏模塊的四角坐標(biāo)插值計算宏模塊內(nèi)每個單元模塊的坐標(biāo);V.對應(yīng)所述單元模塊的坐標(biāo)到所述二值圖像的數(shù)字信號中讀取該單元模塊存儲的0或者1的比特值獲得碼詞矩陣;VI.通過下述步驟判斷碼詞矩陣的方向A、對上述數(shù)據(jù)矩陣分別從四個不同的方向、按照已知的簇號模塊的位置和單元取得每一個宏模塊的每一個可能的簇號;B、分別對每一個方向,分別計算每個宏模塊的可能簇號與它相鄰右邊、和相鄰下邊宏模塊的相應(yīng)可能簇號的差的絕對值,并將所得的絕對值累加作為該方向的得分;C、比較四個方向的得分,得分最少的方向為碼圖的正確方向;VII.按照碼詞矩陣的對稱關(guān)系確定中心碼詞;VIII.按照所述正確方向和中心碼詞,從中心碼詞開始按照順時針方向?qū)⑺鰯?shù)據(jù)碼詞矩陣恢復(fù)為數(shù)據(jù)碼詞序列。
本發(fā)明公開的二維條碼將單元模塊組合成宏模塊,在每一個宏模塊中都設(shè)置了標(biāo)志其在碼圖中的位置的簇號單元模塊,因為在碼圖中每個宏模塊可以被獨(dú)立定位,所以一旦圖形有破損或者被污染的部分都能夠被定位出來,與現(xiàn)有的矩陣式二維碼相比識別算法能夠有效的探測到擦除錯誤的存在,從而能提高糾錯性能。這是因為在碼詞流中,對RS糾錯算法而言擦除錯誤(已知位置的錯誤稱為擦除錯誤)的糾錯性能是替代錯誤(未知位置的錯誤稱為替代錯誤)的糾錯性能的兩倍。從而使碼圖的抗破損、抗污染、抗形變能力得到了有力保證。
由于每一個碼詞對應(yīng)于一個宏模塊,所以全部碼詞被分成簇,由中心向外順時針方向按層排列,同一層碼詞的簇號相同,簇號到最大后又回到0,這種排列方式能夠可靠的指導(dǎo)解碼算法定位碼圖的方向以及確定起始碼詞。
由于在不同宏模塊拼接處、也即在宏模塊的四角形成了特殊的圖形模式,使得每個宏模塊與它周圍的其它宏模塊之間有明顯的邊界,通過模板匹配算法可以快速可靠的檢測并且定位每一個宏模塊,簡化解碼方法,提高了解碼率。由于在邊界圖像中宏模塊的邊框處形成顯著特征的直線,通過檢測直線的參數(shù)可以快速確定碼圖的旋轉(zhuǎn)角度和定位宏模塊的四角坐標(biāo)。
由于將白邊框宏模塊與黑編框宏模塊交叉排列,在碼圖中白邊框宏模塊與黑邊框宏模塊交叉排列,使得碼圖的深色模塊與淺色模塊的分布保持均勻,避免了碼圖識別時的漏斗效應(yīng),減少了碼詞錯誤的可能。
在編碼運(yùn)算中對已經(jīng)劃分了碼詞的比特流選用預(yù)定的糾錯等級進(jìn)行糾錯運(yùn)算,使得形成的碼圖不需要格式信息區(qū)域,因此與傳統(tǒng)二維碼相比少了一個容易受傷害的部件,提高了碼圖的可靠性。
在解碼時圖像到數(shù)據(jù)的轉(zhuǎn)換以宏模塊為單位(與PDF417相同),而不是以單元模塊為單位,識別精度要高于現(xiàn)有任何矩陣式二維碼(這是因為在數(shù)字圖像中當(dāng)單元模塊的形狀與方形相差很大時宏模塊仍然能夠保持較好的方形特征)。
由于碼圖由深色宏模塊與淺色宏模塊交替排列,所以圖形中不會出現(xiàn)大面積的同種顏色模塊,從而省去了在其他二維碼中采用的模塊掩模(masking)技術(shù)。因為碼圖中深淺模塊的分布均勻,熱敏打印機(jī)(條碼的最典型輸出設(shè)備)在輸出圖形時,能保證打印頭的發(fā)熱單元工作在冷熱均勻交替的狀態(tài),從而輸出的圖像精度有最好的保證。


本發(fā)明包括如下附圖
圖1是PDF417碼結(jié)構(gòu)示意圖;圖2是QR碼結(jié)構(gòu)示意圖;圖3是本發(fā)明的二維條碼碼圖;圖4是本發(fā)明的二維條碼碼圖中白邊框宏模塊和黑邊框宏模塊示意圖;圖5是本發(fā)明的二維條碼碼圖中宏模塊結(jié)構(gòu)的實施例;圖6是本發(fā)明的二維條碼碼圖中宏模塊排列方式示意圖;圖7是本發(fā)明的二維條碼編碼流程圖;圖8是利用本發(fā)明解碼方法獲得的二值圖像示意圖;圖9是利用本發(fā)明解碼方法對二值圖像進(jìn)行邊界檢測獲得的邊界圖像示意圖;圖10是在邊界檢測后運(yùn)用霍夫算法獲得的直線效果圖;圖11是解直線方程求得每個宏模塊的四角坐標(biāo)的示意圖;圖12是本發(fā)明的碼圖在宏模塊的四角可能具有的特殊圖形模式;圖13是用于確定閥值的直方圖。
具體實施例方式
被編碼的信息是一串二進(jìn)制數(shù),可以被看成比特流,該比特流被按照某一定長度分割成若干個位數(shù)相等的數(shù)據(jù)碼詞,再運(yùn)用Reed-Solomon編碼算法生成糾錯碼詞(糾錯碼詞在碼圖解碼還原數(shù)據(jù)時起到糾正錯誤的作用),糾錯碼詞被加入數(shù)據(jù)碼詞中,形成新的比特流,再一起被編碼成為二維條碼。
如圖3所示是本發(fā)明的二維條碼碼圖,碼圖為矩形,由同樣為矩形的多個宏模塊組成,如圖中的宏模塊501和宏模塊502。每個宏模塊再由Num*Num(Num為自然數(shù),且Num>3)個單元模塊按照矩形排列組成,每個單元模塊的形狀也為矩形,每個單元模塊可以是兩種顏色中的一種深色或者淺色,因此每個單元模塊存儲一個比特的信息(深色為1,淺色為0;或者相反)。一個碼詞(包括數(shù)據(jù)碼詞與糾錯碼詞)對應(yīng)于碼圖中的一個宏模塊。
本發(fā)明的二維條碼碼圖由兩種宏模塊在橫向與縱向兩個方向交替排列組成,它們分別是白邊框宏模塊與黑邊框宏模塊。如圖4所示是本發(fā)明的二維條碼碼圖中白邊框宏模塊和黑邊框宏模塊的結(jié)構(gòu)示意圖,可見每個宏模塊由單元模塊100組成,包括邊框部分200、碼詞存儲部分以及簇號部分。宏模塊的最外圍一圈單元模塊是其邊框部分200,即邊框單元模塊200位于宏模塊的最外層;每個宏模塊可有一個或者多個簇號模塊,簇號模塊可位于除邊框模塊之外的任何位置。
下面通過一個具體實施例對本發(fā)明的二維條碼中的宏模塊作進(jìn)一步說明。如圖5所示是本發(fā)明的二維條碼碼圖中宏模塊結(jié)構(gòu)的實施例,可見其每行具有6個單元模塊100,總數(shù)為36個單元模塊;其最外圍一圈的邊框模塊200共有20個,邊框模塊以內(nèi)有數(shù)據(jù)模塊400共計14個,簇號模塊300共計2個。如圖6所示是本發(fā)明的二維條碼碼圖中宏模塊排列方式示意圖,圖中深色模塊為黑邊框模塊,淺色模塊為白邊框模塊,宏模塊的排列順序由圖中的序號表示,這也是碼詞存儲的順序(從中心向外按順時針螺旋式排列);碼圖的每一邊的宏模塊個數(shù)為Mnum(Mnum為大于1的奇數(shù)),則該碼圖共有Mnum*Mnum個宏模塊。將碼圖中的宏模塊從中心向外分層,1號模塊為第一層,2至9號宏模塊組成第二層,10至25號宏模塊組成第3層,依此類推。圖6所示的碼圖共有3層宏模塊。處于同一層的宏模塊具有相同的簇號。
定義第一層宏模塊為第0簇,第二層宏模塊為第1簇,第三層宏模塊為第3簇,依此類推。宏模塊中的簇號模塊300用來存儲該簇號,如果簇號超出簇號模塊的存儲范圍則按簇號模塊能編碼的總數(shù)進(jìn)行取模運(yùn)算。例如每個宏模塊中有兩個簇號模塊,則從第一層起簇號分別為0,1,2,3,0,1,2,3,......
如圖7所示是本發(fā)明的二維條碼編碼流程圖,首先將原始數(shù)據(jù)轉(zhuǎn)換成具有特定二進(jìn)制比特長度的信息數(shù)據(jù)碼詞;然后對應(yīng)用Reed-Solomon編碼算法,生成糾錯碼詞并附加在信息數(shù)據(jù)碼詞之后;再根據(jù)數(shù)據(jù)碼詞和糾錯碼詞的數(shù)量確定碼圖尺寸;在內(nèi)存中生成碼圖的主框架,包括宏模塊的邊框和每一個宏模塊的簇號模塊;從碼圖中心開始按順時針螺旋方向?qū)?shù)據(jù)碼詞和糾錯碼詞填充到碼圖中,從而生成碼像文件,編碼結(jié)束。
解碼流程與編碼流程相反,在解碼之前先獲取宏模塊的大小,即每個宏模塊所包括的單元模塊數(shù)及其對應(yīng)的碼詞的比特數(shù);同時獲取每個宏模塊中簇號單元模塊的位置和單元模塊數(shù)(對一個具體的實施例來講這些參數(shù)是事先約定好的),解碼包括如下步驟1.使用數(shù)碼相機(jī)通過照相方式獲取碼圖的灰階圖像,這種圖像信號在存儲器中的存在形式可以是包括了每一個象素的灰度值的象素矩陣,這種灰階圖像也可以直接在顯示器上顯示出來;2.對灰度圖像中不同象素的灰度值的分布進(jìn)行統(tǒng)計,例如進(jìn)行直方圖統(tǒng)計;如附圖13為灰階分布直方圖,圖中可見明顯的雙峰,其中左側(cè)的峰值101代表淺色象素的數(shù)量,右側(cè)的峰值103代表深色象素的數(shù)量,兩個峰值之間的灰度值102用作二值化的閥值。
3.根據(jù)不同象素的灰度值的分布確定閥值,將碼圖的灰階圖像轉(zhuǎn)化成二值圖像;確定閥值的方法可以是直方圖雙峰法,也可以是其它方法;如圖8所示是利用本發(fā)明解碼方法獲得的二值圖像,所有象素的值在圖中表現(xiàn)為深色和淺色兩種;4.對上述二值圖像進(jìn)行邊界檢測,對每一個淺色像素,如果與它最臨近的上下左右四個像素只要有一個深色像素則該像素被標(biāo)記為邊界像素。反之,也可以對每一個深色像素,如果與它最臨近的上下左右四個像素只要有一個淺色像素則該像素被表標(biāo)記為邊界像素。如圖9所示是一種碼圖的邊界圖像;5.檢測上述邊界圖像中的直線(包括連續(xù)的或者不連續(xù)的),獲得直線方程組。因為碼圖中具有交替排列的白邊框宏模塊和黑邊框宏模塊,所以檢測出的直線切割出宏模塊的分界線。如圖10所示就是運(yùn)用霍夫算法(Hough Transform)在上述邊界圖像中檢測出直線后的圖像;6.解上述直線方程組求得每個宏模塊的四角坐標(biāo),如圖11所示;7.根據(jù)宏模塊的四角坐標(biāo)和已知的單元模塊的尺寸運(yùn)用插值算法計算宏模塊內(nèi)每個單元模塊的中心坐標(biāo),根據(jù)單元模塊的中心坐標(biāo)從二值圖像中讀取該單元模塊存儲的比特值(0或者1);該單元模塊存儲的比特值也可以由其中心坐標(biāo)周圍的象素值的統(tǒng)計值決定;于是經(jīng)過上述步驟獲得了對應(yīng)于被解碼碼圖的數(shù)據(jù)碼詞矩陣;(包括數(shù)據(jù)碼詞與糾錯碼詞,每個碼詞含有簇號信息,糾錯前需要去掉簇號信息)8.被解碼的碼圖的方向在照像時可能產(chǎn)生一定的旋轉(zhuǎn)角度,所以在解碼時還要判斷碼圖的正確方向A、對上述數(shù)據(jù)碼詞矩陣分別從四個不同的方向、按照已知的簇號模塊的位置和單元取得每一個宏模塊的可能的簇號;B、對每一個方向的可能簇號組合中的簇號分布分別進(jìn)行計算后打分,即對每一個宏模塊累加兩個簇號差的絕對值,這兩個絕對值分別是當(dāng)前宏模塊簇號與它相鄰右邊、和相鄰下邊宏模塊簇號差的絕對值(即分別計算每個宏模塊簇號與它相鄰右邊、和相鄰下邊宏模塊簇號差的絕對值,并將所得的絕對值累加;)C、對四個方向分別計分,得分最少的方向為碼圖的正確方向;從統(tǒng)計的角度分析,正確方向的每個宏模塊得分平均為1分,而錯誤方向每個宏模塊得分平均為3分(0+1+2+3)/4*2=3。
9.根據(jù)對稱關(guān)系對上述數(shù)據(jù)碼詞矩陣確定對應(yīng)碼圖的中心宏模塊的數(shù)據(jù)碼詞;如果具有多種可能,例如具有5*5個宏模塊的碼圖在數(shù)據(jù)碼詞矩陣中缺少一行數(shù)據(jù)碼詞,則其中心宏模塊即有兩種可能,此時應(yīng)該針對每一個可能的中心宏模塊統(tǒng)計簇號分布,選出準(zhǔn)確的中心宏模塊。例如,累加候選中心數(shù)據(jù)碼詞的外圍第一層數(shù)據(jù)碼詞的簇號,并且每作一次累加,就在累加之和中減1;然后再累加候選中心數(shù)據(jù)碼詞的外圍第二層數(shù)據(jù)碼詞的簇號,并且每作一次累加,就在累加之和中減2;依此類推,按層分別累加候選中心數(shù)據(jù)碼詞的外圍全部數(shù)據(jù)碼詞的簇號,并且每作一次累加,就在累加之和中減去其位置所代表的正確簇號值;比較針對不同中心宏模塊的得分,具有最高得分的確定為正確的中心;以上面的計算結(jié)果為依據(jù),根據(jù)正確的中心宏模塊和方向讀取數(shù)據(jù)碼詞,對碼詞運(yùn)用Reed-Solomon糾錯算法糾正碼詞中可能存在的錯誤,如果糾錯成功輸出數(shù)據(jù)碼詞,將數(shù)據(jù)碼詞恢復(fù)成字節(jié)數(shù)據(jù),解碼結(jié)束。
在上述步驟2和3中將灰階圖像二值化時,還可以將灰階圖像分割成不重疊或者部分重疊的幾部分,針對各個分別統(tǒng)計灰階值的分布確定閥值并二值化,重疊部分的灰階閥值可以去平均,然后再將二值化的各部分組合在一起。
本發(fā)明的二維條碼的碼圖采用白邊框宏模塊與黑編框宏模塊交叉排列,從而在不同宏模塊拼接處、也即在宏模塊的四角形成了特殊的圖形模式,如圖12所示是本發(fā)明的碼圖邊界以內(nèi)宏模塊的四角具有的特殊圖形模式,圖中的灰色區(qū)域不屬于模板內(nèi)容,模板內(nèi)容只包括深色和淺色區(qū)域。模板匹配的目的是為了發(fā)現(xiàn)圖像中指定區(qū)域是否存在與模板相同/相近的圖案。通過模板匹配算法可以快速可靠的同時檢測出并且定位每一個宏模塊,這種方法可以用來代替上述解碼步驟中的第5和6步,對碼圖中的每個宏模塊定位并計算出其四角坐標(biāo),從而碼圖的抗破損、抗污染、抗形變能力得到了有力保證。這是由于在碼圖中白邊框宏模塊與黑編框宏模塊交叉排列,使得每個宏模塊與它周圍的其它宏模塊之間有明顯的邊界,這樣對二值圖像進(jìn)行邊界檢測后宏模塊的邊框處形成顯著特征的直線,從而可以快速確定碼圖的旋轉(zhuǎn)角度和定位宏模塊。
模板匹配算法包括以下步驟首先確定模板的大小,模板越小計算量也小,但是出現(xiàn)錯誤匹配結(jié)果的可能性也大,模板大計算量大,匹配結(jié)果出錯的可能性小。典型實施例中采用32個pixel乘32個pixel的模板,模板中黑/白先條的寬度為4個pixel。
模板檢測在二值圖像中進(jìn)行運(yùn)算量要小。為了能在旋轉(zhuǎn)過的碼圖中有效匹配模板,需要將模板旋轉(zhuǎn)與碼圖相同的角度匹配模板時將模板“放置”到待檢測圖像,統(tǒng)計模板與圖像重疊區(qū)域相同像素的個數(shù),如果檢測區(qū)域存在與模板相同形狀的特征則統(tǒng)計值大(接近模板的總像素個數(shù))或則很小(接近零,待檢測域區(qū)域模板完全反色),否則統(tǒng)計值處于中間值(例如純黑或則純白的區(qū)域統(tǒng)計值只有模板總像素的一半)。模板在待檢測圖像中移動,直到搜索出全部匹配區(qū)域。
由于圖像中兩種特征互為反色,所以一輪模板匹配可以同時檢測這兩種特征(統(tǒng)計值為最大或則最小)。
在每個宏模塊中都包括簇號單元模塊,由于每一個碼詞對應(yīng)于一個宏模塊,所以全部碼詞被分成簇,由中心向外順時針方向按層排列,同一層碼詞的簇號相同,簇號到最大后又回到0,這種排列方式能夠可靠的指導(dǎo)解碼算法定位碼圖的方向以及確定起始制碼詞。
由于在碼圖中白邊框宏模塊與黑編框宏模塊交叉排列,使得碼圖的深色模塊與淺色模塊的分布保持均勻,避免了碼圖識別時的漏斗效應(yīng),減小了碼詞出錯的可能。
在編碼運(yùn)算中對已經(jīng)劃分了碼詞的比特流選用預(yù)定的糾錯等級進(jìn)行糾錯運(yùn)算,使得形成的碼圖格式信息簡單,因此與傳統(tǒng)二維碼相比少了一個容易受傷害的部件,提高了碼圖的可靠性。
在編解碼流程中碼像到數(shù)據(jù)的相互轉(zhuǎn)換以宏模塊為單位(與PDF417相同),而不是以單元模塊為單位,識別精度要高于現(xiàn)有任何矩陣式二維碼。
因為在碼圖中每個宏模塊可以被獨(dú)立定位,所以一旦圖形有破損或者被污染的部分都能夠被定位出來,與現(xiàn)有的矩陣式二維碼相比識別算法能夠有效的探測到擦除錯誤的存在,從而能提高糾錯性能。這是因為在碼詞流中,未知位置的錯誤稱為替代錯誤,已知位置的錯誤稱為擦除錯誤,對RS糾錯算法而言擦除錯誤的糾錯性能是替代錯誤的糾錯性能的兩倍。
權(quán)利要求
1.一種二維條碼,具有矩形碼圖,所述碼圖包括在表面上無間隙排列的,具有不同光學(xué)特征的矩形單元模塊;其特征在于,所述碼圖中的單元模塊分割成多個矩形的宏模塊,所述宏模塊包括Num×Num個單元模塊,其中Num為大于3的自然數(shù),每個宏模塊包括存儲具有固定數(shù)據(jù)長度的數(shù)據(jù)碼詞的單元模塊和存儲代表該宏模塊在碼圖中的位置的簇號的單元模塊。
2.根據(jù)權(quán)利要求1所述的二維條碼,其特征在于,所述宏模塊包括最外圍一周全部為深色單元模塊的黑邊框宏模塊和最外圍一周全部為淺色單元模塊的白邊框宏模塊,所述數(shù)據(jù)碼詞和簇號存放于邊框以內(nèi)的單元模塊之中,所述黑邊框宏模塊和白邊框宏模塊在碼圖中交替排列。
3.根據(jù)權(quán)利要求2所述的二維條碼,其特征在于,所述碼圖包括Mnum×Mnum個所述宏模塊,其中Mnum是大于1的奇數(shù);所述碼圖中心的所述宏模塊的簇號為0,由所述碼圖的中心往邊界的所述宏模塊的簇號按層順序增加。
4.根據(jù)權(quán)利要求3所述的二維條碼,其特征在于,不同的所述宏模塊中存放所述簇號信息的簇號單元模塊的位置和數(shù)量相同,所述簇號單元模塊中存放的值是該宏模塊位于碼圖中的層數(shù)對所述簇號單元模塊的最大存儲值進(jìn)行取模運(yùn)算所獲得的數(shù)值。
5.一種二維條碼的編碼方法,通過計算機(jī)將二進(jìn)制數(shù)據(jù)流編制成碼圖,其特征在于,包括如下步驟A、首先將所述二進(jìn)制數(shù)據(jù)流分割成具有特定比特長度的信息數(shù)據(jù)碼詞;B、然后對所述信息數(shù)據(jù)碼詞應(yīng)用糾錯算法進(jìn)行運(yùn)算,生成糾錯碼詞;C、在內(nèi)存中生成碼圖的主框架,包括每一個宏模塊的邊框和存儲的數(shù)據(jù)表示該宏模塊在所述碼圖中所處的位置的簇號模塊;D、從碼圖中心開始按順時針螺旋方向?qū)?shù)據(jù)碼詞和糾錯碼詞填充到碼圖中,從而生成碼像文件。
6.根據(jù)權(quán)利要求5所述的二維條碼的編碼方法,其特征在于,在所述步驟A中先確定所述宏模塊的每行所包括的單元模塊的數(shù)量Num,然后確定所述簇號模塊的數(shù)量為Num10,計算所述信息數(shù)據(jù)碼詞的特定比特長度Num20為Num×Num-(Num-1)×4-Num10;在所述步驟C中首先計算所述信息數(shù)據(jù)碼詞和糾錯碼詞的數(shù)量之和,該和小于或者等于所述碼圖中所包括的宏模塊的數(shù)(Mnum×Mnum),Mnum是大于1的奇數(shù)。
7.根據(jù)權(quán)利要求6所述的二維條碼的編碼方法,其特征在于,在所述步驟C中生成的所述宏模塊的邊框全部為深色單元模塊,或者全部為淺色模塊,這兩種邊框的宏模塊在碼圖中交替排列,所述數(shù)據(jù)碼詞和簇號存放于邊框以內(nèi)的單元模塊之中。
8.根據(jù)權(quán)利要求7所述的二維條碼的編碼方法,其特征在于,所述碼圖中心的所述宏模塊的簇號為0,由所述碼圖的中心往邊界的所述宏模塊的簇號按層順序增加。
9.根據(jù)權(quán)利要求5所述的二維條碼的編碼方法,其特征在于,在所述步驟C中所述簇號單元模塊中存放的值是該宏模塊位于碼圖中位置相對于中心宏模塊的層數(shù)對所述簇號單元模塊的最大存儲值進(jìn)行取模運(yùn)算所獲得的數(shù)值。
10.一種二維條碼的解碼方法,通過數(shù)字照相機(jī)和計算機(jī)將碼圖還原成二進(jìn)制數(shù)據(jù)流,其特征在于,包括如下步驟I.通過照相方式獲取碼圖的、包括每一個象素的灰度值的象素矩陣的灰階數(shù)字圖像;II.對灰階數(shù)字圖像中不同象素的灰度值的分布進(jìn)行統(tǒng)計,根據(jù)所述統(tǒng)計值選擇閥值將灰階圖像轉(zhuǎn)化成二值圖像;III.檢測上述二值圖像中的每一個淺色像素,如果與它最臨近的上下左右四個像素中有一個或者一個以上深色像素則該像素被標(biāo)記為邊界像素,獲得邊界圖像;檢測所述邊界圖像中的直線獲得直線方程并且解所述直線方程求得每個宏模塊的四角坐標(biāo);IV.根據(jù)每個宏模塊的四角坐標(biāo)插值計算宏模塊內(nèi)每個單元模塊的坐標(biāo);V.對應(yīng)所述單元模塊的坐標(biāo)到所述二值圖像的數(shù)字信號中讀取該單元模塊存儲的0或者1的比特值獲得碼詞矩陣;VI.通過下述步驟判斷碼詞矩陣的方向A、對上述數(shù)據(jù)矩陣分別從四個不同的方向、按照已知的簇號模塊的位置和單元取得每一個宏模塊的每一個可能的簇號;B、分別對每一個方向,分別計算每個宏模塊的可能簇號與它相鄰右邊、和相鄰下邊宏模塊的相應(yīng)可能簇號的差的絕對值,并將所得的絕對值累加作為該方向的得分;C、比較四個方向的得分,得分最少的方向為碼圖的正確方向;VII.按照碼詞矩陣的對稱關(guān)系確定中心碼詞;VIII.按照所述正確方向和中心碼詞,從中心碼詞開始按照順時針方向?qū)⑺鰯?shù)據(jù)碼詞矩陣恢復(fù)為數(shù)據(jù)碼詞序列。
11.根據(jù)權(quán)利要求10所述的二維條碼的解碼方法,其特征在于,在所述步驟VIII中,還對所述數(shù)據(jù)碼詞系列運(yùn)用Reed-Solomon糾錯算法糾正數(shù)據(jù)碼詞中存在的錯誤。
12.根據(jù)權(quán)利要求11所述的二維條碼的解碼方法,其特征在于,在所述步驟VII中,當(dāng)對應(yīng)于碼圖中心宏模塊的數(shù)據(jù)碼詞具有多種可能時,針對每一個候選的中心宏模塊按層分別累加其外圍全部數(shù)據(jù)碼詞的簇號,并且每作一次累加,就在累加之和中減去其位置所相對于候選中心宏模塊的正確簇號值;比較針對不同中心宏模塊的得分,具有最高得分的確定為正確的中心。
13.根據(jù)權(quán)利要求12所述的二維條碼的解碼方法,其特征在于,所述步驟II是,將灰階圖像分割成不重疊或者部分重疊的區(qū)域,針對各個區(qū)域分別統(tǒng)計灰階值的分布確定二值化閥值并二值化,重疊區(qū)域用區(qū)域自身的閥值以及與它相鄰區(qū)域的閥值的加權(quán)平均作為該區(qū)域的二值化閥值并二值化,然后再將二值化的各部分組合成對應(yīng)于碼圖的二值化圖像。
14.根據(jù)權(quán)利要求13所述的二維條碼的解碼方法,其特征在于,在所述步驟III中獲得邊界圖像后,以黑邊框宏模塊和白邊框宏模塊交替排列時的對角處具有的兩種特殊圖形模式為模板,通過匹配計算檢測出每個宏模塊的四角坐標(biāo),然后直接進(jìn)入第IV步。
15.根據(jù)權(quán)利要求14所述的二維條碼的解碼方法,其特征在于,在所述步驟III中獲得邊界圖像的步驟是檢測所述二值圖像中的每一個深色像素,如果與它最臨近的上下左右四個像素中有一個或者一個以上淺色像素則該像素被標(biāo)記為邊界像素。
全文摘要
本發(fā)明克服現(xiàn)有二維條碼的特征模式區(qū)域與格式信息比較集中、易于被破壞、抗變形能力差的缺點,提出一種二維條碼以及將數(shù)據(jù)編碼生成該二維條碼的碼圖和從該碼圖解碼還原數(shù)據(jù)的方法。這種條碼具有矩形碼圖,所述碼圖由不同光學(xué)特征的矩形單元模塊在平面上無間隙排列而成;單元模塊分割成存儲固定數(shù)據(jù)長度的數(shù)據(jù)碼詞的矩形的、在碼圖中交替排列的黑邊框宏模塊和白邊框宏模塊。宏模塊中還存放代表該宏模塊在所述碼圖中的位置的簇號信息。編碼方法的步驟包括分割二進(jìn)制數(shù)據(jù)流、進(jìn)行糾錯運(yùn)算、生成簇號模塊和碼圖。解碼方法包括對碼圖照相并二值化、檢測邊界、求得宏模塊的四角坐標(biāo)、讀取比特值、判斷碼詞矩陣的方向、確定中心碼詞等。
文檔編號G06K19/06GK1670763SQ20041002205
公開日2005年9月21日 申請日期2004年3月15日 優(yōu)先權(quán)日2004年3月15日
發(fā)明者常治國, 王鵬, 呂迎豐, 張斧, 丁曉云 申請人:深圳矽感科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1