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