專利名稱:空頻域二維碼的構(gòu)建和解碼方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息存儲(chǔ)、傳輸和識(shí)別技術(shù)領(lǐng)域,涉及二維碼的編碼和解碼方法,為一種二維碼的構(gòu)建和解碼方法。
背景技術(shù):
近年來(lái)二維條形碼在表單、安全保密、追蹤、證照、存貨盤點(diǎn)、資料備援等領(lǐng)域得到的充分的應(yīng)用。已有的如圖1所示的二維條碼/ 二維碼O-dimensional bar code),用按一定規(guī)律在二維平面上分布的黑白相間的某種特定的幾何圖形來(lái)表示構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特的概念。使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示英文、中文、數(shù)字、 圖形等信息??梢酝ㄟ^(guò)圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。存儲(chǔ)數(shù)據(jù)量大,可以直接掃描讀取內(nèi)容,可以通過(guò)加密來(lái)提高保密性。二維碼具有條碼技術(shù)的一些共性每種碼制有其特定的字符集;每個(gè)字符占有一定的寬度;具有一定的校驗(yàn)功能等。同時(shí)還具有對(duì)不同行的信息自動(dòng)識(shí)別功能、及處理圖形旋轉(zhuǎn)變化等特點(diǎn)。在許多種類的二維條碼中,常用的碼制有Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49,Code 16K 等。其中 QR 碼是 1994 年由日本Denso-Wave公司發(fā)明,是目前日本最流行的二維空間條碼。但是,目前所有的二維碼都是在空域來(lái)表示圖形。容易受到圖像采集設(shè)備信道的影響,容易受到畸變和光污染的影響。數(shù)據(jù)的存儲(chǔ)有很多的冗余,比如說(shuō)要用好幾個(gè)像素來(lái)表示一個(gè)比特信息。
發(fā)明內(nèi)容
本發(fā)明要解決的問(wèn)題是目前的二維碼在解碼時(shí)易受圖像采集設(shè)備信道的影響, 易收到畸變和光污染的影響,數(shù)據(jù)存在冗余,需要提高二維碼對(duì)畸變、信道、光污染的抵抗能力,降低冗余,提高每個(gè)像素所帶的信息比特?cái)?shù)目。本發(fā)明的技術(shù)方案為一種基于空頻域的二維碼編碼和解碼方法,包括以下步驟1)將待轉(zhuǎn)換為二維碼的數(shù)據(jù)按照ASCII或者Unicode編碼成0和1組成的比特流;2)使用擾碼,把步驟1)得到的比特流順序打亂,使得0和1均勻分布;3)對(duì)順序打亂后的比特流進(jìn)行級(jí)聯(lián)碼編碼,級(jí)聯(lián)碼包括RS碼和卷積碼;4)采用交織技術(shù)對(duì)步驟幻得到的編碼進(jìn)行交織;5)將經(jīng)過(guò)編碼和交織的比特流按照一個(gè)二維碼符號(hào)所能容納的比特?cái)?shù)進(jìn)行分組, 不足處填充0作為一組,每個(gè)二維碼符號(hào)定義為一幀,在每組比特前和后分別加上幀頭和幀尾對(duì)應(yīng)一個(gè)二維碼符號(hào),所加的幀頭包含接收端正確恢復(fù)所發(fā)送數(shù)據(jù)所必需的信息,包括幀總數(shù)、本幀的幀號(hào)、擾碼的種類、RS碼和卷積碼的種類,幀尾包含一個(gè)特定長(zhǎng)度的比特序列,用于標(biāo)志幀的結(jié)束,所述特定長(zhǎng)度的比特序列為不屬于數(shù)據(jù)部分的序列;6)將步驟5)得到的各組比特流經(jīng)星座圖映射,變換成相應(yīng)的復(fù)數(shù)矩陣,對(duì)所述復(fù)數(shù)矩陣根據(jù)信道情況選擇插入導(dǎo)頻,或者對(duì)復(fù)數(shù)矩陣進(jìn)行差分編碼;如選擇插入導(dǎo)頻,每隔多行/列插入一行/列導(dǎo)頻以滿足通信的質(zhì)量要求,當(dāng)通信的質(zhì)量得不到滿足的時(shí)候,每隔一行/列插入一行/列導(dǎo)頻,在接收端重采樣后首先估計(jì)出這些行/列所在處的信道,然后在估計(jì)數(shù)據(jù)時(shí)用這些估計(jì)出來(lái)的信道做信道均衡;如進(jìn)行差分編碼,用相鄰兩行/列復(fù)數(shù)間的相位差代表數(shù)據(jù);7)根據(jù)矩陣的共軛對(duì)稱性將插入導(dǎo)頻或差分編碼后的復(fù)數(shù)矩陣的補(bǔ)充為N*N的符號(hào)矩陣,用二維傅立葉反變換對(duì)具有共軛對(duì)稱性的所述符號(hào)矩陣進(jìn)行變換,變換成實(shí)數(shù)矩陣,即空域矩陣;8)將空域矩陣進(jìn)行非線性映射和量化;9)對(duì)步驟8)中得到的矩陣添加循環(huán)前綴和定位信息,得到發(fā)送矩陣,去控制空頻域二維碼中處于不同位置處像素的顏色和亮度,當(dāng)空域矩陣是實(shí)數(shù)的時(shí)候,控制不同位置處像素黑色的亮度;10)在接收時(shí)使用相反的過(guò)程就可以得到編碼前的數(shù)據(jù)將獲得的圖像,根據(jù)定位算法找到數(shù)據(jù)所在位置,然后對(duì)其進(jìn)行重采樣,得到發(fā)送矩陣的估計(jì),用發(fā)送矩陣的估計(jì)經(jīng)過(guò)和發(fā)送相反的過(guò)程,得到發(fā)送數(shù)據(jù)的估計(jì),實(shí)現(xiàn)解碼?;蛘撸诓襟E7)中,直接將插入導(dǎo)頻或差分編碼后的復(fù)數(shù)矩陣進(jìn)行二維傅立葉反變換,得到一個(gè)復(fù)數(shù),做為空域矩陣,將其實(shí)部矩陣和虛部矩陣分別經(jīng)過(guò)步驟8)和9)放在兩個(gè)不同顏色的信道里表達(dá)發(fā)送,即當(dāng)沒(méi)有使用共軛對(duì)稱性,空域矩陣是復(fù)數(shù)的時(shí)候,用其實(shí)部和虛部分別控制不同位置處像素上兩種不同顏色A、B的亮度,用實(shí)部矩陣控制空頻域二維碼中處于不同位置處像素的顏色A的亮度,用虛部矩陣來(lái)控制空頻域二維碼中處于不同位置處像素的顏色B的亮度,所述顏色A、B頻譜相隔較遠(yuǎn),滿足區(qū)分。步驟5)中幀尾包含的特定長(zhǎng)度的比特序列為01010101。用戶待轉(zhuǎn)換的數(shù)據(jù)按照ASCII或者Unicode編碼成“0”和“1”組成的比特流,并使用級(jí)聯(lián)碼進(jìn)行編碼,可以利用現(xiàn)有的信道編碼技術(shù)提高本發(fā)明的糾錯(cuò)性能。本發(fā)明在空頻域存放數(shù)據(jù)可以將空域中信道卷積的影響轉(zhuǎn)化成空頻域中信道乘積的影響,便于在空頻域中使用差分編碼或者信道均衡來(lái)去除信道的影響。相比較于空域的均衡,降低了復(fù)雜度。在每個(gè)符號(hào)都加上幀頭和幀尾,便于在接收端將接收到的一系列的圖像恢復(fù)為發(fā)送的文件。 將實(shí)部矩陣和虛部矩陣分別放在兩個(gè)不同顏色的信道里表達(dá)發(fā)送可以充分利用光頻譜,提高信道的容量。本發(fā)明采用交織結(jié)合信道編碼來(lái)提高抗錯(cuò)和糾錯(cuò)能力,使用插入導(dǎo)頻或者差分編碼來(lái)抵消信道的空頻域失真。本發(fā)明將變換后的矩陣進(jìn)行非線性映射和量化,充分利用量化階,提高了性能。本發(fā)明對(duì)比已有技術(shù)具有以下創(chuàng)新點(diǎn)1)在空頻域中利用導(dǎo)頻或者差分編碼去除信道的影響。相臨兩個(gè)頻點(diǎn)上的復(fù)數(shù)信道很接近。因?yàn)椴罘质抢孟噜弮尚袕?fù)數(shù)之間的相位差來(lái)表示數(shù)據(jù),接收得到的相鄰兩個(gè)頻點(diǎn)上因?yàn)樾诺酪胍欢ǖ膹?fù)數(shù),但是對(duì)于兩個(gè)頻點(diǎn)間的相位差是沒(méi)有多少影響的。所以, 差分可以消除信道影響。同理,信道可以通過(guò)導(dǎo)頻估計(jì)出來(lái)并加以消除。
2)利用導(dǎo)頻或者差分編碼可以抵抗定位誤差和畸變的影響。因?yàn)槎ㄎ徽`差和畸變可以在每個(gè)空頻域頻點(diǎn)上引入一個(gè)復(fù)數(shù)的系數(shù)。而相臨兩個(gè)頻點(diǎn)上引入的復(fù)數(shù)系數(shù)很接近。因?yàn)椴罘质抢孟噜弮尚袕?fù)數(shù)之間的相位差來(lái)表示數(shù)據(jù),接收得到的相鄰兩個(gè)頻點(diǎn)上因?yàn)槎ㄎ徽`差和畸變引入一定的復(fù)數(shù),但是對(duì)于兩個(gè)頻點(diǎn)間的相位差是沒(méi)有多少影響的。 所以,差分可以抵抗定位誤差和畸變。同理,定位誤差和畸變引入的復(fù)數(shù)系數(shù)和信道可以通過(guò)導(dǎo)頻估計(jì)出來(lái)加以消除。3)交織和級(jí)聯(lián)碼的結(jié)合大大提高了級(jí)聯(lián)碼的糾錯(cuò)能力,降低了冗余度。根據(jù)錯(cuò)誤圖樣采用的交織技術(shù)是可以將錯(cuò)誤盡可能的打散,這樣相同的錯(cuò)誤圖樣可以用更高效的級(jí)聯(lián)碼來(lái)糾正。4)比現(xiàn)有的技術(shù)存儲(chǔ)的信息量大。簡(jiǎn)單的說(shuō),就是本發(fā)明一個(gè)頻點(diǎn)可以攜帶多位比特信息,而現(xiàn)有技術(shù)是通過(guò)多個(gè)像素表示一個(gè)比特信息。
圖1為現(xiàn)有常見(jiàn)的QR碼。圖2為本發(fā)明編碼方法框圖。圖3為本發(fā)明塊交織的實(shí)現(xiàn)方法。圖4為本發(fā)明實(shí)施例矩陣對(duì)稱性的示意圖。圖5為本發(fā)明實(shí)施例添加循環(huán)前綴的示意圖。圖6為本發(fā)明實(shí)施例一個(gè)512*512的空頻域二維碼示意圖。圖7為本發(fā)明實(shí)施例1中,加定位信息后得到的圖像。
具體實(shí)施例方式如圖2,本發(fā)明的包括以下步驟1)將待轉(zhuǎn)換為二維碼的數(shù)據(jù)按照ASCII或者Unicode編碼成0和1組成的比特流;2)使用擾碼,把步驟1)得到的比特流順序打亂,使得0和1均勻分布;3)對(duì)順序打亂后的比特流進(jìn)行級(jí)聯(lián)碼編碼,級(jí)聯(lián)碼包括RS碼和卷積碼;4)根據(jù)錯(cuò)誤圖樣采用交織編碼對(duì)步驟幻得到的編碼進(jìn)行交織,這里所述交織編碼為公知技術(shù)。在設(shè)計(jì)過(guò)程當(dāng)中首先通過(guò)實(shí)驗(yàn)來(lái)確定錯(cuò)誤圖樣,也就是說(shuō)要確定哪些頻點(diǎn)錯(cuò)誤相對(duì)而言比較多,然后確定交織的長(zhǎng)度和深度,目的是讓錯(cuò)誤密集的頻點(diǎn)上的數(shù)據(jù)在交織后要盡可能分散,這樣可以充分利用級(jí)聯(lián)碼的糾錯(cuò)和檢錯(cuò)能力。5)將比特流按照一個(gè)二維碼符號(hào)所能容納的比特?cái)?shù)進(jìn)行分組,不足處填充0作為一組,每個(gè)二維碼符號(hào)定義為一幀,在每組比特前和后分別加上幀頭和幀尾對(duì)應(yīng)一個(gè)二維碼符號(hào),所加的幀頭包含接收端正確恢復(fù)所發(fā)送數(shù)據(jù)所必需的信息,比如幀總數(shù)、本幀的幀號(hào)、擾碼的種類、RS碼和卷積碼的種類。幀尾包含一個(gè)特定長(zhǎng)度的比特序列,如01010101, 用于標(biāo)志幀的結(jié)束,這里所述特定長(zhǎng)度的比特序列的選擇要使得數(shù)據(jù)部分不容易出現(xiàn)該序列為宜。6)將步驟幻得到的各組比特流經(jīng)星座圖映射,變換成相應(yīng)的復(fù)數(shù)矩陣。根據(jù)信道情況插入導(dǎo)頻,或者對(duì)復(fù)數(shù)矩陣進(jìn)行差分編碼。插入導(dǎo)頻的話,每隔一定行/列插入導(dǎo)頻,一般情況下,每隔多行/列插入一行/列導(dǎo)頻以滿足通信的質(zhì)量要求,當(dāng)通信的質(zhì)量得不到滿足的時(shí)候,每隔一行/列插入一行/列導(dǎo)頻,在接收端重采樣后首先估計(jì)出這些行/列所在處的信道,然后在估計(jì)數(shù)據(jù)時(shí)用這些估計(jì)出來(lái)的信道做信道均衡。差分編碼的話,用相鄰兩行/列復(fù)數(shù)間的相位差代表數(shù)據(jù);7)根據(jù)矩陣的共軛對(duì)稱性將插入導(dǎo)頻或差分編碼后的復(fù)數(shù)矩陣的補(bǔ)充為N*N的符號(hào)矩陣,用二維傅立葉反變換對(duì)具有共軛對(duì)稱性的所述符號(hào)矩陣進(jìn)行變換,變換成實(shí)數(shù)矩陣,即空域矩陣;8)將空域矩陣進(jìn)行非線性映射和量化;9)對(duì)步驟8)中得到的矩陣添加循環(huán)前綴和定位信息,得到發(fā)送矩陣,去控制空頻域二維碼中處于不同位置處像素的顏色和亮度;當(dāng)空域矩陣是實(shí)數(shù)的時(shí)候,控制不同位置處像素黑色的亮度;10)在接收時(shí)使用相反的過(guò)程就可以得到編碼前的數(shù)據(jù)將獲得的圖像,根據(jù)定位算法找到數(shù)據(jù)所在位置,然后對(duì)其進(jìn)行重采樣,得到發(fā)送矩陣的估計(jì),用發(fā)送矩陣的估計(jì)經(jīng)過(guò)和發(fā)送相反的過(guò)程,得到發(fā)送數(shù)據(jù)的估計(jì),實(shí)現(xiàn)解碼。步驟7)中,可以不將矩陣補(bǔ)充成具有共軛對(duì)稱性的完整矩陣,直接將插入導(dǎo)頻或差分編碼后的復(fù)數(shù)矩陣進(jìn)行二維傅立葉反變換,得到一個(gè)復(fù)數(shù),做為空域矩陣,這樣在二維傅立葉反變換后就是一個(gè)復(fù)數(shù),將實(shí)部矩陣和虛部矩陣分別經(jīng)過(guò)8)和9)兩個(gè)步驟放在兩個(gè)不同顏色的信道里表達(dá)發(fā)送,如紅色和藍(lán)色,也就是,用實(shí)部矩陣控制空頻域二維碼中處于不同位置處像素的紅色的亮度,用虛部矩陣來(lái)控制空頻域二維碼中處于不同位置處像素的藍(lán)色的亮度,紅色和藍(lán)色也可以換成另外兩種顏色,只要兩種顏色頻譜相隔較遠(yuǎn),滿足區(qū)分即可。下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。本發(fā)明的基本思想是利用空頻域來(lái)存儲(chǔ)信息,并用差分編碼或者導(dǎo)頻來(lái)抵消信道的影響。實(shí)施例1現(xiàn)在要生成一個(gè)N*N(N = 5)的像素矩陣。5*5的復(fù)數(shù)矩陣如果使用QAM映射可以容納((N-I)/2-1) *N*log2 (L)個(gè)比特。L是星座圖的點(diǎn)數(shù)。1、在步驟3)中選用(255,223)的RS碼作為外碼,選用參數(shù)為(2,1,3)生成多項(xiàng)式為(111,101)的卷積碼作為內(nèi)碼。在步驟4)中使用塊交織方式,如圖3所示,輸入比特序列按列寫入存儲(chǔ)器,每列M = 4個(gè)數(shù)據(jù),共K = 5列。交織器按行從存儲(chǔ)器讀出數(shù)據(jù)。設(shè)經(jīng)過(guò)步驟1)-4)后得到的數(shù)據(jù)為1001111011。2、在步驟5)選用常見(jiàn)的星座圖進(jìn)行0,1到復(fù)數(shù)數(shù)據(jù)的映射。在本實(shí)施例中選用 QAM映射。規(guī)則為連續(xù)的兩個(gè)比特映射為一個(gè)復(fù)數(shù)的星座圖符號(hào),詳見(jiàn)表1。表1 4QAM映射表
權(quán)利要求
1.空頻域二維碼的構(gòu)建和解碼方法,其特征是包括以下步驟1)將待轉(zhuǎn)換為二維碼的數(shù)據(jù)按照ASCII或者Unicode編碼成0和1組成的比特流;2)使用擾碼,把步驟1)得到的比特流順序打亂,使得0和1均勻分布;3)對(duì)順序打亂后的比特流進(jìn)行級(jí)聯(lián)碼編碼,級(jí)聯(lián)碼包括RS碼和卷積碼;4)采用交織技術(shù)對(duì)步驟幻得到的編碼進(jìn)行交織;5)將經(jīng)過(guò)編碼和交織的比特流按照一個(gè)二維碼符號(hào)所能容納的比特?cái)?shù)進(jìn)行分組,不足處填充0作為一組,每個(gè)二維碼符號(hào)定義為一幀,在每組比特前和后分別加上幀頭和幀尾對(duì)應(yīng)一個(gè)二維碼符號(hào),所加的幀頭包含接收端正確恢復(fù)所發(fā)送數(shù)據(jù)所必需的信息,包括幀總數(shù)、本幀的幀號(hào)、擾碼的種類、RS碼和卷積碼的種類,幀尾包含一個(gè)特定長(zhǎng)度的比特序列, 用于標(biāo)志幀的結(jié)束,所述特定長(zhǎng)度的比特序列為不屬于數(shù)據(jù)部分的序列;6)將步驟幻得到的各組比特流經(jīng)星座圖映射,變換成相應(yīng)的復(fù)數(shù)矩陣,對(duì)所述復(fù)數(shù)矩陣根據(jù)信道情況選擇插入導(dǎo)頻,或者對(duì)復(fù)數(shù)矩陣進(jìn)行差分編碼;如選擇插入導(dǎo)頻,每隔多行 /列插入一行/列導(dǎo)頻以滿足通信的質(zhì)量要求,當(dāng)通信的質(zhì)量得不到滿足的時(shí)候,每隔一行 /列插入一行/列導(dǎo)頻,在接收端重采樣后首先估計(jì)出這些行/列所在處的信道,然后在估計(jì)數(shù)據(jù)時(shí)用這些估計(jì)出來(lái)的信道做信道均衡;如進(jìn)行差分編碼,用相鄰兩行/列復(fù)數(shù)間的相位差代表數(shù)據(jù);7)根據(jù)矩陣的共軛對(duì)稱性將插入導(dǎo)頻或差分編碼后的復(fù)數(shù)矩陣的補(bǔ)充為N*N的符號(hào)矩陣,用二維傅立葉反變換對(duì)具有共軛對(duì)稱性的所述符號(hào)矩陣進(jìn)行變換,變換成實(shí)數(shù)矩陣, 即空域矩陣;8)將空域矩陣進(jìn)行非線性映射和量化;9)對(duì)步驟8)中得到的矩陣添加循環(huán)前綴和定位信息,得到發(fā)送矩陣,去控制空頻域二維碼中處于不同位置處像素的顏色和亮度,當(dāng)空域矩陣是實(shí)數(shù)的時(shí)候,控制不同位置處像素黑色的亮度;10)在接收時(shí)使用相反的過(guò)程就可以得到編碼前的數(shù)據(jù)將獲得的圖像,根據(jù)定位算法找到數(shù)據(jù)所在位置,然后對(duì)其進(jìn)行重采樣,得到發(fā)送矩陣的估計(jì),用發(fā)送矩陣的估計(jì)經(jīng)過(guò)和發(fā)送相反的過(guò)程,得到發(fā)送數(shù)據(jù)的估計(jì),實(shí)現(xiàn)解碼。
2.根據(jù)權(quán)利要求1所述的空頻域二維碼的構(gòu)建和解碼方法,其特征是,在步驟7)中,直接將插入導(dǎo)頻或差分編碼后的復(fù)數(shù)矩陣進(jìn)行二維傅立葉反變換,得到一個(gè)復(fù)數(shù),做為空域矩陣,將其實(shí)部矩陣和虛部矩陣分別經(jīng)過(guò)步驟8)和9)放在兩個(gè)不同顏色的信道里表達(dá)發(fā)送,即當(dāng)沒(méi)有使用共軛對(duì)稱性,空域矩陣是復(fù)數(shù)的時(shí)候,用其實(shí)部和虛部分別控制不同位置處像素上兩種不同顏色A、B的亮度,用實(shí)部矩陣控制空頻域二維碼中處于不同位置處像素的顏色A的亮度,用虛部矩陣來(lái)控制空頻域二維碼中處于不同位置處像素的顏色B的亮度, 所述顏色A、B頻譜相隔較遠(yuǎn),滿足區(qū)分。
3.根據(jù)權(quán)利要求1或2所述的空頻域二維碼的構(gòu)建和解碼方法,其特征是步驟5)中幀尾包含的特定長(zhǎng)度的比特序列為01010101。
全文摘要
空頻域二維碼的構(gòu)建和解碼方法,將待轉(zhuǎn)換為二維碼的數(shù)據(jù)轉(zhuǎn)換為比特流,經(jīng)過(guò)比特流均勻分布、級(jí)聯(lián)碼編碼、交織對(duì)比特流分組,進(jìn)行空頻域編碼。本發(fā)明屬于信息存儲(chǔ)、傳輸和識(shí)別技術(shù)領(lǐng)域,利用空頻域來(lái)存儲(chǔ)信息,方便利用均衡的技術(shù)來(lái)抵抗信道、光污染的影響,利用導(dǎo)頻或差分編碼抵抗定位誤差和畸變的影響。本發(fā)明交織和級(jí)聯(lián)碼的結(jié)合,大大提高了級(jí)聯(lián)碼的糾錯(cuò)能力,降低了冗余度,比現(xiàn)有技術(shù)的二維碼具有更大的存儲(chǔ)信息量。
文檔編號(hào)H04L1/00GK102427397SQ20111036183
公開日2012年4月25日 申請(qǐng)日期2011年11月16日 優(yōu)先權(quán)日2011年11月16日
發(fā)明者余旭濤, 張?jiān)阼? 張樹劍, 方文驍, 裴誠(chéng)誠(chéng) 申請(qǐng)人:東南大學(xué)