两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

可嵌入大比例圖形的二維碼及其編碼和解碼設(shè)備的制造方法

文檔序號(hào):10921232閱讀:255來源:國(guó)知局
可嵌入大比例圖形的二維碼及其編碼和解碼設(shè)備的制造方法
【專利摘要】本公開各實(shí)施例提供了可嵌入大比例圖形的二維碼及其編碼和解碼方法和設(shè)備,其中該二維碼包括定位符、控制區(qū)、數(shù)據(jù)區(qū)和畫布區(qū),其中:所述定位符包括對(duì)所述二維碼進(jìn)行識(shí)別和定位的定位信息;所述控制區(qū)包括對(duì)所述二維碼進(jìn)行配置的配置信息,所述配置信息包括與所述二維碼使用的二維碼模板相對(duì)應(yīng)的二維碼模板信息;所述數(shù)據(jù)區(qū)包括與所述二維碼代表的原始信息相對(duì)應(yīng)的數(shù)據(jù)信息,所述數(shù)據(jù)區(qū)的位置和大小根據(jù)所述二維碼模板來確定;所述畫布區(qū)用于嵌入所述大比例圖形,所述畫布區(qū)的位置和大小根據(jù)所述二維碼模板來確定。
【專利說明】
可嵌入大比例圖形的二維碼及其編碼和解碼設(shè)備
技術(shù)領(lǐng)域
[0001]本公開各實(shí)施例涉及二維碼技術(shù),特別涉及可嵌入大比例圖形的二維碼及其編碼和解碼設(shè)備。
【背景技術(shù)】
[0002]二維碼(2-dimens1nal bar code)是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向)上分布黑白相間的圖形來記錄數(shù)據(jù)符號(hào)信息。二維碼在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“O”、“I”比特流的概念,并使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來表示文字?jǐn)?shù)值信息,然后通過圖像輸入設(shè)備或光電掃描設(shè)備可以自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。因此二維碼具有條碼技術(shù)的一些共性:每種碼制有其特定的字符集;每個(gè)字符占有一定的寬度;具有一定的校驗(yàn)功能等。同時(shí)二維碼還具有對(duì)不同行的信息自動(dòng)識(shí)別功能、及處理圖形旋轉(zhuǎn)變化等。
[0003]國(guó)際上對(duì)二維碼技術(shù)的研究始于20世紀(jì)80年代末,在二維碼符號(hào)表示技術(shù)研究方面已研制出多種碼制,常見的有PDF417、QR Code (如圖1所示)、DM code (如圖2所示)、Code 49,Code 16K、Code One等。這些二維碼的信息密度都比傳統(tǒng)的一維碼有了較大提高,如TOF417的信息密度是一維碼CodeC39的20多倍。在二維碼標(biāo)準(zhǔn)化研究方面,國(guó)際自動(dòng)識(shí)別制造商協(xié)會(huì)(AIM)、美國(guó)標(biāo)準(zhǔn)化協(xié)會(huì)(ANSI)已完成了H)F417、QR CodeXode 49,Code 16K、Code One等碼制的符號(hào)標(biāo)準(zhǔn)。國(guó)際標(biāo)準(zhǔn)技術(shù)委員會(huì)和國(guó)際電工委員會(huì)還成立了條碼自動(dòng)識(shí)別技術(shù)委員會(huì)(IS0/IEC/JTC1/SC31),已制定了QR Code的國(guó)際標(biāo)準(zhǔn)(IS0/IEC 18004:2000《自動(dòng)識(shí)別與數(shù)據(jù)采集技術(shù)一條碼符號(hào)技術(shù)規(guī)范一QR碼》),起草了PDF417、Code 16K、DataMatrix、Maxi Code等二維碼的IS0/IEC標(biāo)準(zhǔn)草案。在二維碼設(shè)備開發(fā)研制、生產(chǎn)方面,美國(guó)、日本等國(guó)的設(shè)備制造商生產(chǎn)的識(shí)讀設(shè)備、符號(hào)生成設(shè)備,已廣泛應(yīng)用于各類二維碼應(yīng)用系統(tǒng)。二維碼作為一種全新的信息存儲(chǔ)、傳遞和識(shí)別技術(shù),自誕生之日起就得到了世界上許多國(guó)家的關(guān)注。各國(guó)不僅已將二維碼技術(shù)應(yīng)用于公安、外交、軍事等部門對(duì)各類證件的管理,而且也將二維碼應(yīng)用于例如:海關(guān)、稅務(wù)等部門對(duì)各類報(bào)表和票據(jù)的管理;商業(yè)、交通運(yùn)輸?shù)炔块T對(duì)商品及貨物運(yùn)輸?shù)墓芾恚秽]政部門對(duì)郵政包裹的管理;工業(yè)生產(chǎn)領(lǐng)域?qū)I(yè)生產(chǎn)線的自動(dòng)化管理等。
[0004]隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,二維碼的應(yīng)用空間也越來越廣泛。通過將相關(guān)信息編制成二維碼,在移動(dòng)設(shè)備(例如手機(jī))中安裝識(shí)讀軟件,可以使移動(dòng)設(shè)備成為一個(gè)二維碼識(shí)讀器,主動(dòng)識(shí)讀各種場(chǎng)合下的二維碼標(biāo)志,獲取內(nèi)含的有效信息。
[0005]基于二維碼的糾錯(cuò)功能,即使二維碼部分被覆蓋或丟失,掃描設(shè)備依然能夠識(shí)別出其記錄的完整信息,基于這樣的原理,當(dāng)前已有不少“個(gè)性二維碼”的生成工具,可以把一些個(gè)性圖案與二維碼進(jìn)行合成,從而得到個(gè)性化并能被掃描設(shè)備識(shí)別的二維碼,這種“個(gè)性二維碼”也開始流行起來。
[0006]如圖3所示,在商業(yè)應(yīng)用中,例如一種“個(gè)性二維碼”的示例是通過在標(biāo)準(zhǔn)二維碼的圖片上,部分用企業(yè)logo圖片進(jìn)行覆蓋,從而可以直觀地顯示二維條碼與商家的關(guān)系。這種“個(gè)性二維碼”存在以下缺點(diǎn):
[0007]1.嵌入圖像的大小不能超過原二維碼面積的大約20%(這個(gè)比例與二維碼大小、印刷質(zhì)量等相關(guān)),在面積較小的標(biāo)簽識(shí)別碼中,由于標(biāo)簽大小的限制,可以嵌入圖像的面積比例會(huì)更小,例如圖3中的嵌入圖形面積約為二維碼圖形整體面積的6%。
[0008]2.降低了標(biāo)準(zhǔn)二維碼在應(yīng)用中的糾錯(cuò)能力。這是由于這種方法嵌入圖像的原理是利用了標(biāo)準(zhǔn)二維碼的糾錯(cuò)能力,在較小比例上覆蓋標(biāo)準(zhǔn)二維碼的部分區(qū)域時(shí),標(biāo)準(zhǔn)二維碼仍然可以通過自動(dòng)糾錯(cuò)來解碼數(shù)據(jù)。但是實(shí)際上對(duì)標(biāo)準(zhǔn)二維碼本身,嵌入的圖像仍然是一種干擾信息,因此降低了標(biāo)準(zhǔn)二維碼在實(shí)際應(yīng)用中糾錯(cuò)能力。
[0009]如圖4所示,例如另一種“個(gè)性二維碼”的示例是在圖形當(dāng)中嵌入標(biāo)準(zhǔn)二維碼,比如圖4中的“個(gè)性二維碼”嵌入了一個(gè)標(biāo)準(zhǔn)二維碼,然后在標(biāo)準(zhǔn)二維碼的四周再裝飾一些圖案,看起來相當(dāng)美觀,然而這種“個(gè)性二維碼”也存在以下缺點(diǎn):
[0010]1.被嵌入的二維碼的圖片必須存在可以鏤空的部分,如圖4中卡通鴨的腹部是鏤空的。
[0011]2.被嵌入的二維碼的圖片整體不能做得很小,這是因?yàn)閳D片要鏤空再嵌入二維碼,而二維碼本身必須有足夠的大小,才能被識(shí)讀軟件讀取。
[0012]此外,目前來看,雖然標(biāo)準(zhǔn)二維碼的生成與識(shí)別是一種國(guó)際標(biāo)準(zhǔn)通用,但是這種標(biāo)準(zhǔn)二維碼用于防偽行業(yè),存在易于復(fù)制和盜版的問題。

【發(fā)明內(nèi)容】

