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