專利名稱:一種面向短信的字符二維碼編碼方法和解碼方法
技術領域:
本發明屬于二維條形碼技術領域,尤其涉及一種面向短信的字符二維碼編碼方法和解碼方法。
背景技術:
二維條碼發展至今已經得到了很多的應用,特別是與移動終端和無線網絡的結合使二維碼具有了信息時代的特征,給生活帶來了多種應用,能方便地實現移動電子票務。作為一種新型、高效、環保、安全的無紙化電子憑證,移動電子票已經引起了商家和運營商的廣泛興趣,不少景點門票、演唱會門票、電影票、車船票、提貨券等都已經開始采用這種新型的票據,將傳統紙質票據的內容及持有人信息編制成一個二維碼圖形,通過移動無線網絡發送到用戶的手機上。在使用該電子票時,商家只需識別用戶接收到的二維碼圖形。這種無紙化的憑證很好地實現了紙質憑證向電子憑證的轉變、物質流向電子流的轉變,有效地支撐傳統電子商務和移動電子商務的發展。隨著3G時代的到來,二維碼與手機移動端的結合應用是越來越廣泛,對實時性和促進經濟消費方面都有很大的作用。用電子票取代紙質票據,一方面節省了資源,促進環保,另一方面保證了實時性和方便性。對于目前的移動電子票務,主要采用的是圖形二維碼 (如DM碼、QR碼等),通過彩信方式發送到用戶手機端。而彩信通過彩信通道傳達到手機端后,需要手機端適配功能來顯示圖形,這在一定程度上限制了二維碼與移動端的結合應用。中國專利公開號CN 101149813A,
公開日是2008年03月26日,名稱為“一種矩陣式彩色二維條形碼的編解碼方法”的方案中公開了一種矩陣式彩色二維條形碼的編解碼方法。它包括以下步驟(A)編碼器對所描述的信息編碼得到矩陣式黑白二維條碼;(B)所述編碼器依照比特值對應的彩色像素塊,按順序將矩陣式黑白二維條碼中多個黑白像素塊替換成彩色像素塊;(C)所述編碼器將所述彩色像素塊組成的矩陣排列成矩形形狀。不足之處是,這種矩陣式彩色二維條形碼的編解碼方法,編碼后的二維字符所占空間較大,是采用彩信方式處理二維條形碼,不能在一些低配置的終端設備上使用,因此,采用這種矩陣式彩色二維條形碼的編碼方法進行的二位條形碼編碼,限制了二維碼在手機等一些低配置終端設備上的推廣使用。中國專利公開號CN 101639899A,
公開日是2010年02月03日,名稱為“二維碼編碼方法、解碼方法及裝置、終端”的方案中公開了一種二維碼編碼方法、解碼方法及裝置、終端。它包括以下步驟獲得上層應用數據;對所述上層應用數據進行二維碼編碼,生成二維碼,該二維碼包括拼接符區域和信息數據區域。不足之處是,這種二維碼編碼方法、解碼方法及裝置、終端,編碼解碼復雜,編碼和解碼后的二維碼壓縮率不高,占用空間還比較大,在較低配置的終端設備上使用,處理速度慢,不便于二維條形碼的推廣使用,不能夠充分利用3G通信,對二維條形碼在電子商務、科研活動等方面的推廣和利用。
發明內容
本發明是為了解決現有基于圖像的二維條形碼存儲空間占用大、傳輸效率低的不足,提供一種能夠以字符存儲條碼、高效傳輸、編碼解碼算法簡潔高效的面向短信的字符二維碼編碼方法和解碼方法。為了實現上述目的,本發明采用以下技術方案
一種面向短信的字符二維碼編碼方法和解碼方法,所述的字符二維碼為一個矩形狀字符二維矩陣模塊,該矩陣模塊由尋像符號單元、版本號單元、數據規格號單元和數據區符號單元組成;所述的尋像符號單元共有三個,分別位于矩陣模塊的左上角、右上角和右下角, 所述的版本號單元位于矩陣模塊左上角處的尋像符號單元后面,所述的數據規格號單元位于版本號單元后面,所述的數據區符號單元位于規格號單元后面;并且版本號單元、數據規格號單元和數據區符號單元,按行優先,從左到右、從上到下的順序依次存放在矩陣模塊中。所述的字符二維碼的編碼方法包括以下步驟將源數據信息根據編碼規則生成一個長度為k的數據位流;根據長度為k的數據位流來選擇糾錯等級I ;再根據糾錯等級I的算法,把長度為k的數據位流作為輸入,使其在伽羅華域中生成C個糾錯碼字,并把C個糾錯碼字添加到長度為k的數據位流之后,形成總數據位流;將根據上述總數據位流的長度, 生成字符二維碼的版本號,并把該版本號作為輸入,根據里德-所羅門糾錯算法,在伽羅華域中生成d個糾錯碼字,并把這d個糾錯碼字添加到版本號單元中的版本號之后,并與版本號一起轉換為符號字符,共三個;再將根據上述總數據位流的長度,生成字符二維碼的規格號,并把該規格號作為輸入,根據里德-所羅門糾錯算法,在伽羅華域中生成e個糾錯碼字,并把這e個糾錯碼字添加到數據規格號單元中的數據規格號之后,并與數據規格號一起轉換為符號字符,共三個;再根據版本號查表,記錄矩陣模塊總共需要填充的二維碼字符個數;將版本號、規格號、d個糾錯碼字和e個糾錯碼字生成的符號字符,從第一行開始,按行優先,從左到右、從上到下的順序依次存放在矩陣模塊中;將上述總數據位流的每個碼字轉換為八位二進制,生成總二進制位流;將上述總二進制位流每三位一組轉換為選定的八個英文字母中的一個,不足三位的,在低位補零,補足三位后再轉換,按行優先,從左到右、 從上到下的順序依次存放在矩陣模塊中;將上述矩陣模塊需要填充二維碼字符的空缺位置處填入字符V,生成最終的字符矩陣模塊二維碼。所述的字符二維碼的解碼方法包括以下步驟在將字符矩陣模塊進行解碼預處理時,三個尋像符號單元被識別為字母V;首先,除去三個尋像符號單元后,然后再對其它字符矩陣模塊二維碼進行識別,按行優先,從左到右的順序依次存放為一個字符串;然后, 取該字符串的前六位字符,在伽羅華域中進行里德-所羅門糾錯算法的解碼步驟;根據里德-所羅門解碼出的版本號和數據規格號查找相應的表格,得出該版本的符號字符容量、 數據碼字個數和糾錯碼字個數,并去除該字符串中前六位字符;根據版本號的字符容量,除去末尾添加的填充符號,并把剩余字符串轉為二進制位流,每八位為一組,生成碼字,不足八位的,在末尾補零,補足八位后再轉換,生成碼字,如此就得到了總的碼字流;在伽羅華域中用里德-所羅門算法對總的碼字流進行解碼,輸出數據碼字流,將每個數據碼字轉換為八位二進制數,生成二進制位流;然后將該二進制位流通過逆編碼運算,將該二進制位流還原為原數據信息輸出,完成解碼。
作為優選,所述的編碼方法采用基本大寫模式,所述的基本大寫模式編碼字符集為大寫字母A-Z、數字0-9、九個常用符號space、、.、/、%、_、$、*及+ ;所述的基本大寫模式首先把數據信息每兩個字符劃分為一組,并將其轉換為十一位二進制;如果待編碼的數據信息個數不是二的倍數,那么兩位一劃分后的最后一個字符按其對應的值轉換為六位二進制數;接著將二進制數依次連接起來,并在二進制數最前面添加基本大寫模式指示符零零一和字符計數指示符;然后將二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。基本大寫模式以大寫字母字符為主的編碼而設計,該模式對大寫字母與數字和九個常用標點的混合編碼非常有效,不需要進行模式間的切換,能夠大大提高字符二維碼在選用基本大寫模式時的處理速度和準確性,同時可以高效的壓縮編碼,節省空間,便于字符二維碼在較低配置的終端設備上使用。作為優選,所述的編碼方法采用基本小寫模式,所述的基本小寫模式編碼字符集為小寫字母a-z、數字0-9、九個常用符號space、、.、/、%、_、$、*及+。基本小寫模式首先把數據信息每兩個字符劃分為一組,并將其轉換為十一位二進制;如果待編碼的數據信息個數不是二的倍數,那么兩位一劃分后的最后一個字符按其對應的值轉換為六位二進制數;接著將二進制數依次連接起來,并在二進制數最前面添加基本小寫模式指示符零零一和字符計數指示符;然后將二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。基本小寫模式以小寫字母字符為主的編碼而設計,該模式對小寫字母與數字和九個常用標點的混合編碼非常有效,不需要進行模式間的切換,能夠大大提高字符二維碼在選用基本小寫模式時的處理速度和準確性,同時可以高效的壓縮編碼, 節省空間,便于字符二維碼在較低配置的終端設備上使用。作為優選,所述的編碼方法采用數字標點模式,所述的數字標點模式編碼字符集為數字 0-9、三十三個常用符號 space、、 、/、%、_、$、*、+、!、〃、#、&、’、) 、(、,、_、;、〈、=、>、?、@、[、\、]、~、'、{、I、}及' 數字標點模式首先把數據信息每兩個字符劃分為一組,并將其轉換為十一位二進制;如果待編碼的數據信息個數不是二的倍數,那么兩位一劃分后的最后一個字符按其對應的值轉換為六位二進制數; 接著將二進制數依次連接起來;然后將二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。數字標點模式以數字標點字符為主的編碼而設計,該模式對數字和三十三個常用標點的混合編碼非常有效,不需要進行模式間的切換,能夠大大提高字符二維碼在選用數字標點模式時的處理速度和準確性,同時可以高效的壓縮編碼,節省空間,便于字符二維碼在較低配置的終端設備上使用。作為優選,所述的編碼方法采用數字模式,所述的數字模式編碼字符集為數字 0-9,將待編碼的數據信息每三位分為一組,將每組數據轉換為十位二進制數;如果待編碼的數據信息位數不是三的整數倍數,則把余的一位數字轉換為四位二進制數,或把余的二位數字轉換為七位二進制數,然后對所有數據信息編碼,將形成的二進制位連接起來,形成一個二進制位流;再在二進制位流前依次添加數字模式指示符和字符計數指示符;將該二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。數字模式以數字字符為主的編碼而設計,該模式對數字編碼非常有效,能夠大大提高字符二維碼在選用數字模式時的處理速度和準確性,同時可以高效的壓縮編碼,節省空間,便于字符二維碼在較低配置的終端設備上使用。作為優選,所述的編碼方法采用全模式,所述的全模式編碼字符集為大寫字母 A-Z、小寫字母a-z、數字0-9和三十三個常用符號space、、·、/、%、_、$、*、+、!、 "、#、&、’、)、(、,、-、;、〈、=、>、?、O、[、\、]、~、'、{、I、}及 。該模式在運行過程中,可以消除模式間切換的抖動現象,可以更高效的壓縮編碼。全模式的字符集共九十五個字符,每個字符對應一個整數值,每個整數值轉換為七位二進制數,然后對所有數據信息編碼,將形成的二進制位連接起來,形成一個二進制位流;然后將二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。作為優選,所述的編碼方法包括模式選擇,根據數據信息的分段及各分段的模式應用建立表格,計算各段對應模式生成的二進制數的長度。由于數字模式的與基本大寫模式、基本小寫模式和數字標點模式的字符集里數字有交集。如果模式間有數據交集,在劃分出數字模式時,需要判斷數字模式前后是否相同,若相同需加模式指示符三位和加字符計數指示符六位,并在完成表格值的計算后,應用分支限界法對解空間數進行搜索,找出最優的模式組合路徑。本發明能夠達到如下效果
(I)、經過該方法編碼和解碼的字符二維碼,占用存儲空間小,傳輸效率高,能在較低配置的終端設備上使用,擴展了字符二維條形碼在終端設備上的使用范圍,便于二維條形碼的推廣使用。(2)、在伽羅華域中采用里德-所羅門糾錯算法進行編碼和解碼,使得編碼和解碼效率快,準確性高,編碼和解碼都較簡單。(3)、字符二維碼面向手機短信,使一些不支持彩信的移動終端也可以很方面的利用二維條形碼進行電子商務等活動。(4)、充分利用了 3G通信,使二維條形碼在電子商務、科研活動等方面得到推廣和利用。
圖I是本發明的一種矩形狀字符二維矩陣模塊結構示意框圖。圖2是本發明實施例的字符二維碼編碼過程符號化的示意圖。圖3是本發明實施例的字符二維碼的解碼過程符號化示意圖。圖4是本發明實施例的解碼流程圖。圖5是本發明實施例的編碼流程框圖。圖6是本發明實施例的解空間樹圖。
圖中I、尋像符號單元;2、版本號單元;3、數據規格號單元;4、數據區符號單元。
具體實施例方式下面結合附圖和具體實施方式
對本發明做進一步的描述。實施例一種面向短信的字符二維碼編碼方法和解碼方法。如圖I、圖2、圖3、圖 4、圖5或圖6所示,字符二維碼為一個矩形狀字符二維矩陣模塊,該矩陣模塊由尋像符號單元I、版本號單元2、數據規格號單元3和數據區符號單元4組成;尋像符號單元共有三個, 分別位于矩陣模塊的左上角、右上角和右下角,版本號單元位于矩陣模塊左上角處的尋像符號單元后面,數據規格號單元位于版本號單元后面,數據區符號單元位于規格號單元后面;并且版本號單元、數據規格號單元和數據區符號單元,按行優先,從左到右、從上到下的順序依次存放在矩陣模塊中。字符二維碼的編碼方法包括以下步驟將源數據信息根據編碼規則生成一個長度為k的數據位流;根據長度為k的數據位流來選擇糾錯等級I ;再根據糾錯等級I的算法, 把長度為k的數據位流作為輸入,使其在伽羅華域中生成c個糾錯碼字,并把c個糾錯碼字添加到長度為k的數據位流之后,形成總數據位流;將根據上述總數據位流的長度,生成字符二維碼的版本號,并把該版本號作為輸入,根據里德-所羅門糾錯算法,在伽羅華域中生成d個糾錯碼字,并把這d個糾錯碼字添加到版本號單元中的版本號之后,并與版本號一起轉換為符號字符,共三個;再將根據上述總數據位流的長度,生成字符二維碼的規格號,并把該規格號作為輸入,根據里德-所羅門糾錯算法,在伽羅華域中生成e個糾錯碼字,并把這e個糾錯碼字添加到數據規格號單元中的數據規格號之后,并與數據規格號一起轉換為符號字符,共三個;再根據版本號查表,記錄矩陣模塊總共需要填充的二維碼字符個數;將版本號、規格號、d個糾錯碼字和e個糾錯碼字生成的符號字符,從第一行開始,按行優先, 從左到右、從上到下的順序依次存放在矩陣模塊中;將上述總數據位流的每個碼字轉換為八位二進制,生成總二進制位流;將上述總二進制位流每三位一組轉換為選定的八個英文字母中的一個,不足三位的,在低位補零,補足三位后再轉換,按行優先,從左到右、從上到下的順序依次存放在矩陣模塊中;將上述矩陣模塊需要填充二維碼字符的空缺位置處填入字符V,生成最終的字符矩陣模塊二維碼。字符二維碼的解碼方法包括以下步驟在將字符矩陣模塊進行解碼預處理時,三個尋像符號單元被識別為字母V ;首先,除去三個尋像符號單元后,然后再對其它字符矩陣模塊二維碼進行識別,按行優先,從左到右的順序依次存放為一個字符串;然后,取該字符串的前六位字符,在伽羅華域中進行里德-所羅門糾錯算法的解碼步驟;根據里德-所羅門解碼出的版本號和數據規格號查找相應的表格,得出該版本的符號字符容量、數據碼字個數和糾錯碼字個數,并去除該字符串中前六位字符;根據版本號的字符容量,除去末尾添加的填充符號,并把剩余字符串轉為二進制位流,每八位為一組,生成碼字,不足八位的, 在末尾補零,補足八位后再轉換,生成碼字,如此就得到了總的碼字流;在伽羅華域中用里德-所羅門算法對總的碼字流進行解碼,輸出數據碼字流,將每個數據碼字轉換為八位二進制數,生成二進制位流;然后將該二進制位流通過逆編碼運算,將該二進制位流還原為原數據信息輸出,完成解碼。編碼方法采用基本大寫模式、基本小寫模式、數字標點模式、數字模式和全模式5種。編碼方法采用基本大寫模式,所述的基本大寫模式編碼字符集為大寫字母A-Z、數字0-9、九個常用符號space、、.、/、%、_、$、*及+;基本小寫模式編碼字符集為小寫字母a-ζ、數字0-9、九個常用符號space、、·、/、%、_、$、*及+。數字標點模式編碼字符集為數字0-9、三十三個常用符號space、、.、/、%、_ 、$、*、+、!、〃、#、&、’、)、(、,、_、;、〈、=、>、?、@、[、\、]、~、'、{、
、}及 。全模式編碼字符集為大寫字母A-Ζ、小寫字母a-z、數字0_9和三十三個常用符號 space、、·、/、%、_、$、*、+、!、"、#、&、,、)、(、,、-、;、〈、=、>、?、O
、[、\、]、~、'、{、I、}及 。數字模式編碼字符集為數字0-9,基本大寫模式、基本小寫模式、數字標點模式和全模式它們對字符二維碼的處理方式都相同,只是全模式在運行過程中,可以消除模式間切換的抖動現象,可以更高效的壓縮編碼。首先把數據信息每兩個字符劃分為一組,并將其轉換為十一位二進制;如果待編碼的數據信息個數不是二的倍數,那么緊挨著的兩位一劃分成一組,最后一個字符按其對應的值轉換為六位二進制數;接著將二進制數依次連接起來,并在二進制數最前面添加相應模式的指示符;然后將二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字, 不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。數字模式,是首先將待編碼的數據信息每三位分為一組,再將每組數據轉換為十位二進制數;如果待編碼的數據信息位數不是三的整數倍數,則把多余的一位數字轉換為四位二進制數,或把多余的二位數字轉換為七位二進制數,然后對所有數據信息編碼,將形成的二進制位連接起來,形成一個二進制位流;再在二進制位流前依次添加數字模式指示符和字符計數指示符;將該二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字, 最終得到數據碼字流。數字模式以數字字符為主的編碼而設計,該模式對數字編碼非常有效,能夠大大提高字符二維碼在選用數字模式時的處理速度和準確性,同時可以高效的壓縮編碼,節省空間,便于字符二維碼在較低配置的終端設備上使用。編碼方法采用模式選擇,根據數據信息的分段及各分段的模式應用建立表格,計算各段對應模式生成的二進制數的長度。由于數字模式的與基本大寫模式、基本小寫模式和數字標點模式的字符集里數字有交集。如果模式間有數據交集,在劃分出數字模式時,需要判斷數字模式前后是否相同,若相同需加模式指示符三位和加字符計數指示符六位,并在完成表格值的計算后,應用分支限界法對解空間數進行搜索,找出最優的模式組合路徑。符號結構中除去定位符后的小方框表示一個符號字符,是一個全角的英文字母, 其種類有八種。版本號、數據規格號及糾錯字符是由版本號、數據規格號轉換的字符和版本號、數據規格號在伽羅華域域中用里德-所羅門糾錯算法生成的四個糾錯碼字轉換的四個字符,以保證版本號和數據規格號在識別出錯時能糾正錯誤,所以版本號、數據規格號及糾錯碼字共六個字符。以按行優先的順序,依次置于字符符號矩陣除去定位符的前六位。數據區的字符包含數據碼字轉換的字符、數據碼字生成的糾錯碼字轉換的字符。而數據區的大小由版本號和數據規格號共同決定,當數據區有剩余位置未填充時,則添加填充符V。本實施例的尋像符號單元為一個實心倒三角,在快速識別中能起到定位的作用, 同時由于位置的安排,左上角和右上角的尋像符號可以確定字符二維碼的列寬,右上角和右下角的符號可以確定行寬。由于不同長度的數據信息經編碼后生成的數據碼字個數不同,并且不同糾錯等級生成的糾錯碼字數也不同,這些導致必須有不同大小的字符二維碼與之對應,在這里把不同大小的字符二維碼稱為不同版本的字符二維碼。另外,相同版本的字符碼容納的數據碼字數和糾錯碼字數也不同,所以在生成字符碼的過程中應把數據碼字數和糾錯碼字數記錄在字符碼中以便識別。在字符碼中設計了數據規格號,其指代了數據碼字數和糾錯碼字數的組合情況,在符號版本已知的情況下,數據規格號就唯一指示數據碼字數和糾錯碼字數。符號版本及糾錯設計
版本規格的設計與里德-所羅門糾錯碼和手機屏幕大小相關。已知里德-所羅門糾錯碼的糾錯性能是兩個碼字能糾正一個替代錯誤,所以糾錯碼字應該為偶數。在本發明中符號字符的設計為八個,每個字符對應三位二進制數。比如,設總碼字數(數據碼字數+糾錯碼字數)為N,則從碼字到符號字符轉換的過程中的個數如下表I和表2 :
表權利要求
1.一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的字符二維碼為一個矩形狀字符二維矩陣模塊,該矩陣模塊由尋像符號單元、版本號單元、數據規格號單元和數據區符號單元組成;所述的尋像符號單元共有三個,分別位于矩陣模塊的左上角、右上角和右下角,所述的版本號單元位于矩陣模塊左上角處的尋像符號單元后面,所述的數據規格號單元位于版本號單元后面,所述的數據區符號單元位于規格號單元后面;并且版本號單元、數據規格號單元和數據區符號單元,按行優先,從左到右、從上到下的順序依次存放在矩陣模塊中;所述的字符二維碼的編碼方法包括以下步驟將源數據信息根據編碼規則生成一個長度為k的數據位流;根據長度為k的數據位流來選擇糾錯等級I ;再根據糾錯等級I的算法, 把長度為k的數據位流作為輸入,使其在伽羅華域中生成c個糾錯碼字,并把c個糾錯碼字添加到長度為k的數據位流之后,形成總數據位流;將根據上述總數據位流的長度,生成字符二維碼的版本號,并把該版本號作為輸入,根據里德-所羅門糾錯算法,在伽羅華域中生成d個糾錯碼字,并把這d個糾錯碼字添加到版本號單元中的版本號之后,并與版本號一起轉換為符號字符,共三個;再將根據上述總數據位流的長度,生成字符二維碼的規格號,并把該規格號作為輸入,根據里德-所羅門糾錯算法,在伽羅華域中生成e個糾錯碼字,并把這e個糾錯碼字添加到數據規格號單元中的數據規格號之后,并與數據規格號一起轉換為符號字符,共三個;再根據版本號查表,記錄矩陣模塊總共需要填充的二維碼字符個數;將版本號、規格號、d個糾錯碼字和e個糾錯碼字生成的符號字符,從第一行開始,按行優先, 從左到右、從上到下的順序依次存放在矩陣模塊中;將上述總數據位流的每個碼字轉換為八位二進制,生成總二進制位流;將上述總二進制位流每三位一組轉換為選定的八個英文字母中的一個,不足三位的,在低位補零,補足三位后再轉換,按行優先,從左到右、從上到下的順序依次存放在矩陣模塊中;將上述矩陣模塊需要填充二維碼字符的空缺位置處填入字符V,生成最終的字符矩陣模塊二維碼;所述的字符二維碼的解碼方法包括以下步驟在將字符矩陣模塊進行解碼預處理時, 三個尋像符號單元被識別為字母V ;首先,除去三個尋像符號單元后,然后再對其它字符矩陣模塊二維碼進行識別,按行優先,從左到右的順序依次存放為一個字符串;然后,取該字符串的前六位字符,在伽羅華域中進行里德-所羅門糾錯算法的解碼步驟;根據里德-所羅門解碼出的版本號和數據規格號查找相應的表格,得出該版本的符號字符容量、數據碼字個數和糾錯碼字個數,并去除該字符串中前六位字符;根據版本號的字符容量,除去末尾添加的填充符號,并把剩余字符串轉為二進制位流,每八位為一組,生成碼字,不足八位的, 在末尾補零,補足八位后再轉換,生成碼字,如此就得到了總的碼字流;在伽羅華域中用里德-所羅門算法對總的碼字流進行解碼,輸出數據碼字流,將每個數據碼字轉換為八位二進制數,生成二進制位流;然后將該二進制位流通過逆編碼運算,將該二進制位流還原為原數據信息輸出,完成解碼。
2.根據權利要求I所述的一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的編碼方法采用基本大寫模式,所述的基本大寫模式編碼字符集為大寫字母A-Z、 數字0-9、九個常用符號space、、.、/、%、_、$、*及+;所述的基本大寫模式首先把數據信息每兩個字符劃分為一組,并將其轉換為十一位二進制;如果待編碼的數據信息個數不是二的倍數,那么兩位一劃分后的最后一個字符按其對應的值轉換為六位二進制數;接著將二進制數依次連接起來,并在二進制數最前面添加基本大寫模式指示符零零一和字符計數指示符;然后將二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。
3.根據權利要求I所述的一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的編碼方法采用基本小寫模式,所述的基本小寫模式編碼字符集為小寫字母a-z、 數字0-9、九個常用符號space、、·、/、%、_、$、*及+。
4.根據權利要求I所述的一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的編碼方法采用數字標點模式,所述的數字標點模式編碼字符集為數字0-9、 三十三個常用符號 space、、·、/、%、_、$、*、+、!、"、#、&、’、)、(、,、_ 、;、〈、=、>、?、@、[、\、]、'、'、{、|、}及 。
5.根據權利要求I所述的一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的編碼方法采用數字模式,所述的數字模式編碼字符集為數字0-9,將待編碼的數據信息每三位分為一組,將每組數據轉換為十位二進制數;如果待編碼的數據信息位數不是三的整數倍數,則把余的一位數字轉換為四位二進制數,或把余的二位數字轉換為七位二進制數,然后對所有數據信息編碼,將形成的二進制位連接起來,形成一個二進制位流; 再在二進制位流前依次添加數字模式指示符和字符計數指示符;將該二進制位流每八位劃分成一組,每組再生成一個字節的數據碼字,不足八位的在末尾填充字符零,使其為八位二進制數,再轉換為一個字節的數據碼字,最終得到數據碼字流。
6.根據權利要求I所述的一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的編碼方法采用全模式,所述的全模式編碼字符集為大寫字母A-Z、小寫字母a-z、 數字 0-9 和三十三個常用符號 space、、·、/、%、_、$、*、+、!、〃、#、&、’、)、 (、,、-、;、<、=、>、? > @、[、\、]、~、'、{、I、}及 。
7.根據權利要求I或2或3或4或5或6所述的一種面向短信的字符二維碼編碼方法和解碼方法,其特征在于,所述的編碼方法采用模式選擇,如果模式間有數據交集,在劃分出數字模式時,需要判斷數字模式前后是否相同,若相同需加模式指示符三位和加字符計數指示符六位,并在完成表格值的計算后,應用分支限界法對解空間數進行搜索,找出最優的模式組合路徑。
全文摘要
本發明涉及一種面向短信的字符二維碼編碼方法和解碼方法,是解決現有基于圖像的二維條形碼存儲空間占用大、傳輸效率低的不足,能夠以字符存儲條碼、高效傳輸、編碼解碼算法簡潔高效。字符二維碼為一個矩形狀字符二維矩陣模塊,該矩陣模塊由尋像符號單元、版本號單元、數據規格號單元和數據區符號單元組成;尋像符號單元共有三個,分別位于矩陣模塊的左上角、右上角和右下角,版本號單元位于矩陣模塊左上角處的尋像符號單元后面,數據規格號單元位于版本號單元后面,數據區符號單元位于規格號單元后面。本發明使字符二維條形碼在電子商務廣泛應用。
文檔編號G06K19/06GK102592160SQ20121001420
公開日2012年7月18日 申請日期2012年1月17日 優先權日2012年1月17日
發明者馮曉斐, 劉志, 徐彩虹 申請人:浙江工商大學