一種矩陣式二維碼中隱藏信息的方法和防偽方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于信息技術(shù)領(lǐng)域,涉及一種矩陣式二維碼的防偽方法。更具體地說(shuō),涉及到一種在滿足不影響矩陣二維碼要表達(dá)的信息的前提下,在矩陣二維碼中加入隱藏信息,通過(guò)提取和驗(yàn)證矩陣二維碼中隱藏的信息,可以辨別矩陣二維碼的真?zhèn)?,使之具有防偽特性?br>【背景技術(shù)】
[0002]隨著移動(dòng)物聯(lián)網(wǎng)技術(shù)的發(fā)展,矩陣式二維碼(以下簡(jiǎn)稱二維碼,實(shí)際上二維碼除了矩陣碼以外,還有行排式二維碼,是由多個(gè)一維碼排列而成,詳見:http://baike.baidU.com/view/10548550, htm)的應(yīng)用也越來(lái)越普及。二維碼是用特定的幾何圖形按一定規(guī)律在平面上分布的相間的圖形,通常是黑白的。相對(duì)一維條形碼,二維碼具有識(shí)讀設(shè)備簡(jiǎn)單、數(shù)據(jù)容量更大、可編碼的數(shù)據(jù)不局限于字母和數(shù)字、且具有較強(qiáng)的抗損毀能力等優(yōu)點(diǎn)。但是,二維碼有一個(gè)致命的缺點(diǎn):自身不防偽。由于大部分二維碼的生成算法是公開的,對(duì)于一個(gè)已生成的二維碼,用戶用掃碼軟件得到數(shù)據(jù)信息后即可用編碼軟件生成一個(gè)具有相同數(shù)據(jù)信息的二維碼,無(wú)法辨別原始二維碼和新生成二維碼。
[0003]現(xiàn)有的二維碼防偽,例如把二維碼看做一個(gè)水印標(biāo)記,嵌入到圖像中,用于辨別帶水印圖像的真?zhèn)?;類似的,將二維碼作為一種產(chǎn)品防偽的媒介的技術(shù)方案,其實(shí)質(zhì)是針對(duì)產(chǎn)品的防偽,并不是二維碼自身的防偽。本發(fā)明主要針對(duì)二維碼自身的防偽。
[0004]I) 二維碼的編碼
[0005]二維碼,是在一個(gè)矩形空間通過(guò)像素在矩陣中的不同分布進(jìn)行編碼,通常是黑白的。將數(shù)據(jù)信息按一定規(guī)則編碼成“O” “I”比特流。在矩陣元素位置(每個(gè)獨(dú)立的小矩形區(qū)域,以下稱作模塊,取自“快速相應(yīng)矩陣碼:GB/T18284-2000”)上,出現(xiàn)方點(diǎn)、圓點(diǎn)或其他形狀點(diǎn)來(lái)表示“O”或“ I ”,形狀點(diǎn)按照一定規(guī)則排布,與比特流信息對(duì)應(yīng),其流程如圖1所示。具有代表性的矩陣式二維碼有PDF417,Data Matrix, QR Code等。
[0006]2) 二維碼的解碼
[0007]解碼是編碼的逆過(guò)程。通過(guò)識(shí)別矩陣空間中的模塊分布信息,根據(jù)排布規(guī)則逆推得到比特流信息,再進(jìn)一步根據(jù)編碼規(guī)則得到數(shù)據(jù)信息,其流程如圖2所示。通過(guò)對(duì)矩陣模塊的采樣獲得模塊信息是比較常用的一種方法,其示意圖如圖3所示。圖中每個(gè)虛線網(wǎng)格對(duì)應(yīng)為一個(gè)模塊,“十字”為模塊的中心點(diǎn)。只需要判斷中心點(diǎn)位置是否為黑色即可知道該模塊攜帶的是“O”還是“1”,這一過(guò)程稱為“采樣”。實(shí)際解碼過(guò)程中,由于獲取的二維碼圖像會(huì)有扭曲變形的情況,采樣中心點(diǎn)會(huì)發(fā)生偏移,落在圖中陰影范圍之內(nèi)。如果二維碼圖像變形導(dǎo)致中心點(diǎn)超出了它所在的模塊位置,則會(huì)導(dǎo)致解碼錯(cuò)誤。
【發(fā)明內(nèi)容】
[0008]針對(duì)二維碼自身不防偽的缺陷,本發(fā)明的目的在于,首先提供一種矩陣式二維碼中隱藏信息的方法,然后基于該方法提出一種矩陣式二維碼的防偽方法,在編碼時(shí),在二維碼中嵌入隱藏信息;解碼時(shí),通過(guò)提取和驗(yàn)證隱藏信息,辨明二維碼的真?zhèn)巍?br>[0009]本發(fā)明采用的技術(shù)方案如下:
[0010]一種矩陣式二維碼中隱藏信息的方法,其步驟包括:
[0011]I)選擇矩陣式二維碼中數(shù)據(jù)中心點(diǎn)周圍的空白區(qū)域作為隱藏信息的載體,用于攜帶隱藏信息;
[0012]2)對(duì)數(shù)據(jù)信息和隱藏信息進(jìn)行編碼,進(jìn)而生成包含隱藏信息的矩陣式二維碼。
[0013]進(jìn)一步地,步驟2)所述對(duì)數(shù)據(jù)信息和隱藏信息進(jìn)行編碼,是分別對(duì)數(shù)據(jù)信息和隱藏信息進(jìn)行編碼,然后將數(shù)據(jù)信息模塊與隱藏信息模塊疊加,得到最終的編碼結(jié)果;或者將數(shù)據(jù)信息和隱藏信息進(jìn)行組合編碼,包括利用隱藏信息點(diǎn)與其臨近數(shù)據(jù)信息點(diǎn)的關(guān)系進(jìn)行編碼。
[0014]進(jìn)一步地,還包括進(jìn)行解碼以獲得所述隱藏信息的步驟:首先獲取二維碼圖像,然后獲得模塊信息,通過(guò)模塊信息、數(shù)據(jù)信息模塊的排布規(guī)則和隱藏信息模塊的排布規(guī)則得到比特流信息,包括數(shù)據(jù)信息比特流和隱藏信息比特流;之后根據(jù)比特流信息、數(shù)據(jù)信息的編碼規(guī)則和隱藏信息的編碼規(guī)則獲得數(shù)據(jù)信息和隱藏信息。
[0015]一種矩陣式二維碼的防偽方法,其步驟包括:
[0016]I)選擇矩陣式二維碼中數(shù)據(jù)中心點(diǎn)周圍的空白區(qū)域作為隱藏信息的載體,用于攜帶隱藏信息;
[0017]2)對(duì)數(shù)據(jù)信息和隱藏信息進(jìn)行編碼,進(jìn)而生成包含隱藏信息的矩陣式二維碼;
[0018]3)獲取包含隱藏信息的矩陣式二維碼圖像,對(duì)其進(jìn)行解碼,得到數(shù)據(jù)信息和隱藏信息;
[0019]4)對(duì)通過(guò)解碼得到的隱藏信息進(jìn)行驗(yàn)證,辨別二維碼的真?zhèn)巍?br>[0020]進(jìn)一步地,步驟2)所述對(duì)數(shù)據(jù)信息和隱藏信息進(jìn)行編碼,是分別對(duì)數(shù)據(jù)信息和隱藏信息進(jìn)行編碼,然后將數(shù)據(jù)信息模塊與隱藏信息模塊疊加,得到最終的編碼結(jié)果;或者將數(shù)據(jù)信息和隱藏信息進(jìn)行組合編碼,包括利用隱藏信息點(diǎn)與其臨近數(shù)據(jù)信息點(diǎn)的關(guān)系進(jìn)行編碼。
[0021]進(jìn)一步地,步驟2)在編碼時(shí),數(shù)據(jù)信息的編碼規(guī)則和隱藏信息的編碼規(guī)則一致或者不一致;數(shù)據(jù)信息模塊的排布規(guī)則和隱藏信息模塊的排布規(guī)則一致或者不一致。
[0022]進(jìn)一步地,步驟3)進(jìn)行解碼的方法是:首先獲取二維碼圖像中的模塊信息,然后通過(guò)模塊信息、數(shù)據(jù)信息模塊的排布規(guī)則和隱藏信息模塊的排布規(guī)則得到比特流信息,包括數(shù)據(jù)信息比特流和隱藏信息比特流,之后根據(jù)比特流信息、數(shù)據(jù)信息的編碼規(guī)則和隱藏信息的編碼規(guī)則獲得數(shù)據(jù)信息和隱藏信息。
[0023]進(jìn)一步地,步驟3)在提取二維碼圖像中隱藏信息的模塊信息時(shí),采用下列方法確定隱藏信息采樣的中心點(diǎn):首先獲取隱藏信息周圍數(shù)據(jù)信息模塊的采樣中心點(diǎn),設(shè)為A、B、C、D,并設(shè)e、f、g、h分別為線段AB、BC、CD、AD的中點(diǎn),則線段eg和fh的交點(diǎn)即為隱藏信息米樣的中心點(diǎn)。實(shí)際操作中有多種方法可以確定隱藏信息米樣的中心點(diǎn),在此不列舉。
[0024]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果如下:
[0025]I)本發(fā)明選擇了離模塊中心點(diǎn)最遠(yuǎn)的區(qū)域用于攜帶隱藏信息,而且,利用周圍的點(diǎn)來(lái)確定隱藏信息區(qū)域的中心點(diǎn),也是本發(fā)明的創(chuàng)新點(diǎn)之一。采用這種方式可以抗扭曲變形,即當(dāng)解碼圖像發(fā)生扭曲變形的時(shí)候,依然可以有效地進(jìn)行解碼。
[0026]2)本發(fā)明適用于所有基于采樣解碼的矩陣式二維碼。本文中均以黑白為例進(jìn)行說(shuō)明,但本發(fā)明方法不以此為限制,可以擴(kuò)展到彩色矩陣式二維碼。
[0027]3)本發(fā)明提出了利用周圍區(qū)域攜帶隱藏信息的方法,而隱藏信息的用途不局限于防偽,也可以在其它需要攜帶信息、隱藏信息的領(lǐng)域中使用該方法。
【附圖說(shuō)明】
[0028]圖1是二維碼編碼過(guò)程流程圖。
[0029]圖2是二維碼解碼過(guò)程流程圖。
[0030]圖3是采樣示意圖。
[0031]圖4是用于攜帶隱藏信息的區(qū)域示意圖。
[0032]圖5是帶有隱藏信息的編碼流程圖。
[0033]圖6是帶有隱藏信息的編碼示意圖。
[0034]圖7是攜帶隱藏信息的二維碼的解碼流程圖。
[0035]圖8是隱藏信息模塊中心點(diǎn)提取示意圖。
[0036]圖9是基于QR碼的編碼實(shí)例圖。
【具體實(shí)施方式】
[0037]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面通過(guò)具體實(shí)施例和附圖,對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
[0038]圖3說(shuō)明了解碼時(shí),只有中心區(qū)域(陰影圓形,表示數(shù)據(jù)中心點(diǎn),或稱數(shù)據(jù)采樣點(diǎn)、模塊中心點(diǎn))的像素點(diǎn)將用于解碼,而周圍的空白區(qū)域(或者稱作空置區(qū)域)視作無(wú)用信息被丟棄。因此,可以