專(zhuān)利名稱(chēng):二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及自動(dòng)識(shí)別技術(shù)中的條碼符號(hào)轉(zhuǎn)換技術(shù),特別涉及一種結(jié)合特定條碼的結(jié)構(gòu)特征,將二維條碼符號(hào)中碼流信息轉(zhuǎn)換為編碼信息的方法,屬于自動(dòng)識(shí)別技術(shù)領(lǐng)域。
背景技術(shù):
二維條碼可以分為堆疊式二維條碼和矩陣式二維條碼。堆疊式二維條碼形態(tài)上是由多行短截的一維條碼堆疊而成,矩陣式二維條碼以矩陣的形式組成,在矩陣相應(yīng)元素位置上用點(diǎn)的出現(xiàn)表示二進(jìn)制″1″,空的出現(xiàn)表示二進(jìn)制″0″,由點(diǎn)的排列組合確定了代碼表示的含義。堆疊式二維條碼中包含附加的格式信息,信息容量最大可以達(dá)到1000個(gè)字節(jié)左右,但是,如果采用較高的糾錯(cuò)等級(jí),堆疊式二維條碼存儲(chǔ)有效數(shù)據(jù)的能力會(huì)進(jìn)一步下降。
矩陣式二維條碼與堆疊式二維條碼相比,具有更高的信息密度。現(xiàn)有的矩陣式二維條碼符號(hào),例如QR碼,參見(jiàn)圖1,由于其所具有的尋像圖形、校正圖形都由不同顏色正方形相互交替重疊構(gòu)成。在對(duì)QR碼進(jìn)行識(shí)讀和定位時(shí),要求所有的尋像圖形都必須存在,或者在只有一部分尋像圖形存在的情況下,必須有一定數(shù)量和固定位置的校正圖形存在;否則就不能對(duì)其進(jìn)行定位,進(jìn)而影響對(duì)QR碼中存儲(chǔ)的信息進(jìn)行還原。
為此,申請(qǐng)人研究并開(kāi)發(fā)出一種新的矩陣式二維條碼——漢信碼,參見(jiàn)圖2,本發(fā)明涉及的漢信碼符號(hào)由設(shè)置在一個(gè)矩形區(qū)域四角處的尋像圖形1、功能信息區(qū)域5以及校正圖形2、輔助校正圖形3、信息編碼區(qū)域4(包括數(shù)據(jù)編碼、糾錯(cuò)編碼和填充碼字)構(gòu)成的符號(hào)模塊所構(gòu)成。其中,較低的版本1、2、3的漢信碼中容納信息少,不設(shè)置校正圖形和輔助校正圖形。這種二維條碼符號(hào)的尋像圖形及其分布結(jié)構(gòu)本身具有確定的定位信息,并且新的二維條碼結(jié)構(gòu)更加緊湊。
眾所周知對(duì)條碼符號(hào)進(jìn)行識(shí)讀的目的是將存儲(chǔ)在條碼中的信息由符號(hào)形式轉(zhuǎn)變?yōu)樾畔⒕幋a流,然后根據(jù)相應(yīng)的解碼方法對(duì)該信息編碼流進(jìn)行解碼,得到最終的數(shù)據(jù),以實(shí)現(xiàn)通過(guò)條碼符號(hào)實(shí)現(xiàn)數(shù)據(jù)傳遞或交換的目的。但是現(xiàn)有的二維條碼識(shí)讀速度慢,并且在殘損時(shí)不易識(shí)讀,例如QR碼,在進(jìn)行識(shí)讀和定位時(shí),要求所有的尋像圖形都存在,或者在只有一部分尋像圖形存在的情況下,必須有一定數(shù)量和固定位置的校正圖形存在;否則就不能對(duì)其進(jìn)行定位,如果缺少一定數(shù)量的尋像圖形,無(wú)法進(jìn)行識(shí)別和定位,進(jìn)而影響對(duì)QR碼中存儲(chǔ)的信息進(jìn)行還原。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)現(xiàn)有技術(shù)二維條碼識(shí)讀速度慢,在圖形缺失或者畸變時(shí)不易識(shí)讀的缺陷,具體結(jié)合漢信碼的結(jié)構(gòu)特征,提供一種快速識(shí)讀二維條碼符號(hào),將二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法。
本發(fā)明一種二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法,包括步驟1在二維條碼符號(hào)中尋找尋像圖形,利用尋找到的尋像圖形將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置;步驟2提取尋像圖形附近功能信息區(qū)域的功能信息,獲得掩模信息和糾錯(cuò)等級(jí)信息;步驟3讀取二維條碼符號(hào)中位于尋像圖形和功能信息區(qū)域之外的模塊數(shù)據(jù)獲得數(shù)據(jù)編碼和糾錯(cuò)編碼信息;步驟4根據(jù)掩模信息對(duì)獲取的數(shù)據(jù)編碼和糾錯(cuò)編碼進(jìn)行去掩模處理;步驟5根據(jù)糾錯(cuò)等級(jí)信息計(jì)算數(shù)據(jù)編碼和糾錯(cuò)編碼的位數(shù);步驟6根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò),得到恢復(fù)的編碼數(shù)據(jù)。
上述方案中,所述的步驟1還包括尋找校正圖形,利用尋找到的尋像圖形和校正圖形將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。
上述方案中,所述的步驟1包括步驟1.1在二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近尋找尋像圖形,如果找到尋像圖形,則執(zhí)行步驟1.2;否則結(jié)束;步驟1.2如果尋像圖形中包括符合標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角尋像圖形特征的尋像圖形,則對(duì)所述二維條碼符號(hào)進(jìn)行旋轉(zhuǎn),使符合標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角尋像圖形特征的尋像圖形所在的頂點(diǎn)位于二維條碼符號(hào)左下角,執(zhí)行步驟2;否則執(zhí)行步驟1.3;步驟1.3根據(jù)找到的尋像圖形的個(gè)數(shù)和/或所找到的尋像圖形在二維條碼符號(hào)中的位置,對(duì)所述二維條碼符號(hào)進(jìn)行旋轉(zhuǎn),使二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。
本發(fā)明根據(jù)漢信碼的結(jié)構(gòu)特點(diǎn)提供了一種二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法,根據(jù)已得到的二維條碼符號(hào),通過(guò)掃描可以快速找到尋像圖形,根據(jù)尋像圖形的個(gè)數(shù)及位置對(duì)其識(shí)讀,旋轉(zhuǎn)到標(biāo)準(zhǔn)位置,讀取功能信息數(shù)據(jù)獲得掩模信息和糾錯(cuò)等級(jí),然后就可以從二維條碼符號(hào)尋像圖形和功能信息區(qū)域以外(編碼信息區(qū)域內(nèi))從左到右依次讀取模塊數(shù)據(jù)。通過(guò)已得到的掩模信息對(duì)數(shù)據(jù)進(jìn)行去掩模處理,然后根據(jù)糾錯(cuò)等級(jí)得知糾錯(cuò)量,得到糾錯(cuò)編碼和數(shù)據(jù)編碼的位數(shù)。根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò)處理,處理后得到的數(shù)據(jù)即為原始的數(shù)據(jù)編碼。
本發(fā)明克服了現(xiàn)有技術(shù)識(shí)讀速度慢,在圖形缺失或者畸變時(shí)不易識(shí)讀的缺陷,通過(guò)尋找尋像圖形,可以快速的識(shí)讀二維條碼符號(hào),在識(shí)讀和定位時(shí),如果找到一個(gè)或以上的尋像圖形即可進(jìn)行識(shí)讀,增加了識(shí)讀和抗殘損能力,即使缺失一部分信息也根據(jù)二維條碼符號(hào)中模塊放置方法,以及數(shù)據(jù)碼字和糾錯(cuò)碼字的混合放置,分理出數(shù)據(jù)信息和糾錯(cuò)信息;在解碼時(shí)進(jìn)行數(shù)據(jù)糾錯(cuò),得到解碼后的信息,大大提高了識(shí)讀的速度和抗殘損的能力,并提高了解碼的效率。
圖1為QR碼的結(jié)構(gòu)示意圖;圖2為漢信碼的結(jié)構(gòu)示意圖;圖3為本發(fā)明的二維條碼符號(hào)轉(zhuǎn)換為編碼信息方法的實(shí)施例流程圖;圖4為本發(fā)明步驟1實(shí)施例流程圖;圖5為本發(fā)明步驟1.3實(shí)施例流程圖;圖6為步驟1的優(yōu)選實(shí)施例流程圖;圖7為尋像圖形的示意圖;圖8為確定尋像圖形坐標(biāo)的示意圖;圖9為有三個(gè)尋像圖形時(shí)確定二維條碼符號(hào)位置的實(shí)施例示意圖;圖10為兩個(gè)尋像圖形位于對(duì)角線位置確定二維條碼符號(hào)位置時(shí)未旋轉(zhuǎn)到標(biāo)準(zhǔn)位置的實(shí)施例示意圖;圖11為兩個(gè)尋像圖形位于對(duì)角線位置時(shí)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置的實(shí)施例示意圖;圖12為本發(fā)明步驟1.3.2.2’確定二維條碼符號(hào)位置時(shí)一種情況旋轉(zhuǎn)后達(dá)到標(biāo)準(zhǔn)位置的實(shí)施例示意圖;圖13為本發(fā)明步驟1.3.2.2’確定二維條碼符號(hào)位置時(shí)另一種情況旋轉(zhuǎn)后達(dá)到標(biāo)準(zhǔn)位置的實(shí)施例示意圖;圖14為本發(fā)明步驟2.2的實(shí)施例流程圖;圖15為確定尋像圖形寬度示意圖;圖16為獲取功能信息示意圖;圖17為本發(fā)明步驟3.2一個(gè)優(yōu)選流程圖;圖18為本發(fā)明步驟6優(yōu)選流程圖。
具體實(shí)施例方式
圖2為漢信碼的結(jié)構(gòu)示意圖,也即二維條碼符號(hào)標(biāo)準(zhǔn)位置的示意圖。碼圖符號(hào)是由n×n個(gè)模塊組成的陣列構(gòu)成的正方形。二維條碼符號(hào)由設(shè)置在一個(gè)矩形區(qū)域四角處的尋像圖形1、功能信息區(qū)域5以及校正圖形2、輔助校正圖形3、數(shù)據(jù)編碼和糾錯(cuò)編碼構(gòu)成的符號(hào)模塊4所構(gòu)成。在漢信碼中的尋像圖形形狀相同,但放置方向不同,位于左上角、右上角、右下角的尋像圖形分別依順時(shí)針?lè)较蛐D(zhuǎn)90度擺放在各個(gè)頂點(diǎn)位置,位于左下角的尋像圖形擺放方向和右上角的尋像圖形擺放方向相同,如圖2所示。功能信息區(qū)域5與尋像圖形1之間為1個(gè)單位模塊寬度的空白區(qū)域,將尋像圖形1與功能信息區(qū)域5分開(kāi)。容納信息量較小(版本1、2、3)的漢信碼符號(hào)中不設(shè)置校正圖形和輔助校正圖形。校正圖形是由相鄰的深色和淺色兩條線組成階梯形的一組以上的折線,二維條碼符號(hào)左邊線和下邊線附近的校正圖形,簡(jiǎn)化為單模塊寬度的深色線,與左上角和右下角尋像圖形附近的功能信息區(qū)域5相連。對(duì)于和二維條碼符號(hào)四個(gè)邊重疊的校正線,在沒(méi)有與其它校正折線相交的那個(gè)端點(diǎn)構(gòu)造輔助校正圖形3。輔助校正圖形為一個(gè)2×3模塊大小的圖形,中間為深色模塊,剩下5個(gè)為淺色模塊。另外,二維條碼符號(hào)的右上角區(qū)域校正圖形的校正折線稀疏,也分別布置兩個(gè)2×3模塊的輔助校正圖形。如圖2所示,校正圖形中的與二維條碼符號(hào)左邊線和下邊線相交的折線處與左上角和右下角尋像圖形附近的功能信息區(qū)域相連,其余的校正圖形折線則與尋像圖形附近的功能信息區(qū)域則不相連。相鄰兩個(gè)頂點(diǎn)附近的功能信息區(qū)域5組成功能信息,功能信息中包括版本信息、掩模信息、糾錯(cuò)等級(jí)等信息,獲得正確的功能信息后即可得到版本、掩模及糾錯(cuò)登記相關(guān)的信息。
如圖3所示,本發(fā)明二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法,包括步驟1在二維條碼符號(hào)中尋找尋像圖形,利用尋找到的尋像圖形將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置;步驟2提取尋像圖形附近功能信息區(qū)域的功能信息,獲得掩模信息和糾錯(cuò)等級(jí)信息;步驟3讀取位于二維條碼符號(hào)中尋像圖形和功能信息區(qū)域之外的模塊數(shù)據(jù)獲得數(shù)據(jù)編碼和糾錯(cuò)編碼信息;步驟4根據(jù)掩模信息對(duì)獲取的數(shù)據(jù)編碼和糾錯(cuò)編碼去掩模處理;步驟5根據(jù)糾錯(cuò)等級(jí)計(jì)算數(shù)據(jù)編碼和糾錯(cuò)編碼的位數(shù);步驟6根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò),得到恢復(fù)的編碼數(shù)據(jù)。
本發(fā)明克服了現(xiàn)有技術(shù)識(shí)讀速度慢,在圖形缺失或者畸變時(shí)不易識(shí)讀的缺陷,尋找尋像圖形,可以快速的識(shí)讀二維條碼符號(hào),在識(shí)讀和定位時(shí),如果找到一個(gè)或以上的尋像圖形即可進(jìn)行識(shí)讀,增加了識(shí)讀和抗殘損能力,即使缺失一部分信息也根據(jù)二維條碼符號(hào)中模塊放置方法,以及數(shù)據(jù)碼字和糾錯(cuò)碼字的混合放置,分理出數(shù)據(jù)信息和糾錯(cuò)信息;在解碼時(shí)進(jìn)行數(shù)據(jù)糾錯(cuò),得到解碼后的信息,大大提高了識(shí)讀的速度和抗殘損的能力,并提高了解碼的效率。
如圖4所示,本發(fā)明中步驟1包括步驟1.1在二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近尋找尋像圖形,如果找到尋像圖形,則執(zhí)行步驟1.2;否則結(jié)束;步驟1.2如果尋像圖形中包括符合標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角尋像圖形特征的尋像圖形,則對(duì)所述二維條碼符號(hào)進(jìn)行旋轉(zhuǎn),使符合標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角尋像圖形特征的尋像圖形所在的頂點(diǎn)位于二維條碼符號(hào)左下角,執(zhí)行步驟2;否則執(zhí)行步驟1.3;步驟1.3根據(jù)找到的尋像圖形的個(gè)數(shù)和/或所找到的尋像圖形在二維條碼符號(hào)中的位置,對(duì)所述二維條碼符號(hào)進(jìn)行旋轉(zhuǎn),使二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。
圖5為步驟1.3流程圖,如圖5所示,步驟1.3包括
步驟1.3.1判斷是否在二維條碼符號(hào)四個(gè)頂點(diǎn)位置附近找到三個(gè)尋像圖形,如果是,將二維條碼符號(hào)缺失尋像圖形所在的頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左下角的位置,執(zhí)行步驟2;否則執(zhí)行步驟1.3.2;步驟1.3.2判斷是否找到兩個(gè)尋像圖形,如果是,根據(jù)找到的兩個(gè)尋像圖形在二維條碼符號(hào)中的位置,將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置,否則執(zhí)行步驟1.3.3;步驟1.3.3在二維條碼符號(hào)四個(gè)頂點(diǎn)位置附近找到唯一尋像圖形,將找到的尋像圖形所在的頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左上角、右上角或右下角的位置,執(zhí)行步驟2。
步驟1.3中,所述的步驟1.3.2包括步驟1.3.2.1判斷是否找到兩個(gè)尋像圖形,如果否,執(zhí)行步驟1.3.3,否則判斷找到的兩個(gè)尋像圖形所在頂點(diǎn)是否位于二維條碼符號(hào)的對(duì)角線位置,如果是,則將兩個(gè)尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到其中一個(gè)尋像圖形的頂點(diǎn)位于二維條碼符號(hào)左上角的位置,執(zhí)行步驟2;否則執(zhí)行步驟1.3.2.2;步驟1.3.2.2將二維條碼符號(hào)旋轉(zhuǎn)到兩個(gè)尋像圖形所在頂點(diǎn)分別位于二維條碼符號(hào)左上角、右上角的位置,或者將二維條碼符號(hào)轉(zhuǎn)到兩個(gè)尋像圖形所在頂點(diǎn)分別位于二維條碼符號(hào)右上角、右下角的位置,執(zhí)行步驟2。
上述技術(shù)方案中,所述的步驟1還包括尋找校正圖形,所述校正圖形為相鄰的深色和淺色兩條線組成的階梯形的折線。通過(guò)線性掃描可以得知二維條碼符號(hào)中是否存在校正圖形。
上述方法中,步驟1.3.2.2之前還包括步驟1.3.2.2’判斷二維條碼符號(hào)中是否存在校正圖形,如果存在校正圖形,判斷尋像圖形附近的功能信息區(qū)域是否與校正圖形的一段折線相連,然后將與校正圖形無(wú)連接關(guān)系的尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到二維條碼符號(hào)右上角的位置,執(zhí)行步驟2;否則執(zhí)行步驟1.3.2.2。
步驟1.3.3之前還包括
步驟1.3.3’判斷二維條碼符號(hào)中是否存在校正圖形,如果不存在校正圖形,執(zhí)行步驟1.3.3,否則執(zhí)行1.3.3’.1’;步驟1.3.3’.1’判斷找到的唯一尋像圖形附近的功能信息區(qū)域是否與校正圖形有連接關(guān)系,如果無(wú)連接關(guān)系,將尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到二維條碼符號(hào)右上角的位置,執(zhí)行步驟2,否則執(zhí)行步驟1.3.3’.2’;步驟1.3.3’.2’將尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到二維條碼符號(hào)右下角或者左上角的位置,執(zhí)行步驟2。
圖6為本發(fā)明步驟1的優(yōu)選流程圖,如圖6所示,圖6包括了上述的所有步驟,為一個(gè)優(yōu)選實(shí)施例,具體步驟說(shuō)明不再贅述。
為保證達(dá)到快速識(shí)讀譯碼的要求,步驟1在尋找尋像圖形過(guò)程中可以采用線性掃描特征比例的方式進(jìn)行碼圖尋像。如圖7所示,尋像圖形由5個(gè)深色和淺色正方形重疊組成,每一尋像圖形的模塊序列由一個(gè)深色-淺色-深色-淺色-深色次序構(gòu)成,各元素的相對(duì)寬度的比例是1∶1∶1∶1∶3或者3∶1∶1∶1∶1。對(duì)二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近的區(qū)域進(jìn)行線性掃描,尋找深色與淺色模式比例符合1∶1∶1∶3或者3∶1∶1∶1的陣列,如果找到深色與淺色模式比例符合1∶1∶1∶3或者3∶1∶1∶1∶1的陣列則找到尋像圖形,執(zhí)行步驟1.2;否則結(jié)束。確定尋像圖形中,每一元素寬度的允許偏差為0.5(即單個(gè)模塊的方塊的尺寸允許范圍為0.5~1.5,3個(gè)模塊寬度的方塊的寬度允許尺寸范圍為2.5~3.5)。
步驟1在尋找尋像圖形中也可采用模糊識(shí)別的方式判斷四個(gè)頂點(diǎn)是否存在尋像圖形在二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近尋找尋像圖形,將二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近圖像與事先存儲(chǔ)的尋像圖形模板進(jìn)行匹配,如果二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近圖像與尋像圖形模板之間的相似度不小于某一設(shè)定的閾值,則找到尋像圖形。模糊識(shí)別為現(xiàn)在公知的一種技術(shù),在此不再詳述。
步驟1.1找到尋像圖形以后,步驟1.2可判斷尋像圖形中是否有符合標(biāo)準(zhǔn)位置二維條碼符號(hào)左下角尋像圖形特征的尋像圖形,如果有,則將符合標(biāo)準(zhǔn)二維條碼符號(hào)左下角尋像圖形特征的尋像圖形所在的頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左下角的位置。
圖8為采用線性掃描的方式確定尋像圖形中心坐標(biāo)的示意圖。尋找尋像圖形的中心坐標(biāo)的一個(gè)實(shí)施例為a.當(dāng)探測(cè)到預(yù)選某一頂點(diǎn)附近區(qū)域時(shí),注意圖像中一行像素與尋像圖形的外邊緣相遇的第一點(diǎn)和最后一點(diǎn)1和2(如圖8所示)。對(duì)該圖像中的相鄰行重復(fù)探測(cè),直到在中心方塊X軸方向所有穿過(guò)尋像圖形的直線被全部識(shí)別。
b.重復(fù)步驟a,在圖像的Y軸方向,識(shí)別穿過(guò)尋像圖形中心方塊的所有像素行。
c.確定尋像圖形中心,通過(guò)在X軸方向穿過(guò)尋像圖形中心塊的最外層的像素線上1、2兩點(diǎn)連線,連線上深色與淺色的變化比例模式為1∶1∶1∶1∶3或3∶1∶1∶1∶1,可以確定沿X軸方向上比例為3的模塊的中心位置x,用同樣方法在另一垂直方向上劃一直線。通過(guò)深色與淺色的變化比例模式為1∶1∶1∶1∶3或3∶1∶1∶1∶1,可以確定沿Y軸方向上比例為3的模塊的中心位置y,坐標(biāo)(x,y)即為尋像圖形中心坐標(biāo)。
同樣,類(lèi)似的,也可以確定比例為3的模塊的頂點(diǎn)坐標(biāo)。通過(guò)分析尋像圖形中心的坐標(biāo)或者頂點(diǎn)坐標(biāo),可以識(shí)別位于左下角的尋像圖形。
如果尋像圖形符合標(biāo)準(zhǔn)位置二維條碼符號(hào)的左下角尋像圖形特征,可直接將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置,所以可以直接執(zhí)行步驟2,進(jìn)行后續(xù)譯碼。
圖9至圖13為找到的尋像圖形中沒(méi)有符合二維條碼符號(hào)標(biāo)準(zhǔn)位置左下角尋像圖形特征時(shí)的判定方法。
如圖9所示,為步驟1.3.1,找到三個(gè)尋像圖形的情況,只需將缺失尋像圖形所在的頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左下角的位置,即可將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。其中圖9左半部分為未旋轉(zhuǎn)到標(biāo)準(zhǔn)位置的三種情況,右半部分為經(jīng)旋轉(zhuǎn)后達(dá)到標(biāo)準(zhǔn)位置的二維條碼符號(hào)。
圖10和圖11為步驟1.3.2.1找到兩個(gè)尋像圖形且兩個(gè)尋像圖形所在頂點(diǎn)位于二維條碼符號(hào)的對(duì)角線位置的示意圖,由于找到的尋像圖形不存在符合標(biāo)準(zhǔn)二維條碼符號(hào)左下角尋像圖形特征的尋像圖形,所以?xún)蓚€(gè)尋像圖形只能位于二維條碼符號(hào)標(biāo)準(zhǔn)位置中的左上角和右下角。但由于兩個(gè)尋像圖形位置對(duì)稱(chēng),所以無(wú)法確定那個(gè)位于左上角,那個(gè)位于右下角。圖10為未旋轉(zhuǎn)到標(biāo)準(zhǔn)位置的條碼符號(hào),圖11為旋轉(zhuǎn)后的二維條碼符號(hào)。此時(shí)將兩個(gè)尋像圖形旋轉(zhuǎn)到其中一個(gè)尋像圖形的頂點(diǎn)位于二維條碼符號(hào)左上角,則另一個(gè)位于右下角的位置。由于兩個(gè)尋像圖形的位置對(duì)稱(chēng),所以只有一種旋轉(zhuǎn)是正確的,即旋轉(zhuǎn)后達(dá)到標(biāo)準(zhǔn)位置。在后續(xù)的步驟6中如果發(fā)現(xiàn)有錯(cuò)誤,則還會(huì)再進(jìn)行相應(yīng)的處理,以保證最后獲得正確地?cái)?shù)據(jù)編碼。
如圖12和圖13所示,為步驟1.3.2.2’存在校正圖形時(shí),結(jié)合校正圖形和尋像圖形將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置的示意圖。
步驟1.3.2.2’為尋找到兩個(gè)相鄰頂點(diǎn)的尋像圖形且存在校正圖形的情況,且尋像圖形不符合二維條碼符號(hào)左下角尋像圖形特征,所以所述相鄰頂點(diǎn)的兩個(gè)尋像圖形在標(biāo)準(zhǔn)二維條碼符號(hào)中的位置有以下四種情況(1)兩個(gè)尋像圖形所在頂點(diǎn)的正確位置分別位于二維條碼符號(hào)標(biāo)準(zhǔn)位置的左上角和右上角;(2)兩個(gè)尋像圖形所在頂點(diǎn)的正確位置分別位于二維條碼符號(hào)標(biāo)準(zhǔn)位置的右上角和右下角。
如圖12、圖13所示,校正圖形中的一組折線與一個(gè)尋像圖形附近的功能信息區(qū)域相連,其余的折線則與尋像圖形附近的功能信息區(qū)域不相連。此時(shí)只需把與校正圖形有連接關(guān)系的功能信息區(qū)域所在頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)右上角的位置,如圖12和圖13所示,圖12及圖13中左邊為未旋轉(zhuǎn)到二維條碼符號(hào)標(biāo)準(zhǔn)位置的符號(hào)圖形,箭頭所指向的為旋轉(zhuǎn)后達(dá)到二維條碼符號(hào)標(biāo)準(zhǔn)位置的符號(hào)圖形。
當(dāng)只找到兩個(gè)相鄰頂點(diǎn)位置的尋像圖形且不存在校正圖形時(shí),只能知道是上述(1)、(2)兩種情況,此時(shí)執(zhí)行步驟1.3.2.2將二維條碼符號(hào)旋轉(zhuǎn)到兩個(gè)尋像圖形所在頂點(diǎn)分別位于二維條碼符號(hào)左上角、右上角的位置,或者將二維條碼符號(hào)轉(zhuǎn)到兩個(gè)尋像圖形所在頂點(diǎn)分別位于二維條碼符號(hào)右上角、右下角的位置,執(zhí)行步驟2。由于存在兩種情況,所以只有一種旋轉(zhuǎn)可達(dá)到標(biāo)準(zhǔn)位置。在后續(xù)的步驟6中如果發(fā)現(xiàn)有錯(cuò)誤,則還會(huì)再進(jìn)行相應(yīng)的處理,以保證最后獲得正確地?cái)?shù)據(jù)編碼。
步驟1.3.3為只找到一個(gè)尋像圖形的處理過(guò)程,如果不存在校正圖形,則所找到的尋像圖形所在頂點(diǎn)位于標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角以外的位置,將尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左上角、右上角或右下角的位置。由于存在三種情況,所以只有一種旋轉(zhuǎn)可達(dá)到標(biāo)準(zhǔn)位置。在后續(xù)的步驟6中如果發(fā)現(xiàn)糾錯(cuò)無(wú)解,則還會(huì)再進(jìn)行相應(yīng)的處理,以保證最后獲得正確地?cái)?shù)據(jù)編碼。
步驟1.3.3’.1’為找到一個(gè)尋像圖形,且存在校正圖形的情況,判斷尋像圖形附近的功能信息區(qū)域與校正圖形是否相連,如果無(wú)則將此尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)右上角的位置,步驟1.3.3’.2’為找到一個(gè)尋像圖形,且存在校正圖形,但校正圖形與尋像圖形附近的功能信息區(qū)域相連的情況,此時(shí)將尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左上角或右下角的位置。由于存在左上角和右下角兩種種情況,所以只有一種情況可以旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。在后續(xù)的步驟6中如果發(fā)現(xiàn)有錯(cuò)誤,則還會(huì)再進(jìn)行相應(yīng)的處理,以保證最后獲得正確地?cái)?shù)據(jù)編碼。
本發(fā)明步驟2包括步驟2.1根據(jù)找到的尋像圖形確定尋像圖形的寬度;獲得模塊尺寸;步驟2.2根據(jù)模塊尺寸,讀取并合并相鄰兩頂點(diǎn)附近的功能信息區(qū)域,獲得掩模信息和糾錯(cuò)等級(jí)信息。
如圖14所示,為步驟2.2的一個(gè)優(yōu)選流程圖。其中步驟2.2包括步驟2.2.1讀取步驟1所找到的任一尋像圖形附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);步驟2.2.2讀取與尋像圖形任意一相鄰頂點(diǎn)附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);步驟2.2.3合并尋像圖形及相鄰頂點(diǎn)附近的兩個(gè)功能信息區(qū)域中的數(shù)據(jù),如果糾錯(cuò)無(wú)解,執(zhí)行步驟2.2.4;否則進(jìn)行糾錯(cuò)處理,獲得糾錯(cuò)等級(jí)信息和掩模信息,執(zhí)行步驟3;步驟2.2.4讀取尋像圖形另一相鄰頂點(diǎn)附近的功能信息區(qū)域中每一模塊的數(shù)據(jù)和在對(duì)角線尋像圖形附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);步驟2.2.5合并尋像圖形附近的功能信息區(qū)域數(shù)據(jù)和另一相鄰頂點(diǎn)附近的功能信息區(qū)域數(shù)據(jù),或者合并另一相鄰頂點(diǎn)附近的功能信息區(qū)域數(shù)據(jù)和對(duì)角線尋像圖形附近的功能信息區(qū)域數(shù)據(jù);步驟2.2.6如果糾錯(cuò)有解則進(jìn)行糾錯(cuò)處理,獲得糾錯(cuò)等級(jí)信息和掩模信息,執(zhí)行步驟3;否則結(jié)束。
步驟2尋找功能信息區(qū)域獲得掩模信息和糾錯(cuò)等級(jí)信息的一個(gè)實(shí)施例為1)由找到的尋像圖形確定尋像圖形的寬度(如圖15所示),例如圖中所示一個(gè)尋像圖形的寬度例如WUR;2)用7除以尋像圖形的寬度尺寸例如WUR,得到模塊尺寸CPURCPUR=WUR/73)根據(jù)尋像圖形的中心坐標(biāo)和模塊尺寸CPUR,確定在A尋像區(qū)域附近的功能信息區(qū)域中每一模塊的數(shù)據(jù)(圖16所示),尋像圖形為模塊比例符合1∶1∶1∶1∶3或3∶1∶1∶1∶1所構(gòu)成的7×7正方形模塊,功能信息區(qū)域與尋像圖形中的一個(gè)頂點(diǎn)組成9×9的正方形模塊,因此在知道單位模塊的尺寸CPUR之后,可初步確定功能信息區(qū)域5的位置,初步確定功能信息區(qū)域中每一模塊的數(shù)據(jù)。二進(jìn)制值0和1根據(jù)采樣網(wǎng)格上的深色淺色的圖形來(lái)確定;4)按照3)中描述的方法,確定在B尋像圖形附近的功能信息區(qū)域5中每一模塊的數(shù)據(jù);5)合并A和B尋像圖形附近的功能信息區(qū)域數(shù)據(jù),通過(guò)檢測(cè)并糾錯(cuò)確定功能信息,如果糾錯(cuò)有解,根據(jù)功能信息中的糾錯(cuò)位,對(duì)功能信息模塊出現(xiàn)的錯(cuò)誤進(jìn)行糾錯(cuò),獲得正確的功能信息,從而得知版本、糾錯(cuò)等級(jí)信息和掩模信息,否則轉(zhuǎn)到6);6)判斷糾錯(cuò)是否有解,如果無(wú)解,按照3)中描述的方法,確定在C尋像圖形附近的功能信息區(qū)域中每一模塊的數(shù)據(jù)和在D尋像圖形附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);合并A尋像圖形附近的功能信息區(qū)域數(shù)據(jù)和C尋像圖形附近的功能信息區(qū)域數(shù)據(jù),或者合并B尋像圖形附近的功能信息區(qū)域數(shù)據(jù)和D尋像圖形附近的功能信息區(qū)域數(shù)據(jù);7)判斷糾錯(cuò)是否有解,如果有解,對(duì)功能信息模塊出現(xiàn)的錯(cuò)誤進(jìn)行糾錯(cuò),得到版本、糾錯(cuò)等級(jí)信息和掩模信息;否則糾錯(cuò)無(wú)解,則無(wú)法獲得功能信息,結(jié)束本方法。
注意在合并兩個(gè)相鄰頂點(diǎn)附近的功能信息區(qū)域中的數(shù)據(jù)時(shí),合并時(shí)先后順序有兩種情況,但只要有一種糾錯(cuò)有解即可因?yàn)楣δ苄畔⒃谙噜忢旤c(diǎn)存儲(chǔ)時(shí)有先后順序,比如圖16所示,對(duì)于A、B兩尋像圖形,功能信息先在A尋像圖形附近的功能信息區(qū)域中存儲(chǔ),然后在B尋像圖形附近的功能信息區(qū)域中存儲(chǔ),只有按合并A和B附近的功能信息區(qū)域中數(shù)據(jù)的順序時(shí)才可能糾錯(cuò)有解,如果按合并B和A附近的功能信息區(qū)域中數(shù)據(jù)時(shí)糾錯(cuò)則無(wú)解,所以進(jìn)行合并時(shí)需要進(jìn)行兩種嘗試,但只要找到糾錯(cuò)有解的情況時(shí)即可。其中對(duì)角線位置的存放相同的功能數(shù)據(jù),功能信息區(qū)域的這種數(shù)據(jù)存放方式,使得即使二維條碼圖形缺失某一邊,仍可對(duì)數(shù)據(jù)進(jìn)行恢復(fù)。增加了識(shí)讀的能力。
上述方法中,步驟3包括步驟3.1從二維條碼符號(hào)第一行左側(cè)開(kāi)始至最后一行右側(cè)結(jié)束,依次順序讀取除尋像圖形和功能信息圖形之外的模塊數(shù)據(jù),且在每一行結(jié)尾處折返到下一行繼續(xù)讀?。徊襟E3.2按步驟3.1所述原理從左至右讀取其余各行數(shù)據(jù),直至最后一行結(jié)尾處。
圖17為本發(fā)明步驟3的一個(gè)優(yōu)選流程圖,結(jié)合漢信碼的符號(hào)特征,步驟3包括3.1.1從二維條碼符號(hào)第一行左上角尋像圖形與左上角功能信息區(qū)域之外第一模塊處開(kāi)始讀取模塊數(shù)據(jù);3.1.2從左到右順序讀取模塊數(shù)據(jù),直到二維條碼符號(hào)第一行右上角功能信息區(qū)域前一坐標(biāo)處;3.2.1從左上角功能信息區(qū)域與第二行相交點(diǎn)坐標(biāo)后第一模塊處從左至右讀取模塊數(shù)據(jù)直至右上角功能信息區(qū)域與第二行相交點(diǎn)前一坐標(biāo)處;3.2.2根據(jù)3.2.1所述原則讀取第3行至第8行模塊數(shù)據(jù);3.2.3從左上角功能信息區(qū)域與第九行相交點(diǎn)中最大橫坐標(biāo)所在點(diǎn)后第一模塊開(kāi)始從左至右讀取模塊數(shù)據(jù)直至右上角功能信息區(qū)域與第九行相交點(diǎn)中最小橫坐標(biāo)所在點(diǎn)前第一模塊坐標(biāo)處;轉(zhuǎn)入第十行起始坐標(biāo)處;3.2.4從起始坐標(biāo)處左至右讀取一行模塊數(shù)據(jù),直至二維條碼符號(hào)的右邊線處,轉(zhuǎn)入下一行起始坐標(biāo)處;3.2.5循環(huán)執(zhí)行3.2.4,直至下一行起始坐標(biāo)為左下角功能信息區(qū)域與左邊線相交點(diǎn)坐標(biāo);3.2.6從左下角功能信息區(qū)域與此行相交點(diǎn)中最大橫坐標(biāo)后一模塊開(kāi)始從左至右順序讀取模塊數(shù)據(jù),直至右下角功能信息區(qū)域與此行相交點(diǎn)中最小橫坐標(biāo)前第一模塊處,轉(zhuǎn)入下一行;3.2.7從左下角功能信息區(qū)域與此行相交點(diǎn)后一模塊處從左至右讀取模塊數(shù)據(jù),直到右下角功能信息區(qū)域與此行相交點(diǎn)前一模塊,轉(zhuǎn)入下一行;3.2.8循環(huán)3.2.7,直至最后一行。
對(duì)于存在校正圖形和輔助校正圖形的二維條碼符號(hào),步驟3在讀取模塊數(shù)據(jù)過(guò)程中,如果模塊為校正圖形或輔助校正圖形,則放棄讀取此模塊數(shù)據(jù)。
在步驟2中獲得的功能信息中還可包含版本信息。由版本信息可得知校正圖形及輔助校正圖形的位置,從而在步驟3讀取數(shù)據(jù)時(shí),跳過(guò)校正圖形和輔助校正圖形的模塊。
本發(fā)明步驟4包括由步驟2獲得的掩模信息,對(duì)數(shù)據(jù)編碼和糾錯(cuò)編碼進(jìn)行異或處理,去除掩模,恢復(fù)數(shù)據(jù)編碼和糾錯(cuò)編碼。
步驟5包括根據(jù)步驟2獲得的糾錯(cuò)等級(jí)信息,可得知糾錯(cuò)容量,不同的糾錯(cuò)等級(jí)具有不同的糾錯(cuò)容量;糾錯(cuò)容量為糾錯(cuò)編碼占數(shù)據(jù)編碼和糾錯(cuò)編碼共有數(shù)據(jù)量的百分比,經(jīng)過(guò)計(jì)算即可得知糾錯(cuò)編碼的位數(shù)和數(shù)據(jù)編碼的位數(shù)。
獲得了糾錯(cuò)編碼以后,對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò),即可得到恢復(fù)后的編碼信息。糾錯(cuò)計(jì)算根據(jù)二維條碼符號(hào)中模塊放置算法,以及數(shù)據(jù)碼字和糾錯(cuò)碼字的混合算法,分離出數(shù)據(jù)碼字和糾錯(cuò)碼字,可采用現(xiàn)有的分塊糾錯(cuò),提高譯碼的正確率,糾錯(cuò)為公知的技術(shù),比如QR碼、PDF417碼的糾錯(cuò)計(jì)算等,其工作原理在此不再詳述。
如圖18所示,為本發(fā)明步驟6的一個(gè)優(yōu)選實(shí)施例,步驟6包括步驟6.1根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼糾錯(cuò)計(jì)算,如果有解,則得到恢復(fù)的編碼數(shù)據(jù);否則執(zhí)行步驟6.2;步驟6.2根據(jù)尋像圖形的個(gè)數(shù)和旋轉(zhuǎn)后的尋像圖形在二維條碼符號(hào)中的位置,對(duì)二維條碼符號(hào)順時(shí)針或逆時(shí)針旋轉(zhuǎn)90度的整數(shù)倍,然后執(zhí)行步驟2。
對(duì)于存在校正圖形的二維條碼符號(hào),步驟6包括步驟6.1根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼糾錯(cuò)計(jì)算,如果有解,則得到恢復(fù)的編碼數(shù)據(jù);否則執(zhí)行步驟6.2;步驟6.2’判斷是否有兩個(gè)尋像圖形,如果是執(zhí)行步驟6.3,否則執(zhí)行步驟6.5;步驟6.3’如果兩個(gè)尋像圖形位于對(duì)角線位置,則將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2;否則執(zhí)行步驟6.4;步驟6.4‘如果兩個(gè)尋像圖形位于左上角和右上角則按順時(shí)針將二維條碼符號(hào)旋轉(zhuǎn)90度后執(zhí)行步驟2;否則逆時(shí)針將二維條碼符號(hào)旋轉(zhuǎn)90度后執(zhí)行步驟2;步驟6.5’判斷是否存在校正圖形,如果存在校正圖形則將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2,否則執(zhí)行步驟6.6;步驟6.6如果尋像圖形位于二維條碼符號(hào)右下角的位置則將二維條碼符號(hào)旋轉(zhuǎn)180度然后執(zhí)行步驟2,否則將二維條碼符號(hào)順時(shí)針旋轉(zhuǎn)90度然后執(zhí)行步驟2。
步驟6中所述的糾錯(cuò)計(jì)算根據(jù)二維條碼符號(hào)中模塊放置算法,以及數(shù)據(jù)碼字和糾錯(cuò)碼字的混合算法,分離出數(shù)據(jù)碼字和糾錯(cuò)碼字。
如果步驟1中經(jīng)旋轉(zhuǎn)后達(dá)到二維條碼符號(hào)的標(biāo)準(zhǔn)位置,則數(shù)據(jù)編碼經(jīng)過(guò)糾錯(cuò)計(jì)算,有解,可直接獲得恢復(fù)的編碼數(shù)據(jù)。否則還需進(jìn)行新的譯碼嘗試。
下面介紹步驟6中糾錯(cuò)無(wú)解的處理過(guò)程步驟6.3’兩個(gè)尋像圖形位于對(duì)角線位置,因?yàn)榧m錯(cuò)無(wú)解,所以說(shuō)明步驟1.3.2.1中旋轉(zhuǎn)有誤,此時(shí),將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2,進(jìn)行新的譯碼嘗試。因?yàn)椴襟E1.3.2.1有兩種情況,步驟6.3’將二維條碼符號(hào)再旋轉(zhuǎn)180度后一定是旋轉(zhuǎn)到了二維條碼符號(hào)的標(biāo)準(zhǔn)位置,所以可以進(jìn)行后續(xù)的步驟2。
步驟6.4‘對(duì)應(yīng)步驟1.3.2.2,如果兩個(gè)尋像圖形位于左上角和右上角則按順時(shí)針將二維條碼符號(hào)旋轉(zhuǎn)90度后執(zhí)行步驟2;否則逆時(shí)針將二維條碼符號(hào)旋轉(zhuǎn)90度后執(zhí)行步驟2,進(jìn)行新的譯碼嘗試。因?yàn)椴襟E1.3.2.2有兩種情況,所以步驟6.4’將二維條碼符號(hào)再旋轉(zhuǎn)90度后一定是旋轉(zhuǎn)到了二維條碼符號(hào)的標(biāo)準(zhǔn)位置,可以進(jìn)行后續(xù)的步驟2。
同理步驟6.5’判斷是否存在校正圖形,如果存在校正圖形(對(duì)應(yīng)步驟1.3.3’.2’)則將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2.
步驟6.6‘對(duì)應(yīng)步驟1.3.3,如果尋像圖形位于二維條碼符號(hào)右下角的位置則將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2,否則將二維條碼符號(hào)順時(shí)針旋轉(zhuǎn)90度后執(zhí)行步驟2。由于步驟1.3.3為只存在一個(gè)尋像圖形且沒(méi)有校正圖形的情況,有三種可能的位置關(guān)系,所以最多旋轉(zhuǎn)2次即可旋轉(zhuǎn)到二維條碼符號(hào)的標(biāo)準(zhǔn)位置,經(jīng)過(guò)后續(xù)步驟即可得到糾錯(cuò)有解的數(shù)據(jù)編碼,最終獲得恢復(fù)的編碼數(shù)據(jù)。
本發(fā)明克服了現(xiàn)有技術(shù)識(shí)讀速度慢,在圖形缺失或者畸變時(shí)不易識(shí)讀的缺陷,通過(guò)尋像圖形和校正圖形,可以快速的識(shí)讀二維條碼圖形,在識(shí)讀和定位時(shí),如果找到一個(gè)或以上的尋像圖形即可進(jìn)行識(shí)讀,即使缺失一部分信息也根據(jù)二維條碼符號(hào)中模塊放置方法,以及數(shù)據(jù)碼字和糾錯(cuò)碼字的混合放置,分理出數(shù)據(jù)信息和糾錯(cuò)信息;在解碼時(shí)進(jìn)行數(shù)據(jù)糾錯(cuò),得到解碼后的信息,大大提高了識(shí)讀的速度和抗殘損的能力,并提高解碼的效率。
最后應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案而非對(duì)本發(fā)明作限制性理解。盡管參照上述較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這種修改或者等同替換并不脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
1.一種二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法,其特征在于,包括步驟1在二維條碼符號(hào)中尋找尋像圖形,利用尋找到的尋像圖形將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置;步驟2提取尋像圖形附近功能信息區(qū)域的功能信息,獲得糾錯(cuò)等級(jí)信息和掩模信息;步驟3讀取二維條碼符號(hào)中位于尋像圖形和功能信息區(qū)域之外的模塊數(shù)據(jù)獲得數(shù)據(jù)編碼和糾錯(cuò)編碼信息;步驟4根據(jù)掩模信息對(duì)獲取的數(shù)據(jù)編碼和糾錯(cuò)編碼進(jìn)行去掩模處理;步驟5根據(jù)糾錯(cuò)等級(jí)信息計(jì)算數(shù)據(jù)編碼和糾錯(cuò)編碼的位數(shù);步驟6根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò),得到恢復(fù)的編碼數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述的步驟1還包括尋找校正圖形,所述校正圖形為相鄰的深色和淺色兩條線組成的階梯形的折線。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述的步驟1包括步驟1.1在二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近尋找尋像圖形,如果找到尋像圖形,則執(zhí)行步驟1.2;否則結(jié)束;步驟1.2如果尋像圖形中包括符合標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角尋像圖形特征的尋像圖形,則對(duì)所述二維條碼符號(hào)進(jìn)行旋轉(zhuǎn),使符合標(biāo)準(zhǔn)位置的二維條碼符號(hào)左下角尋像圖形特征的尋像圖形所在的頂點(diǎn)位于二維條碼符號(hào)左下角,執(zhí)行步驟2;否則執(zhí)行步驟1.3;步驟1.3根據(jù)找到的尋像圖形的個(gè)數(shù)和/或所找到的尋像圖形在二維條碼符號(hào)中的位置,對(duì)所述二維條碼符號(hào)進(jìn)行旋轉(zhuǎn),使二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述的步驟1.3包括步驟1.3.1判斷是否在二維條碼符號(hào)四個(gè)頂點(diǎn)位置附近找到三個(gè)尋像圖形,如果是,將二維條碼符號(hào)缺失尋像圖形所在的頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左下角的位置,執(zhí)行步驟2;否則執(zhí)行步驟1.3.2;步驟1.3.2判斷是否找到兩個(gè)尋像圖形,如果是根據(jù)找到的兩個(gè)尋像圖形在二維條碼符號(hào)中的位置,將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置,否則執(zhí)行步驟1.3.3;步驟1.3.3在二維條碼符號(hào)四個(gè)頂點(diǎn)位置附近找到唯一尋像圖形,將找到的尋像圖形所在的頂點(diǎn)旋轉(zhuǎn)到位于二維條碼符號(hào)左上角、右上角或右下角的位置,執(zhí)行步驟2。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述的步驟1.3.2包括步驟1.3.2.1判斷是否找到兩個(gè)尋像圖形,如果否,執(zhí)行步驟1.3.3,否則判斷找到的兩個(gè)尋像圖形所在頂點(diǎn)是否位于二維條碼符號(hào)的對(duì)角線位置,如果是,則將兩個(gè)尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到其中一個(gè)尋像圖形的頂點(diǎn)位于二維條碼符號(hào)左上角的位置,執(zhí)行步驟2;否則執(zhí)行步驟1.3.2.2;步驟1.3.2.2將二維條碼符號(hào)旋轉(zhuǎn)到兩個(gè)尋像圖形所在頂點(diǎn)分別位于二維條碼符號(hào)左上角、右上角的位置,或者將二維條碼符號(hào)轉(zhuǎn)到兩個(gè)尋像圖形所在頂點(diǎn)分別位于二維條碼符號(hào)右上角、右下角的位置,執(zhí)行步驟2。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述的步驟1.3.2.2之前,步驟1.3.2.1之后還包括步驟1.3.2.2’判斷二維條碼符號(hào)中是否存在校正圖形,如果存在校正圖形,判斷尋像圖形附近的功能信息區(qū)域是否與校正圖形的一段折線相連,然后將與校正圖形無(wú)連接關(guān)系的尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到二維條碼符號(hào)右上角的位置,執(zhí)行步驟2;否則執(zhí)行步驟1.3.2.2。
7.根據(jù)權(quán)利要求4、5或6所述的方法,其特征在于,所述的步驟1.3.3之前,步驟1.3.2之后還包括步驟1.3.3’判斷二維條碼符號(hào)中是否存在校正圖形,如果不存在校正圖形,執(zhí)行步驟1.3.3,否則根據(jù)校正圖形將二維條碼旋轉(zhuǎn)到標(biāo)準(zhǔn)位置。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述步驟1.3.3’根據(jù)校正圖形將二維條碼旋轉(zhuǎn)到標(biāo)準(zhǔn)位置包括步驟1.3.3’.1’判斷找到的唯一尋像圖形附近的功能信息區(qū)域與校正圖形是否有連接關(guān)系,如果無(wú)連接關(guān)系,將尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到二維條碼符號(hào)右上角的位置,執(zhí)行步驟2,否則執(zhí)行步驟1.3.3’.2’;步驟1.3.3’.2’將尋像圖形所在頂點(diǎn)旋轉(zhuǎn)到二維條碼符號(hào)右下角或者左上角的位置,執(zhí)行步驟2.
9.根據(jù)權(quán)利要求1、2、4、5、6或8所述的方法,其特征在于,步驟1中尋找尋像圖形包括對(duì)二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近的區(qū)域進(jìn)行線性掃描,尋找深色模塊與淺色模塊符合1∶1∶1∶1∶3或者3∶1∶1∶1∶1的比例模式,找到深色與淺色比例模式符合1∶1∶1∶3或者3∶1∶1∶1∶1的陣列則找到尋像圖形。
10.根據(jù)權(quán)利要求1、2、4、5、6或8所述的方法,其特征在于,步驟1中尋找尋像圖形包括將二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近圖像與事先存儲(chǔ)的尋像圖形模板進(jìn)行匹配,如果二維條碼符號(hào)的四個(gè)頂點(diǎn)位置附近圖像與尋像圖形模板之間的相似度不小于某一設(shè)定的閾值,則找到尋像圖形,執(zhí)行步驟1.2;否則結(jié)束。
11.根據(jù)權(quán)利要求1、2、4、5、6或8所述的方法,其特征在于,步驟2包括步驟2.1根據(jù)找到的尋像圖形確定尋像圖形的寬度;獲得模塊尺寸;步驟2.2根據(jù)模塊尺寸,讀取并合并相鄰兩頂點(diǎn)附近的功能信息區(qū)域,獲得版本、糾錯(cuò)等級(jí)信息和掩模信息。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,步驟2.2包括步驟2.2.1讀取步驟1所找到的任一尋像圖形附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);步驟2.2.2讀取與尋像圖形任意一相鄰頂點(diǎn)附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);步驟2.2.3合并尋像圖形及相鄰頂點(diǎn)附近的兩個(gè)功能信息區(qū)域中的數(shù)據(jù),如果糾錯(cuò)無(wú)解,執(zhí)行步驟2.2.4;否則進(jìn)行功能信息糾錯(cuò)處理,獲得糾錯(cuò)等級(jí)信息和掩模信息,執(zhí)行步驟3;步驟2.2.4讀取尋像圖形另一相鄰頂點(diǎn)附近的功能信息區(qū)域中每一模塊的數(shù)據(jù)和在對(duì)角線尋像圖形附近的功能信息區(qū)域中每一模塊的數(shù)據(jù);步驟2.2.5合并尋像圖形附近的功能信息區(qū)域數(shù)據(jù)和另一相鄰頂點(diǎn)附近的功能信息區(qū)域數(shù)據(jù),或者合并另一相鄰頂點(diǎn)附近的功能信息區(qū)域數(shù)據(jù)和對(duì)角線尋像圖形附近的功能信息區(qū)域數(shù)據(jù);步驟2.2.6判斷糾錯(cuò)是否有解,如果有解則進(jìn)行糾錯(cuò)處理,獲得糾錯(cuò)等級(jí)信息和掩模信息,執(zhí)行步驟3;否則結(jié)束。
13.根據(jù)權(quán)利要求1、2、4、5、6、8或12所述的方法,其特征在于,步驟3包括步驟3.1從二維條碼符號(hào)第一行左側(cè)開(kāi)始至最后一行右側(cè)結(jié)束,依次順序讀取二維條碼符號(hào)中除尋像圖形和功能信息區(qū)域之外的模塊數(shù)據(jù),且在每一行結(jié)尾處折返到下一行繼續(xù)讀??;步驟3.2按步驟3.1所述原理從左至右讀取其余各行數(shù)據(jù),直至最后一行結(jié)尾處。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,步驟3.1包括3.1.1從二維條碼符號(hào)第一行左上角尋像圖形與左上角功能信息區(qū)域之外第一模塊處開(kāi)始讀取模塊數(shù)據(jù);3.1.2從左到右順序讀取模塊數(shù)據(jù),直到二維條碼符號(hào)第一行右上角功能信息區(qū)域前一模塊處。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,步驟3.2包括3.2.1從左上角功能信息區(qū)域與第二行相交點(diǎn)后第一模塊處從左至右讀取模塊數(shù)據(jù)直至右上角功能信息區(qū)域與第二行相交點(diǎn)前一模塊處;3.2.2根據(jù)3.2.1所述原則讀取第3行至第8行模塊數(shù)據(jù);3.2.3從左上角功能信息區(qū)域與第九行相交點(diǎn)中最大橫坐標(biāo)所在點(diǎn)后第一模塊開(kāi)始從左至右讀取模塊數(shù)據(jù)直至右上角功能信息區(qū)域與第九行相交點(diǎn)中最小橫坐標(biāo)所在點(diǎn)前第一模塊處;轉(zhuǎn)入第十行起始坐標(biāo)處;3.2.4從第十行起始坐標(biāo)處左至右讀取模塊數(shù)據(jù),直至二維條碼符號(hào)的右邊線處,轉(zhuǎn)入下一行起始模塊;3.2.5循環(huán)執(zhí)行3.2.4,直至下一行起始坐標(biāo)為左下角功能信息區(qū)域與左邊線相交點(diǎn);3.2.6從左下角功能信息區(qū)域與此行相交點(diǎn)中最大橫坐標(biāo)后一模塊開(kāi)始從左至右順序讀取模塊數(shù)據(jù),直至右下角功能信息區(qū)域與此行相交點(diǎn)中最小橫坐標(biāo)前一模塊處,轉(zhuǎn)入下一行起始模塊;3.2.7從左下角功能信息區(qū)域與此行相交點(diǎn)后一模塊處從左至右讀取模塊數(shù)據(jù),直到右下角功能信息區(qū)域與此行相交點(diǎn)前一模塊,轉(zhuǎn)入下一行;3.2.8循環(huán)3.2.7,直至最后一行。
16.根據(jù)權(quán)利要求13所述的方法,其特征在于,步驟3還包括在順序讀取除尋像圖形和功能信息圖形之外的模塊數(shù)據(jù)時(shí),進(jìn)一步判斷被讀取的是否為校正圖形或輔助校正圖形模塊,是則跳過(guò)。
17.根據(jù)權(quán)利要求14或15所述的方法,其特征在于,步驟3中,在讀取模塊數(shù)據(jù)時(shí),進(jìn)一步判斷被讀取的是否為校正圖形或輔助校正圖形模塊,是則跳過(guò)。
18.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟4包括根據(jù)獲得的掩模信息,對(duì)數(shù)據(jù)編碼和糾錯(cuò)編碼進(jìn)行異或處理,去除掩模,恢復(fù)表示數(shù)據(jù)碼字和糾錯(cuò)碼字的符號(hào)字符。
19.根據(jù)權(quán)利要求1、2、4、5、6、8、12、14、15、16或18所述的方法,其特征在于,步驟5包括根據(jù)獲得的糾錯(cuò)等級(jí),獲得糾錯(cuò)容量,計(jì)算糾錯(cuò)編碼的位數(shù)和數(shù)據(jù)編碼的位數(shù)。
20.根據(jù)權(quán)利要求1、2、4、5、6、12、14、15、16或18所述的方法,其特征在于,步驟6包括步驟6.1根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼糾錯(cuò)計(jì)算,如果有解,則得到恢復(fù)的編碼數(shù)據(jù);否則執(zhí)行步驟6.2;步驟6.2根據(jù)尋像圖形的個(gè)數(shù)和旋轉(zhuǎn)后的尋像圖形在二維條碼符號(hào)中的位置,對(duì)二維條碼符號(hào)順時(shí)針或逆時(shí)針旋轉(zhuǎn)90度的整數(shù)倍,然后執(zhí)行步驟2。
21.根據(jù)權(quán)利要求20所述的方法,其特征在于,步驟6.1采用分塊糾錯(cuò)對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò)計(jì)算。
22.根據(jù)權(quán)利要求8所述的方法,其特征在于,步驟6包括步驟6.1根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼糾錯(cuò)計(jì)算,判斷糾錯(cuò)是否有解,如果有解,則得到恢復(fù)的編碼數(shù)據(jù);否則執(zhí)行步驟6.2;步驟6.2’判斷是否有兩個(gè)尋像圖形,如果是執(zhí)行步驟6.3,否則執(zhí)行步驟6.5;步驟6.3’判斷兩個(gè)尋像圖形是否位于對(duì)角線位置,如果是,則將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2;否則執(zhí)行步驟6.4;步驟6.4‘判斷兩個(gè)尋像圖形是否位于左上角和右上角,是則按順時(shí)針將二維條碼符號(hào)旋轉(zhuǎn)90度后執(zhí)行步驟2;否則逆時(shí)針將二維條碼符號(hào)旋轉(zhuǎn)90度后執(zhí)行步驟2;步驟6.5’判斷是否存在校正圖形,如果存在校正圖形則將二維條碼符號(hào)旋轉(zhuǎn)180度后執(zhí)行步驟2,否則執(zhí)行步驟6.6;步驟6.6判斷尋像圖形是否位于二維條碼符號(hào)右下角的位置,是則將二維條碼符號(hào)旋轉(zhuǎn)180度然后執(zhí)行步驟2,否則將二維條碼符號(hào)順時(shí)針旋轉(zhuǎn)90度然后執(zhí)行步驟2。
全文摘要
本發(fā)明為二維條碼符號(hào)轉(zhuǎn)換為編碼信息的方法,包括步驟1在二維條碼符號(hào)中尋找尋像圖形,利用尋找到的尋像圖形將二維條碼符號(hào)旋轉(zhuǎn)到標(biāo)準(zhǔn)位置;步驟2提取尋像圖形附近功能信息區(qū)域的功能信息,獲得糾錯(cuò)等級(jí)信息和掩模信息;步驟3讀取位于尋像圖形和功能信息區(qū)域之外的模塊數(shù)據(jù)獲得數(shù)據(jù)編碼和糾錯(cuò)編碼信息;步驟4根據(jù)掩模信息對(duì)獲取的數(shù)據(jù)編碼和糾錯(cuò)編碼去除掩模;步驟5根據(jù)糾錯(cuò)等級(jí)計(jì)算數(shù)據(jù)編碼和糾錯(cuò)編碼的位數(shù);步驟6根據(jù)糾錯(cuò)編碼對(duì)數(shù)據(jù)編碼進(jìn)行糾錯(cuò),得到恢復(fù)的編碼數(shù)據(jù)。本發(fā)明克服了現(xiàn)有技術(shù)識(shí)讀速度慢,在圖形缺失或者畸變時(shí)不易識(shí)讀的缺陷,達(dá)到快速識(shí)讀的目的,同時(shí)提高了解碼效率。
文檔編號(hào)G06K9/00GK1959704SQ200610138529
公開(kāi)日2007年5月9日 申請(qǐng)日期2006年11月7日 優(yōu)先權(quán)日2006年11月7日
發(fā)明者張成海, 羅秋科, 王毅, 黃燕濱, 王越, 孫學(xué)全 申請(qǐng)人:中國(guó)物品編碼中心