[0013]針對(duì)現(xiàn)有二維碼(例如個(gè)性二維碼)所存在的不足,本公開的各實(shí)施例提出了一種可嵌入大比例圖形的二維碼,相應(yīng)地,本公開的各實(shí)施例還提出了用于該二維碼的編碼方法、編碼設(shè)備、解碼方法、以及解碼設(shè)備。
[0014]與現(xiàn)有技術(shù)(例如現(xiàn)有的個(gè)性二維碼直接套用標(biāo)準(zhǔn)二維碼的實(shí)現(xiàn)方式)相比,本公開的各實(shí)施例中的二維碼采用了新的技術(shù),特別定義了可嵌入大比例圖形的畫布區(qū)域,因此可以嵌入大比例圖像。此外,該畫布區(qū)域也是一種嵌入的可變形狀的畫布區(qū)域,因此使得二維碼能夠?qū)崿F(xiàn)一種整體可變的外形,因此屬于一種外形可變的二維碼。
[0015]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼,包括定位符、控制區(qū)、數(shù)據(jù)區(qū)和畫布區(qū),其中:
[0016]所述定位符包括對(duì)所述二維碼進(jìn)行識(shí)別和定位的定位信息;
[0017]所述控制區(qū)包括對(duì)所述二維碼進(jìn)行配置的配置信息,所述配置信息包括與所述二維碼使用的二維碼模板相對(duì)應(yīng)的二維碼模板信息;
[0018]所述數(shù)據(jù)區(qū)包括與所述二維碼代表的原始信息相對(duì)應(yīng)的數(shù)據(jù)信息,所述數(shù)據(jù)區(qū)的位置和大小根據(jù)所述二維碼模板來確定;
[0019]所述畫布區(qū)用于嵌入所述大比例圖形,所述畫布區(qū)的位置和大小根據(jù)所述二維碼模板來確定。
[0020]根據(jù)本公開的一個(gè)實(shí)施例,所述定位信息包括定位符,所述二維碼模板信息包括二維碼模板編號(hào),所述二維碼模板存儲(chǔ)于數(shù)據(jù)源中并且定義了所述二維碼的形狀和大小、以及所述數(shù)據(jù)區(qū)和所述畫布區(qū)的位置和大小。
[0021]根據(jù)本公開的一個(gè)實(shí)施例,所述配置信息還包括以下各項(xiàng)中的至少一項(xiàng):
[0022]I)掩碼編號(hào):定義了對(duì)所述數(shù)據(jù)信息進(jìn)行轉(zhuǎn)換運(yùn)算的規(guī)則;
[0023]2)數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào):定義了對(duì)所述數(shù)據(jù)信息的糾錯(cuò)等級(jí);
[0024]3)數(shù)據(jù)壓縮方法編號(hào):定義了對(duì)所述數(shù)據(jù)信息的壓縮方法;
[0025]4)數(shù)據(jù)加密方法編號(hào):定義了對(duì)所述數(shù)據(jù)信息的加密方法;
[0026]5)控制區(qū)糾錯(cuò)碼:對(duì)所述配置信息計(jì)算得到控制區(qū)糾錯(cuò)碼。
[0027]根據(jù)本公開的一個(gè)實(shí)施例,所述原始信息包括統(tǒng)一資源定位符,所述原始信息經(jīng)編碼以及以下各項(xiàng)中的至少一項(xiàng)后形成所述數(shù)據(jù)信息:壓縮、加密、糾錯(cuò)碼計(jì)算、以及掩碼計(jì)算。
[0028]根據(jù)本公開的一個(gè)實(shí)施例,所述大比例圖形包括圖片和/或文字信息,所述二維碼在識(shí)讀時(shí)能夠根據(jù)所述定位信息對(duì)所述二維碼進(jìn)行識(shí)別和定位,然后解讀出所述控制區(qū)中的所述配置信息,以便根據(jù)所述配置信息中的二維碼模板信息來獲得所述二維碼使用的二維碼模板,所述二維碼模板包括關(guān)于所述二維碼的布局信息的數(shù)據(jù)點(diǎn)陣,所述數(shù)據(jù)點(diǎn)陣定義了所述二維碼的形狀和大小、以及所述數(shù)據(jù)區(qū)和所述畫布區(qū)的位置和大小。
[0029]根據(jù)本公開的一個(gè)實(shí)施例,還包括間隔區(qū),所述間隔區(qū)包括定位間隔區(qū)和數(shù)據(jù)間隔區(qū);其中所述定位間隔區(qū)是所述定位符四周的空白,寬度為一個(gè)點(diǎn)陣基本元素;所述數(shù)據(jù)間隔區(qū)是所述數(shù)據(jù)區(qū)與所述畫布區(qū)、和/或所述數(shù)據(jù)區(qū)與所述二維碼外部的空白,寬度為一個(gè)點(diǎn)陣基本元素。
[0030]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼的編碼方法,包括:
[0031]選擇二維碼模板:所述二維碼模板包括關(guān)于所述二維碼的布局信息的數(shù)據(jù)點(diǎn)陣,選擇的二維碼模板要滿足:所述布局信息定義的定位符、數(shù)據(jù)區(qū)和控制區(qū)不會(huì)覆蓋到原始圖片在畫布區(qū)所要展示的內(nèi)容,并且所述數(shù)據(jù)區(qū)能夠容納將要編碼到所述二維碼中的最大編碼長(zhǎng)度;
[0032]數(shù)據(jù)區(qū)編碼:根據(jù)所述布局信息中關(guān)于所述數(shù)據(jù)區(qū)的定義將所述數(shù)據(jù)區(qū)的數(shù)據(jù)信息填充到所述數(shù)據(jù)點(diǎn)陣,所述數(shù)據(jù)信息是由所述二維碼代表的原始信息經(jīng)編碼以及以下各項(xiàng)中的至少一項(xiàng)后形成的:壓縮、加密、糾錯(cuò)碼計(jì)算、以及掩碼計(jì)算;
[0033]控制區(qū)編碼:根據(jù)所述布局信息中關(guān)于所述控制區(qū)的定義將二維碼模板編號(hào)、以及以下各項(xiàng)中的至少一項(xiàng)填充到所述數(shù)據(jù)點(diǎn)陣:掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào)、以及控制區(qū)糾錯(cuò)碼;
[0034]生成二維碼:根據(jù)所述布局信息中關(guān)于所述定位符和所述間隔區(qū)的定義將所述定位符和所述間隔區(qū)的編碼填充到所述數(shù)據(jù)點(diǎn)陣,并將所述數(shù)據(jù)點(diǎn)陣轉(zhuǎn)換為模板圖片,然后將所述模板圖片疊加到所述原始圖片上,以形成所述可嵌入大比例圖形的二維碼。
[0035]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼的編碼設(shè)備,被配置為執(zhí)行根據(jù)以上所述的可嵌入大比例圖形的二維碼的編碼方法;或者被配置為生成以上所述的可嵌入大比例圖形的二維碼。
[0036]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼的解碼方法,包括:
[0037]二維碼點(diǎn)陣轉(zhuǎn)換:采集所述可嵌入大比例圖形的二維碼的圖像并進(jìn)行二值化處理,然后在生成的二值化圖像中查找定位符,并根據(jù)所述定位符的位置將所述二值化圖像轉(zhuǎn)換為二維碼點(diǎn)陣;
[0038]控制區(qū)解碼:在所述二維碼點(diǎn)陣中讀取控制區(qū)編碼,并對(duì)所述控制區(qū)編碼進(jìn)行解碼以獲得所述控制區(qū)的配置信息,所述配置信息包括二維碼模板編號(hào),以及以下各項(xiàng)中的至少一項(xiàng):掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào)、以及控制區(qū)糾錯(cuò)碼;
[0039]獲取二維碼模板:根據(jù)所述二維碼模板編號(hào),從數(shù)據(jù)源中獲得所述二維碼使用的二維碼模板;
[0040]數(shù)據(jù)區(qū)解碼:根據(jù)所述二維碼模板關(guān)于數(shù)據(jù)區(qū)的定義,從所述二維碼點(diǎn)陣讀取所述數(shù)據(jù)區(qū)的數(shù)據(jù)信息,以獲得所述二維碼代表的原始信息。
[0041]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼的解碼設(shè)備,被配置為執(zhí)行根據(jù)以上所述的可嵌入大比例圖形的二維碼的解碼方法;或者被配置為識(shí)讀以上所述的可嵌入大比例圖形的二維碼。
[0042]通過以上的實(shí)施例,可以提供一種可嵌入大比例圖形的二維碼及其編碼和解碼方法和設(shè)備。
【附圖說明】
[0043]現(xiàn)將僅通過示例的方式,參考所附附圖對(duì)本公開的實(shí)施例進(jìn)行描述,其中
[0044]圖1圖示了QR 二維碼的示意圖;
[0045]圖2圖示了DM 二維碼的示意圖;
[0046]圖3圖示了個(gè)性二維碼的示例的示意圖;
[0047]圖4圖示了個(gè)性二維碼的另一示例的示意圖;
[0048]圖5圖示了根據(jù)本公開的實(shí)施例的可嵌入大比例圖形的二維碼的示意圖;
[0049]圖6圖示了根據(jù)本公開的實(shí)施例的二維碼模板的示意圖;
[0050]圖7圖示了根據(jù)本公開的實(shí)施例的原始圖片的示意圖;
[0051]圖8圖示了根據(jù)本公開的實(shí)施例的二維碼的編碼流程示意圖;
[0052]圖9圖示了根據(jù)本公開的實(shí)施例的二維碼的解碼流程示意圖;
[0053]圖10圖示了根據(jù)本公開的實(shí)施例的“回”字形定位符;
[0054]圖11圖示了根據(jù)本公開的實(shí)施例的控制區(qū)的位置和碼序示例;
[0055]圖12圖示了根據(jù)本公開的實(shí)施例的圖像的二值化處理流程示例;
[0056]圖13圖示了根據(jù)本公開的實(shí)施例的未加掩碼的數(shù)據(jù)區(qū)的示例;
[0057]圖14圖示了根據(jù)本公開的實(shí)施例的加上控制區(qū)數(shù)據(jù)的示例;以及
[0058]圖15圖示了根據(jù)本公開的實(shí)施例的二值化后的圖像的示例。
【具體實(shí)施方式】
[0059]現(xiàn)將結(jié)合附圖對(duì)本公開的實(shí)施例進(jìn)行具體的描述。應(yīng)當(dāng)注意的是,附圖中對(duì)相似的部件或者功能組件可能使用同樣的數(shù)字標(biāo)示。所附附圖僅僅旨在說明本公開的實(shí)施例。本領(lǐng)域的技術(shù)人員可以在不偏離本公開精神和保護(hù)范圍的基礎(chǔ)上從下述描述得到替代的實(shí)施方式。
[0060]根據(jù)本公開的一個(gè)方面,提供了一種可嵌入大比例圖形的二維碼,本公開的可嵌入大比例圖形的二維碼是一種適應(yīng)于例如行業(yè)應(yīng)用和移動(dòng)增值業(yè)務(wù)的新型二維碼技術(shù)。
[0061][可嵌入大比例圖形的二維碼]
[0062]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼,包括定位符、控制區(qū)、數(shù)據(jù)區(qū)和畫布區(qū),其中:
[0063]所述定位符包括對(duì)所述二維碼進(jìn)行識(shí)別和定位的定位信息(例如3個(gè)“回”字形的定位符);
[0064]所述控制區(qū)包括對(duì)所述二維碼進(jìn)行配置的配置信息(例如代表配置信息的編碼),所述配置信息包括與所述二維碼使用的二維碼模板相對(duì)應(yīng)的二維碼模板信息(例如二維碼模板編碼);
[0065]所述數(shù)據(jù)區(qū)包括與所述二維碼代表的原始信息相對(duì)應(yīng)的數(shù)據(jù)信息(例如數(shù)據(jù)編碼),所述數(shù)據(jù)區(qū)的位置和大小根據(jù)所述二維碼模板來確定;
[0066]所述畫布區(qū)用于嵌入所述大比例圖形,所述畫布區(qū)的位置和大小根據(jù)所述二維碼模板來確定。
[0067]根據(jù)本公開的一個(gè)實(shí)施例,所述定位信息包括定位符(例如3個(gè)“回”字形的定位符),所述二維碼模板信息包括二維碼模板編號(hào),所述二維碼模板存儲(chǔ)于數(shù)據(jù)源中并且定義了所述二維碼的形狀和大小、以及所述數(shù)據(jù)區(qū)和所述畫布區(qū)的位置和大小。
[0068]根據(jù)本公開的一個(gè)實(shí)施例,所述配置信息還包括以下各項(xiàng)中的至少一項(xiàng):
[0069]I)掩碼編號(hào):定義了對(duì)所述數(shù)據(jù)信息進(jìn)行轉(zhuǎn)換運(yùn)算的規(guī)則;
[0070]2)數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào):定義了對(duì)所述數(shù)據(jù)信息的糾錯(cuò)等級(jí);
[0071]3)數(shù)據(jù)壓縮方法編號(hào):定義了對(duì)所述數(shù)據(jù)信息的壓縮方法;
[0072]4)數(shù)據(jù)加密方法編號(hào):定義了對(duì)所述數(shù)據(jù)信息的加密方法;
[0073]5)控制區(qū)糾錯(cuò)碼:對(duì)所述配置信息計(jì)算得到控制區(qū)糾錯(cuò)碼。
[0074]根據(jù)本公開的一個(gè)實(shí)施例,所述原始信息包括統(tǒng)一資源定位符,所述原始信息經(jīng)編碼以及以下各項(xiàng)中的至少一項(xiàng)后形成所述數(shù)據(jù)信息:壓縮、加密、糾錯(cuò)碼計(jì)算、以及掩碼計(jì)算。
[0075]根據(jù)本公開的一個(gè)實(shí)施例,所述大比例圖形包括圖片和/或文字信息,所述二維碼在識(shí)讀時(shí)能夠根據(jù)所述定位信息對(duì)所述二維碼進(jìn)行識(shí)別和定位,然后解讀出所述控制區(qū)中的所述配置信息,以便根據(jù)所述配置信息中的二維碼模板信息來獲得所述二維碼使用的二維碼模板,所述二維碼模板包括關(guān)于所述二維碼的布局信息的數(shù)據(jù)點(diǎn)陣,所述數(shù)據(jù)點(diǎn)陣定義了所述二維碼的形狀和大小、以及所述數(shù)據(jù)區(qū)和所述畫布區(qū)的位置和大小。
[0076]根據(jù)本公開的一個(gè)實(shí)施例,還包括間隔區(qū),所述間隔區(qū)包括定位間隔區(qū)和數(shù)據(jù)間隔區(qū);其中所述定位間隔區(qū)是所述定位符四周的空白,寬度為一個(gè)點(diǎn)陣基本元素;所述數(shù)據(jù)間隔區(qū)是所述數(shù)據(jù)區(qū)與所述畫布區(qū)、和/或所述數(shù)據(jù)區(qū)與所述二維碼外部的空白,寬度為一個(gè)點(diǎn)陣基本元素。
[0077]例如,圖5是根據(jù)本公開的實(shí)施例的可嵌入大比例圖形的二維碼的示意圖。從圖5中可以看到該新型的二維碼例如是不規(guī)則形狀的,并且原始圖片(如圖7所示)例如可以完全嵌入到這種二維碼中。
[0078]這種二維碼的大小、形狀、數(shù)據(jù)部分和圖像部分的布局例如是由二維碼模板(如圖6所示)來決定的。這種二維碼例如通過二維碼模板編號(hào)來指定使用的二維碼模板。二維碼模板例如可以是任何自定義的模板,理論上可以定義大量的不同形狀和大小的模板,從而使得最終獲得的二維碼可以嵌入大比例圖像,而且畫布區(qū)可以任意定義,從而使得嵌入大比例圖形的二維碼中的畫布區(qū)的圖像呈現(xiàn)各種形狀和樣式,因此克服了現(xiàn)有技術(shù)的缺陷。
[0079]圖6是根據(jù)本公開的實(shí)施例的二維碼模板的示意圖,其中描述了本公開的二維碼的編碼結(jié)構(gòu)。這種二維碼例如由定位符201、控制區(qū)202、數(shù)據(jù)區(qū)203、畫布區(qū)204、以及間隔區(qū)205、206所組成。
[0080]控制區(qū)202例如包含了這個(gè)二維碼的配置信息,該配置信息例如包括二維碼模板編號(hào)、掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào)??刂茀^(qū)本身例如是獨(dú)立進(jìn)行糾錯(cuò)編碼的。
[0081]數(shù)據(jù)區(qū)203例如是由一些深色和淺色的信息單元組成的,分別表示二進(jìn)制的I或O。數(shù)據(jù)區(qū)203的位置是由二維碼模板所決定的,而二維碼模板編號(hào)例如編碼在控制區(qū)202中。數(shù)據(jù)區(qū)203的所有信息單元,表示了包含糾錯(cuò)編碼的M個(gè)字節(jié)的二進(jìn)制數(shù)據(jù)。
[0082]數(shù)據(jù)區(qū)203中的數(shù)據(jù),例如是二維碼所代表的原始信息(例如網(wǎng)址等)的二進(jìn)制編碼。還可以在二進(jìn)制編碼上進(jìn)行數(shù)據(jù)壓縮和加密。
[0083]本公開提供的二維碼,例如由定位符201、控制區(qū)202、數(shù)據(jù)區(qū)203、畫布區(qū)204、間隔區(qū)205、206組成。而間隔區(qū)205、206例如包括了定位間隔區(qū)、畫布間隔區(qū)、外部間隔區(qū)。該二維碼可定義出大量不同形狀、不同的信息量、不同畫布大小和不同畫面位置的二維碼模板,并可以控制信息糾錯(cuò)編碼的糾錯(cuò)等級(jí),可控制信息的壓縮方法,可控制信息的加密方法。具體的形狀、信息量、畫布大小位置、信息壓縮和加密方法,可以根據(jù)應(yīng)用需求進(jìn)行配置。配置的信息例如保存在控制區(qū)202中。
[0084]在解碼時(shí),例如可以根據(jù)定位符201對(duì)二維碼進(jìn)行快速地識(shí)別和定位,然后解讀出例如控制區(qū)202中的配置信息,獲得例如二維碼模板,從而動(dòng)態(tài)地對(duì)二維碼進(jìn)行解碼。
[0085]具體來說,例如本公開的二維碼的組成如下:
[0086]1.定位符201:3個(gè)“回”字形的定位符201,每個(gè)回字的大小是7*7個(gè)點(diǎn)陣元素,其中橫豎的筆畫寬度都是一個(gè)點(diǎn)陣元素。從橫向(豎向)看,回字都是7行(列),7行(列)的黑白寬度(高度)比例為:(參見圖10);
[0087]第一行:黑7
[0088]第二行:黑1:白5:黑I
[0089]第三行:黑1:白1:黑3:白1:黑I
[0090]第四行:黑1:白!:黑!:白!:黑!:白!:黑!
[0091]第五行:黑1:白【:黑3:白1:黑I
[0092]第六行:黑1:白5:黑I
[0093]第七行:黑7
[0094]使用“回”字型定位符是為了在機(jī)器識(shí)別時(shí)快速與其他流行的二維碼區(qū)分開來,同時(shí)人眼也可以直觀地分辨出該型的二維碼。
[0095]但是,應(yīng)理解的是本公開中的“回”字型符可以在技術(shù)上略做改動(dòng),完全可以使用其它的符號(hào)作為定位符,也可能滿足與其他二維碼快速區(qū)分的要求。
[0096]2.控制區(qū)202:控制區(qū)202通常拆分成多個(gè)部分,分散在定位符201附近??刂茀^(qū)202包含的字節(jié)數(shù)和具體的位置,可以根據(jù)實(shí)際的需要進(jìn)行調(diào)整。
[0097]例如,圖11展示了一個(gè)以60位碼長(zhǎng)的二進(jìn)制數(shù)表示的控制區(qū)??刂茀^(qū)位置以相對(duì)于定位符來表示。圖11同時(shí)編制了一種編碼序列。控制區(qū)點(diǎn)陣中每個(gè)點(diǎn),在數(shù)字上對(duì)應(yīng)一個(gè)比特,在圖形上對(duì)應(yīng)于一個(gè)深色或淺色的方塊。在圖形上的深淺色方塊解碼為比特之后,(解碼過程例如可以參見二值化步驟),點(diǎn)陣中相應(yīng)位置的比特,按從右到左,從上到下的順序串接為一個(gè)60位碼長(zhǎng)的二進(jìn)制數(shù)字。
[0098]控制區(qū)202包含二維碼的配置信息,例如包括:
[0099]I) 二維碼模板編號(hào):二維碼模板定義了一個(gè)二維碼的形狀、大小、數(shù)據(jù)區(qū)、畫布區(qū)的位置和大小,還可以定義控制區(qū)和間隔區(qū)的位置和大小。
[0100]圖2展示了一個(gè)二維碼模板的實(shí)例。其中,二維碼模板例如存儲(chǔ)在模板數(shù)據(jù)源中,通過二維碼模板編號(hào)檢索到一套二維碼模板。模板數(shù)據(jù)源可以是數(shù)據(jù)庫、磁盤文件或云存儲(chǔ)等任意的存儲(chǔ)空間。二維碼模板例如是一個(gè)數(shù)字點(diǎn)陣,模板規(guī)定了點(diǎn)陣的大小,以及點(diǎn)陣中每個(gè)點(diǎn)的功能,即每個(gè)點(diǎn)是屬于或不屬于二維碼的,是屬于二維碼中定位符、控制區(qū)、間隔區(qū)、數(shù)據(jù)區(qū)還是畫布區(qū)。
[0101]具體來說,二維碼模板例如可以用一個(gè)N*M的二維數(shù)組來表示N*M的點(diǎn)陣,數(shù)組的每個(gè)元素用3個(gè)bit的代碼來表示點(diǎn)的功能,如下表I所示:
[0102]表I
[0103]點(diǎn)的功能模板中元素的二進(jìn)制代碼
[0104]不屬于二維碼 000
[0105]201 定位區(qū)001
[0106]202 控制區(qū)010
[0107]203 數(shù)據(jù)區(qū)011
[0108]204 畫布區(qū)100
[0109]205/206 間隔區(qū) 101
[0110]根據(jù)實(shí)際需要,二維碼模板編號(hào)可以是從6位到18位的比特,編碼容量為64個(gè)到256K個(gè)二維碼模板。
[0111]2)掩碼編號(hào):一個(gè)掩碼定義了一套對(duì)數(shù)據(jù)區(qū)編碼進(jìn)行轉(zhuǎn)換計(jì)算的方法。通過對(duì)數(shù)據(jù)區(qū)編碼進(jìn)行特定的轉(zhuǎn)換計(jì)算,可以避免數(shù)據(jù)區(qū)中出現(xiàn)影響到解碼的排列組合,比如出現(xiàn)了與定位符相同的圖案。
[0112]第一個(gè)轉(zhuǎn)換計(jì)算的例子是隔行取反,即對(duì)數(shù)據(jù)區(qū)中所有偶數(shù)行(或奇數(shù)行)執(zhí)行I/O的取反運(yùn)算。
[0113]第二個(gè)例子是隔列取反。
[0114]根據(jù)實(shí)際需要,掩碼編號(hào)可以是I位到3位比特,可以定義2-8種轉(zhuǎn)換計(jì)算的方法。
[0115]在解碼時(shí),根據(jù)掩碼編號(hào),使用相同的轉(zhuǎn)換計(jì)算,就可以去除掩碼,得到原先的數(shù)據(jù)。
[0116]3)數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào):定義了對(duì)數(shù)據(jù)區(qū)編碼的糾錯(cuò)等級(jí)。
[0117]數(shù)據(jù)區(qū)的數(shù)據(jù)信息例如使用Reed-Solomon糾錯(cuò)編碼算法來計(jì)算糾錯(cuò)碼。不同糾錯(cuò)等級(jí)提供了不同的糾錯(cuò)能力,如下表2所示。
[0118]表2
[0119]糾錯(cuò)等級(jí)糾錯(cuò)能力
[0120]I7%
[0121]2 15%
[0122] 3 25%
[0123]430%
[0124]數(shù)據(jù)區(qū)的長(zhǎng)度是由二維碼模板規(guī)定的,由數(shù)據(jù)區(qū)長(zhǎng)度和糾錯(cuò)等級(jí),可以計(jì)算出可糾錯(cuò)字節(jié)數(shù)、糾錯(cuò)碼長(zhǎng)度和有效數(shù)據(jù)長(zhǎng)度。由糾錯(cuò)碼長(zhǎng)度和有效數(shù)據(jù)長(zhǎng)度,可以使用例如Reed-So 1mon糾錯(cuò)算法計(jì)算出數(shù)據(jù)區(qū)的糾錯(cuò)碼。
[0125]以圖2所示的二維碼模板為例,數(shù)據(jù)區(qū)是33個(gè)字節(jié),第3個(gè)糾錯(cuò)等級(jí)要求25%糾錯(cuò)能力,則可知9是最小的整數(shù),滿足9 / 33 >= 25%,因此可糾錯(cuò)字節(jié)數(shù)為9。糾錯(cuò)編碼字節(jié)錯(cuò)=可糾錯(cuò)字節(jié)數(shù)* 2,即需要18個(gè)字節(jié)的糾錯(cuò)編碼。有效數(shù)據(jù)長(zhǎng)度=數(shù)據(jù)區(qū)長(zhǎng)度-糾錯(cuò)編碼長(zhǎng)度,即有15個(gè)字節(jié)的有效數(shù)據(jù)長(zhǎng)度。
[0126]圖2所示的二維碼模板,在各個(gè)糾錯(cuò)等級(jí)下的計(jì)算結(jié)果例如為,如下表3所示:
[0127]表3
[0128]糾錯(cuò)等級(jí)數(shù)據(jù)區(qū)長(zhǎng)度有效數(shù)據(jù)長(zhǎng)度糾錯(cuò)編碼字節(jié)數(shù)可糾錯(cuò)字節(jié)數(shù)糾錯(cuò)能力
[0129]I 33 27 6 3 9%
[0130]2 33 23 10 5 15%
[0131]3 33 15 18 9 27%
[0132]4 33 11 22 11 33%
[0133]數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)例如占用2個(gè)比特。
[0134]4)數(shù)據(jù)壓縮方法編號(hào):定義了對(duì)數(shù)據(jù)區(qū)203編碼的壓縮方法。
[0135]數(shù)據(jù)壓縮方法編號(hào)指定了是否對(duì)數(shù)據(jù)進(jìn)行壓縮,以及使用哪種壓縮方法來壓縮數(shù)據(jù)。數(shù)據(jù)壓縮方法可以是任意公開或未公開的壓縮方法。比如Huffman編碼。
[0136]數(shù)據(jù)壓縮方法編號(hào)例如占用2至5個(gè)比特。
[0137]5)數(shù)據(jù)加密方法編號(hào):定義了對(duì)數(shù)據(jù)區(qū)203編碼的加密方法。
[0138]數(shù)據(jù)加密方法編號(hào)指定了是否對(duì)數(shù)據(jù)進(jìn)行加密,以及使用哪種加密方法來加密數(shù)據(jù)。數(shù)據(jù)加密方法可以是任意公開或未公開的加密方法。比如DES或RSA算法。
[0139]數(shù)據(jù)加密方法編號(hào)例如占用2至5個(gè)比特。
[0140]6)控制區(qū)的糾錯(cuò)碼:對(duì)控制區(qū)202編碼計(jì)算得到糾錯(cuò)碼。
[0141]控制區(qū)的有效控制數(shù)據(jù),例如包括二維碼模板編號(hào)、掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào),串接一起一共13到33個(gè)比特,控制區(qū)中剩余47到27個(gè)比特作為糾錯(cuò)碼。有效控制數(shù)據(jù)例如通過BCH編碼算法計(jì)算得到控制區(qū)的糾錯(cuò)碼。
[0142]3.數(shù)據(jù)區(qū)203:
[0143]控制區(qū)中的二維碼模板編號(hào)指定了一個(gè)二維碼模板,在二模碼模板中,定義了數(shù)據(jù)區(qū)由點(diǎn)陣上哪些位置的點(diǎn)所組成。將所有這些組成數(shù)據(jù)區(qū)的點(diǎn)所代表的0/1按從右到左、從上到下的順序串接成一串二進(jìn)制數(shù)字,就構(gòu)成了完整的數(shù)據(jù)區(qū)的編碼。
[0144]數(shù)據(jù)區(qū)中的原始信息例如是內(nèi)容的二進(jìn)制編碼。本公開并不限定原始信息進(jìn)行二進(jìn)制編碼的方式。原始信息可以是數(shù)字、各國(guó)文字、或是多媒體等,其可以是所有二進(jìn)制信息的混合,而且可以直接進(jìn)行二進(jìn)制編碼。然后二進(jìn)制的原始信息通過壓縮、加密、糾錯(cuò)碼計(jì)算和掩碼計(jì)算一系列的步驟,最終得到的一串二進(jìn)制數(shù)字,構(gòu)成了完整的數(shù)據(jù)區(qū)的數(shù)據(jù)信息(例如數(shù)據(jù)編碼)。
[0145]數(shù)據(jù)區(qū)中的原始信息也可以是一個(gè)網(wǎng)站URL,作為大量、實(shí)時(shí)信息的索引。應(yīng)用程序解碼得到URL后,可以使用URL訪問網(wǎng)站得到大量的、實(shí)時(shí)更新的信息。
[0146]定位符、控制區(qū)、數(shù)據(jù)區(qū)一起構(gòu)成了二維碼的全部編碼,在圖像中,二維碼點(diǎn)陣中的每個(gè)二值(1/0)由一個(gè)邊長(zhǎng)為D的方塊表示,以深色、淺色分別表示1、0,深色、淺色都可以是彩色。
[0147]4.畫布區(qū)204。
[0148]控制區(qū)中的二維碼模板編號(hào)指定了一個(gè)二維碼模板,在二模碼模板中,定義了畫布區(qū)的位置和大小形狀。畫布區(qū)是用來置入圖片、文字信息的區(qū)域。只要圖片、文字中沒有出現(xiàn)可能干擾到數(shù)據(jù)解碼的圖案,任何圖片、文字或組合都可以置入到畫布區(qū)中。
[0149]在畫布區(qū)中要避免出現(xiàn)的干擾圖案,主要是要避免出現(xiàn)例如三個(gè)大小相同、且構(gòu)成一個(gè)直角三角形的回字形圖案。畫布區(qū)中如果出現(xiàn)這樣的圖案,將可能誤導(dǎo)解碼。
[0150]5.定位間隔區(qū)205:“回”字形定位符四周的空白,寬度為一個(gè)點(diǎn)陣基本元素。
[0151]6.數(shù)據(jù)間隔區(qū)206:這是數(shù)據(jù)區(qū)與畫布區(qū)、數(shù)據(jù)區(qū)與二維碼外部之間,寬度為一個(gè)點(diǎn)陣元素的空白。
[0152]具體實(shí)施中,本公開中實(shí)施例的二維碼,對(duì)應(yīng)于不同的應(yīng)用,二維碼模板、加密算法,壓縮算法,糾錯(cuò)編碼算法、糾錯(cuò)等級(jí)、掩碼,以及嵌入的圖片都可以設(shè)定為不一樣的數(shù)值,以滿足不同的需要。并可以根據(jù)不同的需求將本公開的二維碼設(shè)定為一種公開的可以滿足廣大需求的如QR碼和DM碼一樣的公開的二維碼(公碼),也可以設(shè)定為不公開其加密算法或加密和解密參數(shù)的非公開二維碼(私碼)。
[0153]本公開各實(shí)施例的二維碼的主要優(yōu)點(diǎn):
[0154]1.普通的二維碼,使用固定的或規(guī)則的形狀和尺寸,而本公開各實(shí)施例所公開的二維碼的完全可以是不規(guī)則的形狀和尺寸。
[0155]2.本公開各實(shí)施例的二維碼,可以嵌入大比例的圖像,而不損害二維碼的糾錯(cuò)能力,可以更有效地設(shè)計(jì)出包含清晰圖像的小型、微型二維碼。
[0156]3.本公開各實(shí)施例的二維碼,數(shù)據(jù)可以加密,而加密方法可以是公開的加密方法,比如DES,RSA等,或者使用定制的私有加密方法。
[0157]本公開各實(shí)施例的二維碼可以應(yīng)用于以下各個(gè)領(lǐng)域,但并不局限于這些領(lǐng)域:
[0158]1.防偽
[0159]2.防竄和物流管理
[0160]3.移動(dòng)互聯(lián)網(wǎng)。
[0161][可嵌入大比例圖形的二維碼的編碼方法和設(shè)備]
[0162]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼的編碼方法,包括:
[0163]選擇二維碼模板:所述二維碼模板包括關(guān)于所述二維碼的布局信息的數(shù)據(jù)點(diǎn)陣,選擇的二維碼模板要滿足:所述布局信息定義的定位符、數(shù)據(jù)區(qū)和控制區(qū)不會(huì)覆蓋到原始圖片在畫布區(qū)所要展示的內(nèi)容,并且所述數(shù)據(jù)區(qū)能夠容納將要編碼到所述二維碼中的最大編碼長(zhǎng)度;
[0164]數(shù)據(jù)區(qū)編碼:根據(jù)所述布局信息中關(guān)于所述數(shù)據(jù)區(qū)的定義將所述數(shù)據(jù)區(qū)的數(shù)據(jù)信息填充到所述數(shù)據(jù)點(diǎn)陣,所述數(shù)據(jù)信息是由所述二維碼代表的原始信息經(jīng)編碼以及以下各項(xiàng)中的至少一項(xiàng)后形成的:壓縮、加密、糾錯(cuò)碼計(jì)算、以及掩碼計(jì)算;
[0165]控制區(qū)編碼:根據(jù)所述布局信息中關(guān)于所述控制區(qū)的定義將二維碼模板編號(hào)、以及以下各項(xiàng)中的至少一項(xiàng)填充到所述數(shù)據(jù)點(diǎn)陣:掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào)、以及控制區(qū)糾錯(cuò)碼;
[0166]生成二維碼:根據(jù)所述布局信息中關(guān)于所述定位符和所述間隔區(qū)的定義將所述定位符和所述間隔區(qū)的編碼填充到所述數(shù)據(jù)點(diǎn)陣,并將所述數(shù)據(jù)點(diǎn)陣轉(zhuǎn)換為模板圖片,然后將所述模板圖片疊加到所述原始圖片上,以形成所述可嵌入大比例圖形的二維碼。
[0167]根據(jù)本公開的一個(gè)實(shí)施方式,例如可以提供了一種可嵌入大比例圖形的二維碼的編碼方法,包括:
[0168]步驟1.獲得要合成到二維碼中的圖片文件;
[0169]步驟2.對(duì)原始圖片進(jìn)行掃描檢查,找出可能干擾解碼的圖案,具體的過程如下:
[0170]a)圖像的二值化處理:將彩色圖像轉(zhuǎn)化為灰度圖像,每個(gè)點(diǎn)以灰度值O到255來表示,再根據(jù)灰度值的分布找出合適的閥值,將每個(gè)點(diǎn)轉(zhuǎn)換為I或O兩個(gè)值;
[0171]b)圖像的干擾圖案檢測(cè):在二值化處理后的圖像中,找出可能被識(shí)別為“回”字型定位符的圖案;
[0172]步驟3.選擇數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào),并根據(jù)需要選擇是否對(duì)數(shù)據(jù)加密、壓縮以及數(shù)據(jù)加密、壓縮的方式;
[0173]步驟4.選擇合適的二維碼模板;二維碼模板要滿足:
[0174]a)定位區(qū)、數(shù)據(jù)區(qū)、間隔區(qū)不會(huì)覆蓋到原始圖片所要展現(xiàn)的主要內(nèi)容;
[0175]b)數(shù)據(jù)區(qū)能夠容納將要編碼到二維碼中的最大編碼長(zhǎng)度;
[0176]步驟5.原始信息直接進(jìn)行二進(jìn)制編碼,作為二維碼原始數(shù)據(jù),并根據(jù)是否選擇對(duì)數(shù)據(jù)加密、壓縮而對(duì)二維碼原始數(shù)據(jù)進(jìn)行加密、壓縮;
[0177]步驟6.數(shù)據(jù)打包:在數(shù)據(jù)信息前面加上數(shù)據(jù)信息的長(zhǎng)度信息,后面填充上任意固定數(shù)據(jù),使編碼數(shù)據(jù)長(zhǎng)度等于規(guī)定的碼字總長(zhǎng)度;
[0178]步驟7.計(jì)算數(shù)據(jù)糾錯(cuò)碼:對(duì)步驟6的結(jié)果計(jì)算糾錯(cuò)碼,將糾錯(cuò)碼放在有效數(shù)據(jù)后面,構(gòu)成了全部數(shù)據(jù)區(qū)數(shù)據(jù);
[0179]步驟8.填充數(shù)據(jù)區(qū):將數(shù)據(jù)區(qū)數(shù)據(jù)的二進(jìn)制碼,按二維碼模板中數(shù)據(jù)區(qū)的位置定義,逐位,按從右到左,從上到下的順序填充到點(diǎn)陣中的數(shù)據(jù)區(qū);
[0180]步驟9.加上掩碼:判斷步驟8生成的點(diǎn)陣中,數(shù)據(jù)區(qū)是否出現(xiàn)可能干擾到解碼的圖案,并使用掩碼,對(duì)點(diǎn)陣進(jìn)行轉(zhuǎn)換運(yùn)算以消除干擾圖案;
[0181]步驟10.生成控制區(qū)數(shù)據(jù):將二維碼模板編號(hào)、掩碼編號(hào)、糾錯(cuò)等級(jí)編號(hào)、壓縮方法編號(hào)、加密方法編號(hào),按順序串接到一起,組成了控制區(qū)的有效數(shù)據(jù);
[0182]步驟11.計(jì)算控制區(qū)糾錯(cuò)碼:對(duì)控制區(qū)的有效數(shù)據(jù)計(jì)算出糾錯(cuò)碼,放在有效數(shù)據(jù)后面,構(gòu)成了全部控制區(qū)數(shù)據(jù);
[0183]步驟12.將控制區(qū)數(shù)據(jù),按二維碼模板中的定義,填充到點(diǎn)陣中的控制區(qū);
[0184]步驟13.按二維碼模板中的定義,將固定的定位符,填充到點(diǎn)陣中的定位區(qū);
[0185]步驟14.將點(diǎn)陣轉(zhuǎn)換為二維碼圖片,并將二維碼圖片疊加到原始圖片上,形成完整的可嵌入大比例圖形的二維碼。
[0186]例如,本公開可嵌入大比例圖形的二維碼的解碼方法,可以包括如下具體步驟:
[0187]1.獲得(例如客戶給出)要合成到二維碼中的圖片文件;
[0188]2.對(duì)原始圖片(例如使用開發(fā)的計(jì)算機(jī)軟件)進(jìn)行掃描檢查,找出可能干擾解碼的圖案。主要是要避免出現(xiàn)三個(gè)大小相同、且構(gòu)成一個(gè)直角三角形的回字形圖案。如果原始圖片符合條件,可以進(jìn)入下一個(gè)步驟。否則,客戶根據(jù)檢查的結(jié)果修改圖片。掃描檢查具體包括兩個(gè)子步驟:
[0189]a)圖像的二值化處理:將彩色圖像轉(zhuǎn)化為灰度圖像,每個(gè)點(diǎn)以灰度值0到255來表示。從中找出最大的灰度值和最小的灰度值,再根據(jù)灰度值的分布找出合適的閥值,將每個(gè)點(diǎn)轉(zhuǎn)換為1或〇兩個(gè)值。這一步驟和后文的解碼過程中的第2個(gè)步驟“圖像的二值化處理”是基本相同的,這里先不展開。[〇19〇] b)圖像的干擾圖案檢測(cè):在二值化處理后的圖像點(diǎn)陣中,找出三個(gè)大小相同、且構(gòu)成一個(gè)直角三角形的回字形圖案。這一步驟和后文的解碼過程中的第3個(gè)步驟“定位符的檢測(cè)”是基本相同的,這里先不展開。
[0191]3.選擇數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)。數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)是要根據(jù)二維碼的大小、印刷(顯示)質(zhì)量、印刷(顯示)媒介、使用場(chǎng)合等具體的應(yīng)用需求來選擇的。一般來說,二維碼標(biāo)簽越小、印刷質(zhì)量越差、使用場(chǎng)合較為復(fù)雜,就需要更高的糾錯(cuò)等級(jí)。
[0192]4.選擇數(shù)據(jù)加密、壓縮的方式。根據(jù)應(yīng)用的具體需求來選擇。[〇193]5.挑選合適的二維碼模板。二維碼模板要滿足于:
[0194]a)定位區(qū)、數(shù)據(jù)區(qū)、間隔區(qū)不會(huì)覆蓋到原始圖片所要展現(xiàn)的主要內(nèi)容
[0195]b)數(shù)據(jù)區(qū)可以容納將要編碼到二維碼中的最大編碼長(zhǎng)度。原始信息量可以例如從需求調(diào)研中得到,然后可以根據(jù)數(shù)據(jù)加密、壓縮方式計(jì)算出經(jīng)過加密、壓縮處理后的編碼長(zhǎng)度,再根據(jù)數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào),計(jì)算出需要保存的最大編碼長(zhǎng)度。
[0196]確定了二維碼模板,則數(shù)據(jù)區(qū)的長(zhǎng)度就確定了。同時(shí)根據(jù)數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào),可以計(jì)算得出有效數(shù)據(jù)長(zhǎng)度(計(jì)算方法例如參見上文提到的“數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)編號(hào)”)。
[0197]6.原始信息直接進(jìn)行二進(jìn)制編碼,作為二維碼原始數(shù)據(jù)。
[0198]7.對(duì)原始數(shù)據(jù)進(jìn)行加密,這一步是可選步驟;[〇199]8.對(duì)加密數(shù)據(jù)進(jìn)行壓縮,這一步是可選步驟。
[0200]9.數(shù)據(jù)打包:計(jì)算壓縮數(shù)據(jù)的編碼長(zhǎng)度,以字節(jié)數(shù)表示,放置在壓縮數(shù)據(jù)前面。如果數(shù)據(jù)區(qū)的總長(zhǎng)度不大于255個(gè)字節(jié),則數(shù)據(jù)長(zhǎng)度以1個(gè)字節(jié)表示。如果數(shù)據(jù)區(qū)的總長(zhǎng)度在 256-65535個(gè)字節(jié)之間,則數(shù)據(jù)長(zhǎng)度以2個(gè)字節(jié)表示,依此類推。
[0201]如果編碼長(zhǎng)度小于有效數(shù)據(jù)長(zhǎng)度,則在壓縮數(shù)據(jù)后面填滿任意固定數(shù)據(jù)。
[0202]10.計(jì)算數(shù)據(jù)糾錯(cuò)碼:對(duì)上一步的結(jié)果,例如用Reed-Solomon算法計(jì)算糾錯(cuò)碼,將糾錯(cuò)碼放在有效數(shù)據(jù)后面,構(gòu)成了全部數(shù)據(jù)區(qū)數(shù)據(jù)。[〇2〇3]11.填充數(shù)據(jù)區(qū):將數(shù)據(jù)區(qū)數(shù)據(jù)的二進(jìn)制碼,按二維碼模板中數(shù)據(jù)區(qū)的位置定義,逐位,按從右到左,從上到下的順序填充到點(diǎn)陣中的數(shù)據(jù)區(qū)。
[0204]12.加上掩碼:判斷上一步生成的點(diǎn)陣中,數(shù)據(jù)區(qū)是否出現(xiàn)可能干擾到解碼的圖案,比如出現(xiàn)了“回”字形的圖案。使用掩碼,對(duì)點(diǎn)陣進(jìn)行轉(zhuǎn)換運(yùn)算,可以消除干擾圖案。
[0205]13.生成控制區(qū)數(shù)據(jù):將二維碼模板編號(hào)、掩碼編號(hào)、糾錯(cuò)等級(jí)編號(hào)、壓縮方法編號(hào)、加密方法編號(hào),按順序串接到一起,組成了控制區(qū)的有效數(shù)據(jù)。
[0206]14.計(jì)算控制區(qū)糾錯(cuò)碼:對(duì)控制區(qū)的有效數(shù)據(jù)例如用BCH算法計(jì)算出糾錯(cuò)碼,放在有效數(shù)據(jù)后面,構(gòu)成了全部控制區(qū)數(shù)據(jù)。
[0207]15.將控制區(qū)數(shù)據(jù),按二維碼模板中的定義,填充到點(diǎn)陣中的控制區(qū)。[〇2〇8]16.按二維碼模板中的定義,將固定的定位符,填充到點(diǎn)陣中的定位區(qū)。[〇2〇9]17.將點(diǎn)陣轉(zhuǎn)換為二維碼圖片。點(diǎn)陣中的每個(gè)點(diǎn)按1或0,分別映射為圖片中一個(gè)長(zhǎng)寬為m*n像素的深色或淺色方塊。深色方塊對(duì)應(yīng)的灰度值應(yīng)大于畫布區(qū)中像素的最大灰度值,淺色方塊對(duì)應(yīng)的灰度值應(yīng)小于畫布區(qū)中像素的最小灰度值。
[0210]方塊的長(zhǎng)度為[〇211] m =二維碼的印刷(顯示)寬度/點(diǎn)陣的列數(shù)*印刷(顯示沖每單位長(zhǎng)度的像素?cái)?shù)[〇212]方塊的寬度為[〇213] n =二維碼的印刷(顯示)高度/點(diǎn)陣的行數(shù)*印刷(顯示沖每單位寬度的像素?cái)?shù)
[0214]18.將二維碼圖片疊加到原始圖片上,形成完整的嵌入圖片的二維碼。
[0215]舉例來說,如圖8所示,圖8是本發(fā)明所公開的二維碼的編碼流程,對(duì)本二維碼的編碼過程進(jìn)行說明,其詳細(xì)說明如下:
[0216]1.檢測(cè)準(zhǔn)備要嵌入的原始圖片。以圖3為例,由檢測(cè)軟件對(duì)原始圖像進(jìn)行二值化處理,然后檢測(cè)圖像,找出可能被識(shí)別為“回”字型定位符的圖案。如果存在這樣的圖案,標(biāo)識(shí)出來,交給美工修改圖片。[〇217]2.選擇數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)。在示例中使用第1個(gè)糾錯(cuò)等級(jí),糾錯(cuò)能力為9%。
[0218]3.選擇數(shù)據(jù)加密、壓縮的方式。在示例中依簡(jiǎn)化介紹的目的,不使用加密和壓縮。 使用或不使用加密、壓縮,或使用何種方式的加密、壓縮方式,不影響編碼解碼的流程。
[0219]4.挑選一個(gè)二維碼模板。根據(jù)原始圖片的特征,以及需要的信息容量和糾錯(cuò)等級(jí), 人工選擇一個(gè)合適的二維碼模板。示例中使用圖2所示的二維碼模板。
[0220]由二維碼模板可知,數(shù)據(jù)區(qū)長(zhǎng)度為33個(gè)字節(jié),則可糾錯(cuò)字節(jié)數(shù)為最小的整數(shù)n,滿足n / 33彡9%,可知n = 3。因此糾錯(cuò)編碼字節(jié)數(shù)=n * 2 = 6個(gè)字節(jié),有效數(shù)據(jù)長(zhǎng)度= 數(shù)據(jù)區(qū)長(zhǎng)度-糾錯(cuò)編碼字節(jié)數(shù)=27個(gè)字節(jié)。
[0221]5.從原始信息讀取二進(jìn)制碼。示例中要編碼的原始信息為“可嵌入大比例圖形的二維碼”,其Unicode字符集下的二進(jìn)制碼為(EF 53 4C ro 65 51 27 59 D4 6B 8B 4F FE 56 62 5F 84 76 8C 4E F4 7E 01 78)16
[0222]6.加密。讀入原始信息,根據(jù)參數(shù)對(duì)信息進(jìn)行可選的加密處理。本示例不需要加您I_Lj 〇
[0223]7.壓縮。對(duì)上一步的結(jié)果進(jìn)行可選的壓縮處理。本示例不需要數(shù)據(jù)壓縮。
[0224]8.數(shù)據(jù)打包。把上一步的結(jié)果的字節(jié)數(shù)放在包的最前面,然后放入上一步的結(jié)果數(shù)據(jù),最后填充上一串0或者其他任意數(shù)據(jù),使數(shù)據(jù)包長(zhǎng)度達(dá)到規(guī)定長(zhǎng)度。
[0225]本字例數(shù)據(jù)的字節(jié)長(zhǎng)度是24,表示長(zhǎng)度的包頭本身再占用1個(gè)字節(jié),包尾補(bǔ)上2個(gè)字節(jié)的0,湊足27個(gè)字節(jié)的有效數(shù)據(jù)長(zhǎng)度。因此數(shù)據(jù)包為
[0226](18 EF 53 4C 5D 65 51 27 59 D4 6B 8B 4F FE 56 62 5F 84 76 8C 4E F4 7E 01 78 00 00)16
[0227]9.計(jì)算糾錯(cuò)碼。。對(duì)上一步結(jié)果的數(shù)據(jù)包,用BCH算法計(jì)算出6個(gè)字節(jié)的糾錯(cuò)碼(BD C4 55 61 79 E6) 16,將糾錯(cuò)碼加到有效數(shù)據(jù)后面,得
[0228](18 EF 53 4C 5D 65 51 27 59 D4 6B 8B 4F FE 56 62 5F 84 76 8C 4E F4 7E 01 78 00 00 BD C4 55 61 79 E6)16
[0229]10.生成初步數(shù)據(jù)點(diǎn)陣。按模板中定義的數(shù)據(jù)區(qū)位置,將上一步數(shù)據(jù)的二進(jìn)制值是:
[0230](000110001110111101010011010011000101110101100101010100010010011101011001110101000110101110001011010011111111111001010110011000100101111110000100011101101000110001001110111101000111111000000001011110000000000000000000101111011100010001010101011000010111100111100110)2
[0231]將該值逐位,按從右到左,從上到下的順序填充到點(diǎn)陣中的數(shù)據(jù)區(qū)。結(jié)果見圖13。
[0232]11.加上掩碼。在上一步生成的數(shù)據(jù)點(diǎn)陣中,判斷數(shù)據(jù)區(qū)是否出現(xiàn)了可能干擾到解碼的圖案,比如出現(xiàn)了“回”字的圖案的點(diǎn)陣。如果出現(xiàn)了,在預(yù)定義的若干種掩碼中,選擇結(jié)果最優(yōu)的一種,對(duì)初步數(shù)據(jù)點(diǎn)陣應(yīng)用掩碼進(jìn)行轉(zhuǎn)換,消除干擾圖案。
[0233]由于示例的數(shù)據(jù)點(diǎn)陣中不出現(xiàn)“回”字形的圖案,不需要在數(shù)據(jù)上加掩碼。
[0234]假如出現(xiàn)了“回”字形圖案,選擇掩碼運(yùn)算來消除干擾圖案。第一個(gè)掩碼運(yùn)算方法的例子是隔行取反,即對(duì)數(shù)據(jù)區(qū)中所有偶數(shù)行(或奇數(shù)行)執(zhí)行1/0的取反運(yùn)算。
[0235]第二個(gè)例子是隔列取反。選擇不同的掩碼運(yùn)算方法進(jìn)行試算,如果試算的結(jié)果中不出現(xiàn)干擾圖案,那么就可以使用這個(gè)掩碼。
[0236]12.生成控制區(qū)數(shù)據(jù)。將前面步驟中確定的二維碼模板編號(hào)、糾錯(cuò)等級(jí)編號(hào)、掩碼編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào),串接起來組成控制區(qū)的有效數(shù)據(jù)。
[0237]在本例中,設(shè)二維碼模板編號(hào)為(0000 0001 1100)2,糾錯(cuò)等級(jí)編號(hào)為(00)2,掩碼編號(hào)為(000)2,壓縮方法編號(hào)為(000)2,加密方法編號(hào)為(0000)2,則控制區(qū)的有效數(shù)據(jù)為 (0000 0001 1100 0000 0000 0000)2即(01 C0 00)16。
[0238]13.計(jì)算控制區(qū)糾錯(cuò)碼。對(duì)控制區(qū)的有效數(shù)據(jù)用BCH算法計(jì)算出糾錯(cuò)碼,放在有效數(shù)據(jù)后面,構(gòu)成了全部控制區(qū)數(shù)據(jù)。
[0239]對(duì)控制區(qū)有效數(shù)據(jù)(01 C0 00)16用此11算法逐字節(jié)計(jì)算出每字節(jié)121^丨、總共 36bit的糾錯(cuò)碼,按順序串在一起,結(jié)果為(49 F2 37 00 0)16.將糾錯(cuò)碼加到控制區(qū)有效數(shù)據(jù)后面,為(01 C0 00 49 F2 37 00 0)16.構(gòu)成了全部控制區(qū)數(shù)據(jù)。[〇24〇]14.將控制區(qū)數(shù)據(jù),按二維碼模板中的定義的控制區(qū)位置,按從右到左,從上到下的順序,填充到點(diǎn)陣中的控制區(qū)。結(jié)果見圖14。
[0241]15.按二維碼模板中的定義,將固定的定位符,填充到點(diǎn)陣中的定位區(qū)。
[0242]16.將數(shù)據(jù)點(diǎn)陣轉(zhuǎn)換為二維碼圖案。點(diǎn)陣中的每個(gè)點(diǎn)按1或0,分別映射為圖片中一個(gè)長(zhǎng)寬為m*n像素的深色或淺色方塊。深色方塊對(duì)應(yīng)的灰度值應(yīng)大于畫布區(qū)中像素的最大灰度值,淺色方塊對(duì)應(yīng)的灰度值應(yīng)小于畫布區(qū)中像素的最小灰度值。在示例中深色塊RGB= (255,255,255),淺色塊RGB=(0,0,0),m = n = 5,在300DPI的輸出設(shè)備上,二維碼本身的邊長(zhǎng)為73 * 5/ 300217英寸?3.089厘米。
[0243]17.將二維碼圖案疊加到原始圖片中。形成完整的二維碼,輸出到文件或者屏幕、 打印機(jī)等外設(shè)上。結(jié)果見圖1的實(shí)例。
[0244]相應(yīng)地,根據(jù)本公開的一個(gè)方面,還提供了一種可嵌入大比例圖形的二維碼的編碼設(shè)備,被配置為執(zhí)行根據(jù)以上所述的可嵌入大比例圖形的二維碼的編碼方法;或者被配置為生成以上所述的可嵌入大比例圖形的二維碼。
[0245]例如,本公開的編碼設(shè)備可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置(包括個(gè)人計(jì)算機(jī)、桌面型計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持設(shè)備、多處理器系統(tǒng)、基于微處理器或者可編程的客戶電子裝置、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、寫字板、尋呼機(jī)、路由器、交換機(jī)等)的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,也可以在分布式系統(tǒng)環(huán)境中實(shí)踐,其中通過網(wǎng)絡(luò)鏈接(通過硬接線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路或者通過硬接線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)二者執(zhí)行任務(wù)。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備二者中。
[0246]例如,本公開的編碼設(shè)備可以實(shí)施為具有無線通信功能的移動(dòng)設(shè)備。然而,可以理解,這僅僅是示例性而非限制性的。其他類型的移動(dòng)終端也可以容易地采用本公開的實(shí)施方式,諸如便攜式數(shù)字助理(PDA)、尋呼機(jī)、移動(dòng)計(jì)算機(jī)、移動(dòng)電視、游戲設(shè)備、膝上型計(jì)算機(jī)、照相機(jī)、錄像機(jī)、GPS設(shè)備以及其他類型的語音和文本通信系統(tǒng)。諸如車載式移動(dòng)終端之類的固定式移動(dòng)終端同樣可以容易地使用本公開的實(shí)施方式。
[0247][可嵌入大比例圖形的二維碼的解碼方法和設(shè)備]
[0248]本公開的一個(gè)方面提供了一種可嵌入大比例圖形的二維碼的解碼方法,包括:
[0249]二維碼點(diǎn)陣轉(zhuǎn)換:采集所述可嵌入大比例圖形的二維碼的圖像并進(jìn)行二值化處理,然后在生成的二值化圖像中查找定位符,并根據(jù)所述定位符的位置將所述二值化圖像轉(zhuǎn)換為二維碼點(diǎn)陣;[〇25〇]控制區(qū)解碼:在所述二維碼點(diǎn)陣中讀取控制區(qū)編碼,并對(duì)所述控制區(qū)編碼進(jìn)行解碼以獲得所述控制區(qū)的配置信息,所述配置信息包括二維碼模板編號(hào),以及以下各項(xiàng)中的至少一項(xiàng):掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)等級(jí)編號(hào)、數(shù)據(jù)壓縮方法編號(hào)、數(shù)據(jù)加密方法編號(hào)、以及控制區(qū)糾錯(cuò)碼;
[0251]獲取二維碼模板:根據(jù)所述二維碼模板編號(hào),從數(shù)據(jù)源中獲得所述二維碼使用的二維碼模板;
[0252]數(shù)據(jù)區(qū)解碼:根據(jù)所述二維碼模板關(guān)于數(shù)據(jù)區(qū)的定義,從所述二維碼點(diǎn)陣讀取所述數(shù)據(jù)區(qū)的數(shù)據(jù)信息,以獲得所述二維碼代表的原始信息。
[0253]根據(jù)本公開的一個(gè)實(shí)施方式,提供了一種可嵌入大比例圖形的二維碼的解碼方法,包括:
[0254]步驟1.圖像采集:通過圖像采集設(shè)備采集可嵌入大比例圖形的二維碼的圖像信號(hào),將采集到的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)輸出;
[0255]步驟2.圖像的二值化處理:將彩色圖像轉(zhuǎn)化為灰度圖像,每個(gè)點(diǎn)以灰度值0到255 來表示;再根據(jù)灰度值的分布找出合適的閥值,將每個(gè)點(diǎn)轉(zhuǎn)換為1或〇兩個(gè)值;
[0256]步驟3.定位符的檢測(cè):從二值化的圖像中,尋找三個(gè)“回”字型的定位符號(hào);如果無法找到,說明這幅圖像不是要解碼的二維碼;如果找到了三個(gè)“回”字型定位符,根據(jù)其相對(duì)位置,能夠找出對(duì)應(yīng)于左上角的定位符;
[0257]步驟4.轉(zhuǎn)換為二維碼點(diǎn)陣:找到了三個(gè)定位符,二維碼圖像的位置能夠確定,每個(gè)信息單元大小也能夠根據(jù)找到的定位符圖案來確定;使用圖形透視轉(zhuǎn)換方法,按信息單元的大小,將二值化圖像轉(zhuǎn)換為二維碼點(diǎn)陣;
[0258]步驟5.控制區(qū)信息讀取:在二維碼點(diǎn)陣中,控制區(qū)的位置是相對(duì)固定的,因此,從二維碼點(diǎn)陣中,能夠直接讀取控制區(qū)編碼;對(duì)控制區(qū)編碼進(jìn)行糾錯(cuò)解碼,得到控制區(qū)數(shù)據(jù), 包括了二維碼模板編號(hào)、掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)編號(hào)、壓縮方法編號(hào)和加密方法編號(hào);
[0259]步驟6.檢索二維碼模板:使用二維碼模板編號(hào),從模板數(shù)據(jù)源中檢索到二維碼模板數(shù)據(jù);[〇26〇]步驟7.消除數(shù)據(jù)區(qū)掩碼:從二維碼模板中,能夠得知數(shù)據(jù)區(qū)的位置,然后根據(jù)控制區(qū)中定義的掩碼編號(hào),用相應(yīng)的掩碼算法來消除數(shù)據(jù)區(qū)點(diǎn)陣中的掩碼;
[0261]步驟8.獲取數(shù)據(jù)區(qū)編碼:按數(shù)據(jù)區(qū)的位置,在二維碼點(diǎn)陣中讀取數(shù)據(jù)區(qū)編碼;
[0262]步驟9.數(shù)據(jù)區(qū)糾錯(cuò)解碼:按控制區(qū)中定義的數(shù)據(jù)糾錯(cuò)編號(hào)對(duì)數(shù)據(jù)區(qū)編碼進(jìn)行糾錯(cuò)解碼;
[0263]步驟10.數(shù)據(jù)解包:糾錯(cuò)解碼后的數(shù)據(jù)區(qū)編碼,從數(shù)據(jù)包中獲取到數(shù)據(jù)信息;
[0264]步驟11.信息解壓和解密:按控制區(qū)中定義的壓縮方法編號(hào)和加密方法編號(hào),對(duì)數(shù)據(jù)信息進(jìn)行解壓縮和解密,得到原始數(shù)據(jù)信息;如果在編碼的時(shí)候沒有進(jìn)行壓縮和加密,則該步驟能夠跳過;
[0265]步驟12.輸出解碼得到的原始數(shù)據(jù)信息。
[0266]例如,本公開的可嵌入大比例圖形的二維碼的解碼方法,可以包含以下具體步驟:
[0267]1.圖像采集:通過圖像采集設(shè)備采集二維碼圖像信號(hào),將采集到的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)輸出。
[0268]2.圖像的二值化處理:參考圖12,分兩步將數(shù)字彩色圖像轉(zhuǎn)化為1/0兩個(gè)值的點(diǎn)陣。
[0269]a)將數(shù)字彩色圖像轉(zhuǎn)化為灰度圖像,每個(gè)像素點(diǎn)以灰度值0到255來表示。
[0270]轉(zhuǎn)換的經(jīng)驗(yàn)公式為 Gray = (R*l%95 + G*38469 + B*7472) / ( 2 I6)
[0271]上述公式中,代入每個(gè)像素點(diǎn)的RecUGreeruBlue值,得到相應(yīng)的灰度值;[〇272] b)再根據(jù)灰度值的分布找出合適的閥值,將每個(gè)值為0到255的點(diǎn)轉(zhuǎn)換為1或0兩個(gè)值;
[0273] 該步驟例如可以將灰度圖像切隔為X * Y個(gè)小塊,每個(gè)小塊的大小為n * n,邊緣區(qū)域切割出來的小塊大小可以不足n * n。對(duì)每一個(gè)小塊中的像素點(diǎn),計(jì)算出灰度值分布的直方圖,找出直方圖中的兩個(gè)峰值。設(shè)灰度值較大的峰值為P1,相應(yīng)的灰度值為VI;灰度值較小的峰值為P2,相應(yīng)的灰度值為V2。然后在VI和V2之間找出谷值P3,相應(yīng)的灰度值V3,滿足V3與VI和V2盡量遠(yuǎn),同時(shí)P3盡量小兩個(gè)條件。經(jīng)驗(yàn)公式是
[0274]R = (V3 - VI) 2 * (V3 - V2) 2 * (P1- P3) * (P2 - P3)
[0275]即在VI和V2之間找到最小的R值,相應(yīng)的V3作為谷值。最后V3用作該小塊中的閥值,小塊中所有灰度值不大于V3的點(diǎn)轉(zhuǎn)換為1,灰度值大于V3的點(diǎn)轉(zhuǎn)換為0。
[0276]3.定位符的檢測(cè):從二值化的圖像中,尋找三個(gè)“回”字型的定位符。具體步驟例如可以是:
[0277]a)逐行檢查二值化的點(diǎn)陣,尋找符合黑白寬度比例為(黑1:白1:黑1: 白1:黑1:白1:黑1)的水平線段,得到中點(diǎn)C及線段長(zhǎng)度S1。然后以C點(diǎn)為中心檢測(cè)垂直方向和對(duì)角方向,如果垂直方向和對(duì)角方向都出現(xiàn)了以C點(diǎn)為中心的,符合一定黑白長(zhǎng)度比例(黑1:白1:黑1:白1:黑1:白1:黑1)的線段,并且垂直線段的長(zhǎng)度S2與S1相差10%以內(nèi),對(duì)角線段的長(zhǎng)度S3、S4與S1相差50%以內(nèi),則可認(rèn)為找到了一個(gè) “回”字形定位符號(hào),記下C點(diǎn)和線段長(zhǎng)度S,其中S= (SI + S2)/2;
[0278]b)在二值化圖像中繼續(xù)掃描,找到所有符合判斷條件的C和S;
[0279]c)如果最后找到的C少于3個(gè),則認(rèn)為這幅圖像不是本發(fā)明的二維碼。如果最后找到的C多于3個(gè),則挑選出其中S值最接近于S平均值的3個(gè)C點(diǎn);[〇28〇] d)挑選出來的3個(gè)點(diǎn),構(gòu)成了一個(gè)頂點(diǎn)為XYZ的三角形。找出三角形中最長(zhǎng)的一條邊,設(shè)為XZ,則Y點(diǎn)可對(duì)應(yīng)于二維碼中左上角的定位符中心,X點(diǎn)和Z點(diǎn)分別對(duì)應(yīng)于左下角和右上角的定位符中心。
[0281]4.轉(zhuǎn)換為二維碼點(diǎn)陣:按透視旋轉(zhuǎn)定律,使用透視變換方法,將二值圖像變換為透視二值圖像二維碼點(diǎn)陣。方法是:[0282 ] a)通過連接X點(diǎn)和Y點(diǎn)的輔助線,使用Br e s enham直線算法,計(jì)算出定位符的高度; [〇283] b)同理通過連接Y點(diǎn)和Z點(diǎn)的輔助線,計(jì)算出定位符的寬度;
[0284] c)點(diǎn)陣元素的邊長(zhǎng)D =(定位符高度+定位符寬度)/ 14
[0285](1)建立新的平面坐標(biāo),其中有乂’、¥’、2’三個(gè)點(diǎn),對(duì)應(yīng)于原乂、¥、2三個(gè)點(diǎn),而且父’ Y’與Y’Z’之間的夾角為直角。D(x,y)表示兩點(diǎn)之間的距離,則
[0286]D(X,,Y,)= D(X,Y) / D
[0287]D(Y,,Z,)= D(Y,Z) /D
[0288]e)使用透視變換方法,將對(duì)應(yīng)于點(diǎn)XYZ的二值圖像,轉(zhuǎn)換到對(duì)應(yīng)于點(diǎn)X’ Y’ Z’的二維碼點(diǎn)陣。
[0289]5.控制區(qū)信息讀取:在二維碼點(diǎn)陣中,控制區(qū)的位置是固定的,因此,可以從二維碼點(diǎn)陣中,直接讀取控制區(qū)編碼。對(duì)控制區(qū)編碼進(jìn)行BCH糾錯(cuò)解碼后,得到控制區(qū)的數(shù)據(jù),包括了二維碼模板編號(hào)、掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)編號(hào)、壓縮方法編號(hào)、加密方法編號(hào)。[〇29〇]6.檢索二維碼模板:使用二維碼模板編號(hào),從模板數(shù)據(jù)源中檢索到二維碼模板數(shù)據(jù)。模板數(shù)據(jù)源可以是數(shù)據(jù)庫、磁盤文件或云存儲(chǔ)等任意的存儲(chǔ)空間。
[0291]7.消除數(shù)據(jù)區(qū)掩碼:從二維碼模板中,可以得知數(shù)據(jù)區(qū)的位置。然后根據(jù)控制區(qū)中定義的掩碼編號(hào),用相應(yīng)的掩碼算法來消除數(shù)據(jù)區(qū)點(diǎn)陣中的掩碼。
[0292]8.獲取數(shù)據(jù)區(qū)編碼:按數(shù)據(jù)區(qū)的位置,在二維碼點(diǎn)陣中讀取數(shù)據(jù)區(qū)編碼。
[0293]9.數(shù)據(jù)區(qū)糾錯(cuò)解碼:按控制區(qū)中定義的數(shù)據(jù)糾錯(cuò)編號(hào)對(duì)數(shù)據(jù)區(qū)編碼進(jìn)行糾錯(cuò)解碼。
[0294]10.數(shù)據(jù)解包:糾錯(cuò)解碼后的數(shù)據(jù)區(qū)編碼,前面的1個(gè)或幾個(gè)字節(jié)(由數(shù)據(jù)區(qū)長(zhǎng)度決定),即是實(shí)際的數(shù)據(jù)字節(jié)數(shù)。從數(shù)據(jù)區(qū)編碼中讀出數(shù)據(jù)。
[0295]11.信息解壓:按控制區(qū)中定義的壓縮方法編號(hào),對(duì)數(shù)據(jù)進(jìn)行解壓縮。如果在編碼的時(shí)候沒有進(jìn)行壓縮,這一步可以跳過。
[0296]12.解密:按控制區(qū)中定義的加密方法編號(hào),對(duì)數(shù)據(jù)進(jìn)行解密。如果在編碼的時(shí)候沒有進(jìn)行加密,這一步可以跳過。
[0297]13.得到了編碼到二維碼中的原始二進(jìn)制信息。
[0298]舉例來說,如圖9所示,圖9是本發(fā)明所公開的二維碼的解碼流程,對(duì)本公開的二維碼的解碼過程進(jìn)行說明,其詳細(xì)說明如下:[〇299]1.圖像采集:通過圖像采集設(shè)備采集二維碼圖像信號(hào),將采集到的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),生成彩色圖像。以圖1為例,圖1是寬365個(gè)像素,高382個(gè)像素的圖像,這里用灰度圖進(jìn)行說明,但實(shí)際使用中可以使用彩色圖。
[0300]2.圖像的二值化處理:參考圖12,分兩步將數(shù)字彩色圖像轉(zhuǎn)化為1/0兩個(gè)值的點(diǎn)陣。
[0301]a)將數(shù)字彩色圖像轉(zhuǎn)化為灰度圖像,每個(gè)像素點(diǎn)以灰度值0到255來表示。
[0302]轉(zhuǎn)換的經(jīng)驗(yàn)公式為 Gray = (R*l%95 + G*38469 + B*7472) / ( 2 I6)[〇3〇3]上述公式中,代入每個(gè)像素點(diǎn)的RecUGreeruBlue值,得到相應(yīng)的灰度值。[〇3〇4] b)再根據(jù)灰度值的分布找出合適的閥值,將每個(gè)值為0到255的點(diǎn)轉(zhuǎn)換為1或0兩個(gè)值。
[0305] 該步驟例如可以將灰度圖像切隔為X * Y個(gè)小塊,每個(gè)小塊的大小為n * n,邊緣區(qū)域切割出來的小塊大小可以不足n * n。
[0306] 在本示例中,設(shè)n = 8,則X = 365 / 8 ?46,Y =382 / 8?48
[0307]對(duì)每一個(gè)小塊中的像素點(diǎn),計(jì)算出灰度值分布的直方圖,找出直方圖中的兩個(gè)峰值。設(shè)灰度值較大的峰值為P1,相應(yīng)的灰度值為VI;灰度值較小的峰值為P2,相應(yīng)的灰度值為V2。然后在VI和V2之間找出谷值P3,相應(yīng)的灰度值V3,滿足V3與VI和V2盡量遠(yuǎn),同時(shí)P3盡量小兩個(gè)條件。經(jīng)驗(yàn)公式是
[0308]R = (V3 - VI) 2 * (V3 - V2) 2 * (P1- P3) * (P2 - P3)[0309 ]即在V1和V2之間找到最小的R值,相應(yīng)的V3作為谷值。最后V3用作該小塊中的閥值,小塊中所有灰度值不大于V3的點(diǎn)轉(zhuǎn)換為1,灰度值大于V3的點(diǎn)轉(zhuǎn)換為0。[〇31〇]二值化的處理結(jié)果,例如參見圖15所示。[〇311]3.定位符的檢測(cè):從二值化的圖像中,尋找三個(gè)“回”字型的定位符號(hào)。
[0312] a)逐行檢查二值化的點(diǎn)陣,尋找符合黑白寬度比例為(黑1:白1:黑1: 白1:黑1:白1:黑1)的水平線段,得到中點(diǎn)C及線段長(zhǎng)度S1。然后以C點(diǎn)為中心檢測(cè)垂直方向和對(duì)角方向,如果垂直方向和對(duì)角方向都出現(xiàn)了以C點(diǎn)為中心的,符合一定黑白長(zhǎng)度比例(黑1:白1:黑1:白1:黑1:白1:黑1)的線段,并且垂直線段的長(zhǎng)度S2與S1相差10%以內(nèi),對(duì)角線段的長(zhǎng)度S3、S4與S1相差50%以內(nèi),則可認(rèn)為找到了一個(gè) “回”字形定位符號(hào),記下C點(diǎn)和線段長(zhǎng)度S,其中S= (SI + S2)/2;[〇313] b)在二值化圖像中繼續(xù)掃描,找到所有符合判斷條件的C和S;
[0314] c)如果最后找到的C少于3個(gè),則認(rèn)為這幅圖像不是本公開的二維碼。如果最后找到的C多于3個(gè),則挑選出其中S值最接近于S平均值的3個(gè)C點(diǎn);[〇315] d)挑選出來的3個(gè)點(diǎn),構(gòu)成了一個(gè)頂點(diǎn)為XYZ的三角形。找出三角形中最長(zhǎng)的一條邊,設(shè)為XZ,則Y點(diǎn)可對(duì)應(yīng)于二維碼中左上角的定位符中心,X點(diǎn)和Z點(diǎn)分別對(duì)應(yīng)于左下角和右上角的定位符中心;[〇316] e)在本示例的二值化圖像中,可以找到XYZ三個(gè)定位符的中心點(diǎn)。
[0317]4.轉(zhuǎn)換為二維碼點(diǎn)陣:按透視旋轉(zhuǎn)定律,使用透視變換方法,將二值圖像變換為透視二值圖像二維碼點(diǎn)陣。方法是:[〇318] a)通過連接X點(diǎn)和Y點(diǎn)的輔助線,使用Br e senham直線算法,計(jì)算出定位符的高度。 在本示例中計(jì)算結(jié)果為35。[〇319] b)同理通過連接Y點(diǎn)和Z點(diǎn)的輔助線,計(jì)算出定位符的寬度。在本示例中計(jì)算結(jié)果為35。
[0320] c)點(diǎn)陣元素的邊長(zhǎng)D =(定位符高度+定位符寬度)/ 14。在本示例中計(jì)算結(jié)果為5。
[0321](1)建立新的平面坐標(biāo),其中有乂’、¥’、2’三個(gè)點(diǎn),對(duì)應(yīng)于原乂、¥、2三個(gè)點(diǎn),而且父’ Y’與Y’Z’之間的夾角為直角。D(x,y)表示兩點(diǎn)之間的距離,則
[0322]D(X’,Y’)= D(X, Y) / D。在本示例中D(X’,Y’)= 240 / 5 = 48。
[0323]D(Y’,Z’)= D(Y, Z) /D。在本示例中D(X’,Y’)= 240 / 5 = 48。
[0324]e)使用透視變換方法,將對(duì)應(yīng)于點(diǎn)XYZ的二值圖像,轉(zhuǎn)換到對(duì)應(yīng)于點(diǎn)X’ Y’ Z’的二維碼點(diǎn)陣。
[0325]5.控制區(qū)信息讀取:在二維碼點(diǎn)陣中,控制區(qū)的位置是固定的,因此,可以從二維碼點(diǎn)陣中,直接讀取控制區(qū)編碼。對(duì)控制區(qū)編碼進(jìn)行BCH糾錯(cuò)解碼后,得到控制區(qū)的數(shù)據(jù),包括了二維碼模板編號(hào)、掩碼編號(hào)、數(shù)據(jù)糾錯(cuò)編號(hào)、壓縮方法編號(hào)、加密方法編號(hào)。
[0326]在本示例中,解碼出了與編碼時(shí)相同的全部控制區(qū)數(shù)據(jù)。
[0327]6.檢索二維碼模板:使用二維碼模板編號(hào),從模板數(shù)據(jù)源中檢索到二維碼模板數(shù)據(jù)。模板數(shù)據(jù)源可以是數(shù)據(jù)庫、磁盤文件或云存儲(chǔ)等任意的存儲(chǔ)空間。
[0328]7.消除數(shù)據(jù)區(qū)掩碼:從二維碼模板中,可以得知數(shù)據(jù)區(qū)的位置。然后根據(jù)控制區(qū)中定義的掩碼編號(hào),用相應(yīng)的掩碼算法來消除數(shù)據(jù)區(qū)點(diǎn)陣中的掩碼。
[0329]在本示例中,因?yàn)檠诖a編號(hào)是0,因此不需要進(jìn)行掩碼運(yùn)算。[〇33〇]8.獲取數(shù)據(jù)區(qū)編碼:按數(shù)據(jù)區(qū)的位置,在二維碼點(diǎn)陣中讀取數(shù)據(jù)區(qū)編碼[〇331]9.數(shù)據(jù)區(qū)糾錯(cuò)解碼:按控制區(qū)中定義的數(shù)據(jù)糾錯(cuò)編號(hào)對(duì)數(shù)據(jù)區(qū)編碼進(jìn)行糾錯(cuò)解碼;
[0332]10.數(shù)據(jù)解包:糾錯(cuò)解碼后的數(shù)據(jù)區(qū)編碼,前面的1個(gè)或幾個(gè)字節(jié)(由數(shù)據(jù)區(qū)長(zhǎng)度決定),即是實(shí)際的數(shù)據(jù)字節(jié)數(shù)。從數(shù)據(jù)區(qū)編碼中讀出數(shù)據(jù)。
[0333]在本示例中,在數(shù)據(jù)區(qū)讀出了與編碼時(shí)相同的數(shù)據(jù)。
[0334]11.信息解壓:按控制區(qū)中定義的壓縮方法編號(hào),對(duì)數(shù)據(jù)進(jìn)行解壓縮。如果在編碼的時(shí)候沒有進(jìn)行壓縮,這一步可以跳過。
[0335]12.解密:按控制區(qū)中定義的加密方法編號(hào),對(duì)數(shù)據(jù)進(jìn)行解密。如果在編碼的時(shí)候沒有進(jìn)行加密,這一步可以跳過。
[0336]13.得到了編碼到二維碼中的原始二進(jìn)制信息。
[0337]在本示例中,解碼得到了原始二進(jìn)制信息:(EF 53 4C 5D 65 51 27 59 D4 6B 8B 4?卩£ 56 62 5? 84 76 80 4£?4 7£0178)16。這段二進(jìn)制碼即對(duì)應(yīng)于1]111(3〇(16字符集下的文字“可嵌入大比例圖形的二維碼”。
[0338]相應(yīng)地,根據(jù)本公開的一個(gè)方面,還提供了一種可嵌入大比例圖形的二維碼的解碼設(shè)備,被配置為執(zhí)行根據(jù)以上所述的可嵌入大比例圖形的二維碼的解碼方法;或者被配置為識(shí)讀以上所述的可嵌入大比例圖形的二維碼。
[0339]例如,本公開的解碼設(shè)備可以在具有許多類型的計(jì)算機(jī)系統(tǒng)配置(包括個(gè)人計(jì)算機(jī)、桌面型計(jì)算機(jī)、膝上型計(jì)算機(jī)、消息處理器、手持設(shè)備、多處理器系統(tǒng)、基于微處理器或者可編程的客戶電子裝置、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、寫字板、尋呼機(jī)、路由器、交換機(jī)等)的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,也可以在分布式系統(tǒng)環(huán)境中實(shí)踐,其中通過網(wǎng)絡(luò)鏈接(通過硬接線數(shù)據(jù)鏈路、無線數(shù)據(jù)鏈路或者通過硬接線和無線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程計(jì)算機(jī)系統(tǒng)二者執(zhí)行任務(wù)。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備二者中。
[0340]例如,本公開的解碼設(shè)備可以實(shí)施為具有無線通信功能的移動(dòng)設(shè)備。然而,可以理解,這僅僅是示例性而非限制性的。其他類型的移動(dòng)終端也可以容易地采用本公開的實(shí)施方式,諸如便攜式數(shù)字助理(PDA)、尋呼機(jī)、移動(dòng)計(jì)算機(jī)、移動(dòng)電視、游戲設(shè)備、膝上型計(jì)算機(jī)、照相機(jī)、錄像機(jī)、GPS設(shè)備以及其他類型的語音和文本通信系統(tǒng)。諸如車載式移動(dòng)終端之類的固定式移動(dòng)終端同樣可以容易地使用本公開的實(shí)施方式。
[0341]應(yīng)當(dāng)理解,本公開的以上方法和過程的步驟僅是示例性的,而非限制性的,可以理解的是這些步驟或流程可以按照任意合理的順序來執(zhí)行,任何步驟可以進(jìn)行組合或分成其它的子步驟來執(zhí)行,這些都涵蓋在本公開所要保護(hù)的范圍之內(nèi)。
[0342]應(yīng)當(dāng)理解,本公開的以上設(shè)備(例如編碼設(shè)備、解碼設(shè)備)和裝置可以通過硬件、軟件或者軟件和硬件的結(jié)合來實(shí)現(xiàn)。其中,硬件部分可以利用專用邏輯來實(shí)現(xiàn);軟件部分則可以存儲(chǔ)在存儲(chǔ)器中,由適當(dāng)?shù)闹噶顖?zhí)行系統(tǒng),例如微處理器或者專用設(shè)計(jì)硬件來執(zhí)行。本領(lǐng)域的普通技術(shù)人員可以理解上述的方法和系統(tǒng)可以使用計(jì)算機(jī)可執(zhí)行指令和/或包含在處理器控制代碼中來實(shí)現(xiàn),例如在諸如磁盤、CD或DVD-ROM的載體介質(zhì)、諸如只讀存儲(chǔ)器(固件)的可編程的存儲(chǔ)器或者諸如光學(xué)或電子信號(hào)載體的數(shù)據(jù)載體上提供了這樣的代碼。本公開的實(shí)施例的設(shè)備和裝置不僅可以由諸如超大規(guī)模集成電路或門陣列、諸如邏輯芯片、 晶體管等的半導(dǎo)體、或者諸如現(xiàn)場(chǎng)可編程門陣列、可編程邏輯設(shè)備等的可編程硬件設(shè)備的硬件電路實(shí)現(xiàn),也可以用例如由各種類型的處理器所執(zhí)行的軟件實(shí)現(xiàn),還可以由上述硬件電路和軟件的結(jié)合(例如固件)來實(shí)現(xiàn)。
[0343]應(yīng)當(dāng)注意,盡管在上文的詳細(xì)描述中提及了設(shè)備的若干裝置或子裝置,但是這種劃分僅僅是示例性而非強(qiáng)制性的。實(shí)際上,根據(jù)本公開的實(shí)施例,上文描述的兩個(gè)或更多裝置的特征和功能可以在一個(gè)裝置中具體化。反之,上文描述的一個(gè)裝置的特征和功能可以進(jìn)一步劃分為由多個(gè)裝置來具體化。
[0344]通過以上描述和相關(guān)附圖中所給出的教導(dǎo),這里所給出的本公開的許多修改形式和其它實(shí)施方式將被本公開相關(guān)領(lǐng)域的技術(shù)人員所意識(shí)到。因此,所要理解的是,本公開的實(shí)施方式并不局限于所公開的【具體實(shí)施方式】,并且修改形式和其它實(shí)施方式意在包括在本公開的范圍之內(nèi)。此外,雖然以上描述和相關(guān)附圖在部件和/或功能的某些示例組合形式的背景下對(duì)示例實(shí)施方式進(jìn)行了描述,但是應(yīng)當(dāng)意識(shí)到的是,可以由備選實(shí)施方式提供部件和/或功能的不同組合形式而并不背離本公開的范圍。就這點(diǎn)而言,例如,與以上明確描述的有所不同的部件和/或功能的其它組合形式也被預(yù)期處于本公開的范圍之內(nèi)。雖然這里采用了具體術(shù)語,但是它們僅以一般且描述性的含義所使用而并非意在進(jìn)行限制。
【主權(quán)項(xiàng)】
1.一種可嵌入大比例圖形的二維碼,包括定位符、控制區(qū)、數(shù)據(jù)區(qū)和畫布區(qū),其中: 所述定位符包括對(duì)所述二維碼進(jìn)行識(shí)別和定位的定位信息; 所述控制區(qū)包括對(duì)所述二維碼進(jìn)行配置的配置信息,所述配置信息包括與所述二維碼使用的二維碼模板相對(duì)應(yīng)的二維碼模板信息; 所述數(shù)據(jù)區(qū)包括與所述二維碼代表的原始信息相對(duì)應(yīng)的數(shù)據(jù)信息,所述數(shù)據(jù)區(qū)的位置和大小根據(jù)所述二維碼模板來確定; 所述畫布區(qū)用于嵌入所述大比例圖形,所述畫布區(qū)的位置和大小根據(jù)所述二維碼模板來確定。2.根據(jù)權(quán)利要求1所述的二維碼,其中,所述二維碼模板存儲(chǔ)于數(shù)據(jù)源中。3.根據(jù)權(quán)利要求1或2所述的二維碼,其中,所述二維碼模板包括關(guān)于所述二維碼的布局信息的數(shù)據(jù)點(diǎn)陣。4.根據(jù)權(quán)利要求1或2所述的二維碼,還包括間隔區(qū),所述間隔區(qū)包括定位間隔區(qū)和數(shù)據(jù)間隔區(qū);其中所述定位間隔區(qū)是所述定位符四周的空白,寬度為一個(gè)點(diǎn)陣基本元素;所述數(shù)據(jù)間隔區(qū)是所述數(shù)據(jù)區(qū)與所述畫布區(qū)、和/或所述數(shù)據(jù)區(qū)與所述二維碼外部的空白,寬度為一個(gè)點(diǎn)陣基本元素。5.—種可嵌入大比例圖形的二維碼的編碼設(shè)備,被配置為生成權(quán)利要求1-4中任一項(xiàng)所述的可嵌入大比例圖形的二維碼。6.—種可嵌入大比例圖形的二維碼的解碼設(shè)備,被配置為識(shí)讀權(quán)利要求1-4中任一項(xiàng)所述的可嵌入大比例圖形的二維碼。
【文檔編號(hào)】G06K7/14GK205608756SQ201520968132
【公開日】2016年9月28日
【申請(qǐng)日】2015年11月30日
【發(fā)明人】朱灝, 謝右鴻, 林蔚
【申請(qǐng)人】林蔚
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
东安县| 香港| 永和县| 鄂州市| 当雄县| 巴东县| 自治县| 昌都县| 沙雅县| 德庆县| 营口市| 榆社县| 博乐市| 眉山市| 增城市| 莱芜市| 太和县| 厦门市| 广水市| 旺苍县| 介休市| 五家渠市| 通辽市| 方正县| 孙吴县| 巧家县| 安达市| 理塘县| 富平县| 雅安市| 达孜县| 庐江县| 甘孜| 天津市| 六安市| 凤阳县| 纳雍县| 四川省| 景东| 长兴县| 普安县|