一種二維碼的編碼和解碼方法及其印刷物的制作方法
【專利摘要】本發明公開了一種二維碼的編碼和解碼方法及其印刷物,編碼方法包括:確定輸入數據的編碼模式;將輸入數據轉換為數據碼字流;確定糾錯等級、行數M和列數N;生成糾錯碼字并添加到數據碼字流之后;生成二維碼的水平和豎直分割線,通過水平和豎直分割線將二維碼外邊框圍成的區域分割為編碼區塊;將添加了糾錯碼字的數據碼字添加到各編碼區塊中。解碼方法包括:掃描二維碼并生成二值圖像;生成邊界圖像;生成邊框圖像;分別編碼區塊的頂點坐標;獲得數據碼字流;糾錯解碼數據碼字流;還原數據。印刷物上印刷有所述二維碼。在實現高編碼密度的同時,還可以通過調整二維碼的行數和列數來調整二維碼的長寬比,從而適應不同的實際應用的需求。
【專利說明】-種二維碼的編碼和解碼方法及其印刷物
【技術領域】
[0001] 本發明涉及二維碼技術,更具體地說,涉及一種二維碼的編碼和解碼方法及其印 刷物。
【背景技術】
[0002] -維碼是一種廉價、簡單、準確的數字信息傳遞方式,其通過在水平方向排列的條 和空來表達信息,在堅直方向不表達信息,其容量十分有限。相比之下,二維碼在堅直方向 也能表達信息,容量大大增加,并且通過應用糾錯算法,二維碼的可靠性也大大增強。
[0003] 常規的二維碼主要有PDF417、QR、DataStrip和Data matrix等,他們可以分為兩 類:層排式二維碼和矩陣式二維碼。其中,層排式二維碼可以看作是由多行一維碼堆積而 成,常見的層排式二維碼主要有美國的TOF417碼。TOF417碼為長方形,其缺點在于其采用 了一個基于929個碼字(4個黑白間隔)的編碼方式,每個條碼字符只能代表9. 2位數據,這 大大降低了單個TOF417碼的數據量。
[0004] 矩陣式二維條碼是在一個矩形空間通過黑、白像素在矩陣中的不同分布進行編 碼,其通過在矩陣相應元素位置上用點(方點、圓點或其他形狀)的出現表示二進制"1",點 的不出現表示二進制的"〇",點的排列組合確定了矩陣式二維條碼所代表的意義。常見的矩 陣式二維碼主要有日本的QR碼、中國的網格矩陣碼(GM碼)和緊密矩陣碼(CM碼),QR碼和 GM碼為正方形,CM碼為長方形。與層排式二維碼相比,矩陣式二維碼在同等面積下可編碼 更多數據,即具有更高的編碼密度。
[0005] 在二維碼的實際應用中,預留用于印制二維碼的區域可能是長方形,例如支票右 下角區域,若采用層排式二維碼則無法獲得高編碼密度,若采用正方形的矩陣式二維碼,將 大大浪費編碼面積,從而導致編碼容量下降。雖然CM碼也是長方形的,但它在高度方向上 沒有定位功能,在實際應用中,由于打印或掃描二維碼區域時難以保證100%均勻性,當CM 碼過高時,識讀將會非常困難,甚至完全無法識讀。
【發明內容】
[0006] 本發明針對現有的二維碼由于其長寬比不可調而無法滿足實際應用需求的缺陷, 提供一種二維碼的編碼和解碼方法及其印刷物,生成的二維碼具有高編碼密度,并且可以 調整二維碼的長寬比。
[0007] 本發明解決其技術問題采用的技術方案是:提供一種二維碼的編碼方法,包括以 下步驟:
[0008] S1、分析輸入數據的類型,確定各類型的輸入數據的編碼模式;
[0009] S2、將輸入數據按照確定的編碼模式對應的編碼規則轉換為位流,并將編碼產生 的位流轉換為數據碼字流;
[0010] S3、確定二維碼的糾錯等級、行數Μ和列數N,所述糾錯等級為糾錯碼字占總碼字 的比例,Μ和Ν均為正整數;
[0011] S4、生成糾錯碼字,并將生成的糾錯碼字添加到數據碼字流之后;
[0012] S5、根據二維碼的行數Μ和列數N分別生成二維碼的水平分割線和堅直分割線,通 過水平分割線和堅直分割線將二維碼的外邊框圍成的區域分割為Μ行、Ν列的編碼區塊,每 個編碼區塊包括多個單元模塊,將格式信息編碼于編碼區塊的部分單元模塊中,所述格式 信息包括糾錯等級以及該編碼區塊在二維碼網格圖形中的位置信息;
[0013] S6、將添加了糾錯碼字的數據碼字流中的碼字按順序分別添加到各編碼區塊的剩 余單元模塊中。
[0014] 優選地,步驟S2包括以下子步驟:
[0015] S21、將輸入數據按照類型分段;
[0016] S22、分別將各段輸入數據按照該類型的編碼模式對應的編碼規則轉換為位流,每 段位流包括編碼模式指示符、數據長度指示符和數據位流;
[0017] S23、將編碼產生的位流轉換為數據碼字流。
[0018] 優選地,輸入數據的類型包括數字字符、字母字符、漢字字符和任意二進制數據; 編碼模式包括數字模式、數字字母混合模式、小寫字母模式、大寫字母模式、漢字模式和字 節模式。
[0019] 優選地,步驟S4包括以下子步驟:
[0020] S41、若糾錯碼字的個數與數據碼字流中的碼字的個數之和大于255,則將數據碼 字分割成多個糾錯塊,并確定每個糾錯塊添加糾錯碼字的數量;
[0021] S42、生成糾錯碼字,并按照各糾錯塊添加糾錯碼字的數量將生成的糾錯碼字分別 添加到對應的糾錯塊的數據碼字之后。
[0022] 優選地,步驟S6包括以下子步驟:
[0023] S61、從第一糾錯塊至最后一個糾錯塊中按照碼字的排列順序將排列序號相同的 碼字逐批提取出來形成新的碼字流;
[0024] S62、將新的碼字流中的碼字按順序分別添加到各編碼區塊的剩余單元模塊中。
[0025] 優選地,位于所述編碼區塊四個頂角的單元模塊用于編碼格式信息。
[0026] 提供一種二維碼的解碼方法,用于上述任一項所述的編碼方法生成的二維碼進行 解碼,所述解碼方法包括以下步驟:
[0027] S1、掃描二維碼,以獲取二維碼的灰度圖像,并將所述灰度圖像轉化為二值圖像;
[0028] S2、根據所述二值圖像生成邊界圖像,所述邊界圖像由所述二值圖像中自身為黑 色、并且周圍四個像素點至少有一個為白色的像素點組成;
[0029] S3、根據所述邊界圖像生成邊框圖像,所述邊框圖像由二維碼的外邊框、水平分割 線和堅直分割線組成;
[0030] S4、分別計算由水平分割線和堅直分割線將二維碼外邊框圍成的區域分割成的多 個編碼區塊的頂點坐標;
[0031] S5、根據各編碼區塊的頂點坐標計算各編碼區塊中每個單元模塊的坐標,并讀取 所述二值圖像中對應坐標下像素點的顏色,根據黑色像素點對應二進制1,白色像素點對應 二進制0的規則獲得數據碼字流;
[0032] S6、對獲得的數據碼字流進行糾錯解碼;
[0033] S7、將糾錯后的數據碼字流中的碼字組裝成二進制位流,根據編碼規則將所述二 進制位流還原為原始數據。
[0034] 優選地,步驟S3包括以下子步驟:
[0035] S31、去除所述邊界圖像中的曲線,留下直線,從而生成所述邊框圖像。
[0036] 優選地,步驟S5中,通過插值計算法,根據各編碼區塊的頂點坐標計算各編碼區 塊中每個單元模塊的坐標。
[0037] 提供一種二維碼的印刷物,所述印刷物上印刷的二維碼由上述任一項所述的編碼 方法生成。
[0038] 本發明的二維碼的編碼和解碼方法及其印刷物具有以下有益效果:在實現高編碼 密度的同時,還可以通過調整二維碼的行數和列數來調整二維碼的長寬比,從而適應不同 的實際應用的需求。
【專利附圖】
【附圖說明】
[0039] 圖1為本發明的二維碼的編碼方法第一實施例的流程圖;
[0040] 圖2為本發明的二維碼的框架結構示意圖;
[0041] 圖3為糾錯碼生成電路的電路圖;
[0042] 圖4為各編碼區塊添加碼字的順序示意圖;
[0043] 圖5為編碼區塊中碼字的添加順序示意圖;
[0044] 圖6為本發明的二維碼的解碼方法第一實施例的流程圖;
[0045] 圖7為本發明的二維碼的灰度圖;
[0046] 圖8為本發明的二維碼的二值化圖像;
[0047] 圖9為本發明的二維碼的邊界圖像;
[0048] 圖10為本發明的二維碼的邊框圖。
【具體實施方式】
[0049] 以下結合附圖和實施例對本發明做進一步的解釋說明。
[0050] 圖1為本發明的二維碼的編碼方法第一實施例的流程圖,參見圖1和圖2,在本實 施例中,二維碼的編碼方法包括以下步驟:
[0051] S1、分析輸入數據的類型,確定輸入數據的編碼模式;
[0052] S2、將輸入數據按照確定的編碼模式對應的編碼規則轉換為位流,并將編碼產生 的位流轉換為數據碼字流;
[0053] S3、確定二維碼的糾錯等級、行數Μ和列數N,所述糾錯等級為糾錯碼字占總碼字 的比例,Μ和Ν均為正整數;
[0054] S4、生成糾錯碼字,并將生成的糾錯碼字添加到數據碼字流之后;
[0055] S5、根據二維碼的行數Μ和列數Ν分別生成二維碼的水平分割線210和堅直分割 線220,通過水平分割線210和堅直分割線220將二維碼的外邊框230分割為Μ行、Ν列的 編碼區塊240,每個編碼區塊240包括多個單元模塊,將格式信息編碼于編碼區塊240的部 分單元模塊中,所述格式信息包括糾錯等級以及該編碼區塊在二維碼網格圖形中的位置信 息;
[0056] S6、將添加了糾錯碼字的數據碼字流中的碼字按順序分別添加到各編碼區塊的剩 余單元模塊中。
[0057] 在本實施例中,輸入數據的類型包括數字字符、字母字符、漢字字符和任意二進制 數據,編碼模式包括數字模式、數字字母混合模式、小寫字母模式、大寫字母模式、漢字模式 和字節模式。在步驟S1中,對輸入數據進行分析,確定輸入數據的類型,并確定各類輸入數 據的編碼模式。例如,輸入數據為"123",其類型為數字字符,數字字符采用數字模式進行編 碼。例如,輸入數據為"密碼123",其類型包括漢字字符和數字字符,漢字字符采用漢字模 式編碼,數字字符采用數字模式編碼。例如,輸入數據為" 123A",其類型包括數字字符和字 母字符,可以選擇數字字符用數字模式編碼,字母字符具體為大寫字母字符則采用大寫字 母模式編碼,另外,也可以將" 123A"的類型看作是數字字母混合的類型,整體采用數字字母 混合模式編碼。當出現根據輸入數據的類型確定的編碼模式不唯一時,分別計算采用各編 碼模式編碼該(段)輸入數據所獲得的位流的位數,選擇產生位流的位數少的編碼模式。即 混合模式編碼時,模式切換需要一定開銷,不同的混合情況容量不同,選擇開銷少的編碼模 式。另外,編碼時應盡量將相同類型字段放在一起編碼,可減少開銷。混合數據可全部按字 節模式編碼,即混合數據可以按字節模式計算容量。
[0058] 本實施例的步驟S2包括以下子步驟:S21、將輸入數據按照類型分段;S22、分別將 各段輸入數據按照該類型的編碼模式對應的編碼規則轉換為位流,每段位流包括編碼模式 指示符、數據長度指示符和數據位流;S23、將編碼產生的位流按照每X位對應一個碼字的 方式轉換為數據碼字流,X為正整數,當最后就一個碼字不足X位時用0填充,例如可以取X 為7、8、9等,由于二進制第一碼字對應有8位,因此優選X為8。
[0059] 其中,編碼模式與模式指示符的對應關系如表1所示,該對應關系僅用于示例,不 用于限制本發明。
[0060] 表1模式指示符
[0061]
【權利要求】
1. 一種二維碼的編碼方法,其特征在于,包括以下步驟: 51、 分析輸入數據的類型,確定各類型的輸入數據的編碼模式; 52、 將輸入數據按照確定的編碼模式對應的編碼規則轉換為位流,并將編碼產生的位 流轉換為數據碼字流; 53、 確定二維碼的糾錯等級、行數Μ和列數N,所述糾錯等級為糾錯碼字占總碼字的比 例,Μ和Ν均為正整數; 54、 生成糾錯碼字,并將生成的糾錯碼字添加到數據碼字流之后; 55、 根據二維碼的行數Μ和列數Ν分別生成二維碼的水平分割線和堅直分割線,通過水 平分割線和堅直分割線將二維碼的外邊框圍成的區域分割為Μ行、Ν列的編碼區塊,每個編 碼區塊包括多個單元模塊,將格式信息編碼于編碼區塊的部分單元模塊中,所述格式信息 包括糾錯等級以及該編碼區塊在二維碼網格圖形中的位置信息; 56、 將添加了糾錯碼字的數據碼字流中的碼字按順序分別添加到各編碼區塊的剩余單 元模塊中。
2. 根據權利要求1所述的二維碼的編碼方法,其特征在于,步驟S2包括以下子步驟: 521、 將輸入數據按照類型分段; 522、 分別將各段輸入數據按照該類型的編碼模式對應的編碼規則轉換為位流,每段位 流包括編碼模式指示符、數據長度指示符和數據位流; 523、 將編碼產生的位流轉換為數據碼字流。
3. 根據權利要求1所述的二維碼的編碼方法,其特征在于,輸入數據的類型包括數字 字符、字母字符、漢字字符和任意二進制數據;編碼模式包括數字模式、數字字母混合模式、 小寫字母模式、大寫字母模式、漢字模式和字節模式。
4. 根據權利要求1所述的二維碼的編碼方法,其特征在于,步驟S4包括以下子步驟: 541、 若糾錯碼字的個數與數據碼字流中的碼字的個數之和大于255,則將數據碼字分 割成多個糾錯塊,并確定每個糾錯塊添加糾錯碼字的數量; 542、 生成糾錯碼字,并按照各糾錯塊添加糾錯碼字的數量將生成的糾錯碼字分別添加 到對應的糾錯塊的數據碼字之后。
5. 根據權利要求4所述的二維碼的編碼方法,其特征在于,步驟S6包括以下子步驟: 561、 從第一糾錯塊至最后一個糾錯塊中按照碼字的排列順序將排列序號相同的碼字 逐批提取出來形成新的碼字流; 562、 將新的碼字流中的碼字按順序分別添加到各編碼區塊的剩余單元模塊中。
6. 根據權利要求1所述的二維碼的編碼方法,其特征在于,位于所述編碼區塊四個頂 角的單元模塊用于編碼格式信息。
7. -種二維碼的解碼方法,其特征在于,用于對權利要求1-6中任一項所述的編碼方 法生成的二維碼進行解碼,所述解碼方法包括以下步驟: 51、 掃描二維碼,以獲取二維碼的灰度圖像,并將所述灰度圖像轉化為二值圖像; 52、 根據所述二值圖像生成邊界圖像,所述邊界圖像由所述二值圖像中自身為黑色、并 且周圍四個像素點至少有一個為白色的像素點組成; 53、 根據所述邊界圖像生成邊框圖像,所述邊框圖像由二維碼的外邊框、水平分割線和 堅直分割線組成; 54、 分別計算由水平分割線和堅直分割線將二維碼外邊框圍成的區域分割成的多個編 碼區塊的頂點坐標; 55、 根據各編碼區塊的頂點坐標計算各編碼區塊中每個單元模塊的坐標,并讀取所述 二值圖像中對應坐標下像素點的顏色,根據黑色像素點對應二進制1,白色像素點對應二進 制〇的規則獲得數據碼字流; 56、 對獲得的數據碼字流進行糾錯解碼; 57、 將糾錯后的數據碼字流中的碼字組裝成二進制位流,根據編碼規則將所述二進制 位流還原為原始數據。
8. 根據權利要求7所述的二維碼的解碼方法,其特征在于,步驟S3包括以下子步驟: S31、去除所述邊界圖像中的曲線,留下直線,從而生成所述邊框圖像。
9. 根據權利要求7所述的二維碼的解碼方法,其特征在于,步驟S5中,通過插值計算 法,根據各編碼區塊的頂點坐標計算各編碼區塊中每個單元模塊的坐標。
10. -種二維碼的印刷物,其特征在于,所述印刷物上印刷的二維碼由權利要求1-6中 任一項所述的編碼方法生成。
【文檔編號】G06K19/06GK104143109SQ201410042801
【公開日】2014年11月12日 申請日期:2014年1月28日 優先權日:2014年1月28日
【發明者】趙明剛 申請人:深圳市雁聯計算系統有限公司