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