亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種矩形固定點陣信息編解碼方法與流程

文檔序號:12671666閱讀:195來源:國知局
一種矩形固定點陣信息編解碼方法與流程
本發(fā)明屬于信息學領域,尤其涉及一種矩形固定點陣信息編解碼方法。
背景技術
:一維條碼自出現以來,得到了人們的普遍關注,發(fā)展速度十分迅速。但隨著現代高新技術的發(fā)展,為了滿足千變萬化的信息表示的需要,迫切要求用條碼在有限的幾何空間內表示更多的信息。由此,為了解決一維條碼無法解決的問題,二維條碼應運而生。它采用矩形、點、六邊形等幾何圖案來表示信息,編碼時使用若干個與二進制相對應的幾何形體來表示文字數值信息,解碼時則通過圖像輸入或光電掃描設備自動識讀信息。它的使用,極大地提高了數據采集和信息處理的速度,提高了工作效率,并為管理的科學化和現代化做出了很大貢獻。隨著智能手機的逐漸普及,二維碼編解碼功能軟件已經幾乎成為了智能手機的標配軟件。目前常用或知名的二維條碼編碼機制有DataMatrix,MaxiCode,QRCode,漢信碼等。在眾多二維條碼中DataMatrix碼是一種矩陣式二維條碼,其最大特點就是密度高,其最小尺寸是目前所有條碼中最小的碼。除此之外,DataMatrix碼采用了復雜的糾錯碼技術,使得該編碼具有超強的抗污染能力。但是,DataMatrix編碼機制中一方面由于只能選擇特定的尺寸進行編碼,目前最小DataMatrix的尺寸也是10*10矩形區(qū)域,當存儲小量信息時會造成大量信息位冗余;另一方面,DataMatrix碼中所需要的特征位過多,在一定程度上占用了可以進行信息編碼的信息位。為了解決這兩個問題,本發(fā)明通過借鑒了二維條碼中DataMatrix編碼機制的部分編碼規(guī)則,發(fā)明了一種自定義矩形尺寸的固定點陣信息編解碼方法。技術實現要素:本發(fā)明基于DataMatrix碼的部分編碼規(guī)則,由用戶根據所需要存儲的信息自定義編碼的矩形尺寸,將需要存儲的信息以基于比特位并提供BCH糾錯的形式按特定的順序進行編碼,然后再采用與信息編碼相對應的信息解碼方法讀取信息。本發(fā)明的技術方案為利用第三方開源條碼生成軟件zxing設計的一種矩形固定點陣信息編解碼方法,包括:信息編碼的步驟:首先確定信息編碼矩形的寬度與高度,然后將編碼信息轉換成二進制字符串,并基于BCH編碼原理得到包含糾錯碼的編碼信息的二進制字符串,其次創(chuàng)建一個二進制矩陣,設置二進制矩陣的特征位的值并將包含糾錯碼的編碼信息的二進制字符串按照“之”字型順序放入二進制矩陣中除特征位以外的區(qū)域,最后將二進制矩陣進行掩碼,并將該矩陣根據“0”“1”進行著色轉換為圖片;信息解碼的步驟:用戶使用解碼程序對編碼圖片進行解析,將圖片轉換為二進制位圖得到符號圖像,然后找到符號圖像的四個頂點并確定四個頂點的正確位置,其次根據傳入的參數即編碼的寬度與高度將符號圖像糾正、變換為二進制矩陣,最后將二進制矩陣解掩碼提取二進制信息進行BCH糾錯得到正確的二進制字符串,并轉換為明文進行輸出。在上述的一種矩形固定點陣信息編解碼方法,所述信息編碼的步驟具體包括:步驟1,根據計算所需編碼的信息增加BCH糾錯碼后的二進制長度,確定編碼的尺寸,即編碼區(qū)域的寬度與高度,其中編碼的寬度與高度需滿足(寬度-1)*(高度-1)的值減去編碼的信息增加BCH糾錯碼后的二進制長度的值不少于3,并將確定的編碼尺寸作為參數傳入編碼程序中;步驟2,將所需編碼的信息轉換為二進制字符串,根據隱藏信息需要糾錯的位數對該字符串進行分組,每組含k位二進制信息,并利用BCH編碼原理計算得出每組二進制信息的n位BCH糾錯碼;若二進制字符串在分組后存在某組二進制信息不足k位時,應先在二進制字符串首部添“0”補足,直到各個分組都包含k位二進制位,再將補足后的二進制字符串進行分組計算得到BCH糾錯碼;在得到各組的BCH糾錯碼后將每組的BCH糾錯碼分別插入至相應有效信息后,形成包含糾錯碼的編碼信息的二進制字符串,即為最終的所需編碼的二進制信息;步驟3,創(chuàng)建一個寬度等于步驟1中自定義編碼寬度,高度等于步驟1中自定義編碼高度的二進制矩陣,并將二進制矩陣的最左一列與最底部一行各個信息位全部置為“1”,將其作為編碼的特征位;然后,從二進制矩陣剩余編碼區(qū)域中最左下角的信息位開始一位一位按照“之”字形的順序依次將步驟2最后得出的二進制字符串放入二進制矩陣的編碼區(qū)域中,注意放入時跳過二進制矩陣的最右上角、右上角左側及下側相鄰位置,當二進制信息長度小于矩形區(qū)域可放置長度時選擇在末尾添0補足;最后,將二進制矩陣的最右上角的信息位置為“1”,右上角左側相鄰位置置為“0”,右上角下側相鄰位置同樣置為“0”;將二進制矩陣的這三個信息位位置設為編碼的特征位;步驟4,,選擇一種掩碼模式對步驟3最后生成的二進制矩陣除特征位外進行掩膜,使得最后生成的二維條碼圖形中的有顏色且白色除外的區(qū)域與白色區(qū)域能夠比率最優(yōu)的分布;步驟5,將掩碼過后的二進制矩陣根據“0”、“1”進行著色并轉換為圖片。在上述的一種矩形固定點陣信息編解碼方法,所述信息解碼的步驟具體包括:步驟1,用戶將需要解碼的圖片用對應的解碼程序進行解碼,并將圖片的編碼尺寸大小作為參數傳入解碼程序中;解碼程序首先將圖片轉化為二進制位圖得到圖像的符號圖像,然后畫出符號圖像的位置,最后確定符號圖像的四個頂點;畫出圖像位置的方法是從圖像中間畫一個30X30的框,然后依次向四邊推行,檢測四邊上是否有黑色的點,直到每一邊都沒有黑色的點為止;初步范圍確定以后就需要確定符號圖像四個角的頂點,有了四個角的頂點就可以進行透視變換,符號碼圖像也就能夠取出;解碼程序中首先在大檢測框的四個角用斜45度的直線去檢測:按照圖中四個角的箭頭所示方向進行掃描,檢測到第一個黑色的點就返回;如果在線上沒有檢測到黑點,就將掃描線向對角線推進;最后就能找到四個角的頂點;步驟2,確定符號圖像各個頂點的正確位置;首先基于bresenham算法掃描得出各個頂點之間連線是否為一條直線,從而可以將兩條直線的交點頂點確定為符號圖像的左下角頂點,將兩條都不是直線的交點頂點確定為符號圖像的右上角頂點;然后經過兩點間距離的比較確定符號圖像的左上角和右下角頂點;步驟3,根據步驟1傳入的圖片的編碼尺寸確定符號圖像每條邊上各有多少模塊,然后基于SampleGrid進行透視變換和采樣變換,將原始圖像中的符號圖像糾正、變換為我們解碼需要的規(guī)則的,以模塊為單位的符號矩陣即圖像的二進制矩陣;步驟4,首先將步驟3中得到的二進制矩陣解掩碼得到正確的二進制矩陣,然后再根據編碼規(guī)則將正確的二進制矩陣中數據域的二進制信息依次提取出來,然后分組進行BCH解碼得到正確的有效信息,最后將有效信息轉換為明文形式進行輸出,完成解碼。因此,本發(fā)明具有如下優(yōu)點:1、用戶可根據需要編碼信息的長度自定義編碼尺寸,一方面可以滿足用戶對編碼尺寸的一些特定要求,另一方面可以最大程度的降低編碼圖片中有效信息的冗余度;2、相比較于目前常用的二維條碼編碼規(guī)則中使用的特征位位數,本發(fā)明在編碼時使用的特征位位數明顯少于它們,從而在一定程度上增加了可編碼有效信息的位數;3、本發(fā)明的編碼規(guī)則不同于目前公開的所有的二維條碼編碼規(guī)則,并且對于按照本發(fā)明中的信息編碼方法編碼的二維條碼,只能按照本發(fā)明中提出的信息解碼方法進行解碼,因此信息編碼出的二維條碼具有獨一無二性,當將本發(fā)明應用于商品標識中,可以滿足商家對商品進行防偽的需求。附圖說明圖1是本發(fā)明的信息的編碼流程圖。圖2是本發(fā)明的信息的解碼流程圖。圖3是本發(fā)明信息解碼的提取步驟中經過步驟1中得到的大致范圍示意圖。圖4是本發(fā)明信息解碼的提取步驟中經過步驟1中解碼程序在大檢測框的四個角用斜45度的直線去檢測后的示意圖。圖5是本發(fā)明中生成的二維碼示意圖。具體實施方式本發(fā)明基于QR碼對編碼的原始數據的糾錯性能,將需要隱藏的信息以基于比特位并提供糾錯的形式嵌入到編碼中,然后再采用特定的隱藏信息的提取方法進行提取,從而達到傳遞隱藏信息的目的。本發(fā)明提供的方法能夠用計算機軟件技術實現流程。對于信息的編碼參見圖1,實施例以編碼信息為“123044162062”,對于編碼信息提供4位糾錯為例對本發(fā)明的流程進行一個具體的闡述,如下:定義t為BCH糾錯位數,s為編碼信息轉換的二進制字符串,t為編碼信息增加BCH糾錯碼后的二進制字符串步驟1,根據計算所需編碼的信息增加BCH糾錯碼后的二進制長度,確定編碼的尺寸,即編碼區(qū)域的寬度與高度,其中編碼的寬度與高度需滿足(寬度-1)*(高度-1)的值減去編碼的信息增加BCH糾錯碼后的二進制長度的值不少于3,并將確定的編碼尺寸作為參數傳入編碼程序中。實施例具體的實施過程說明如下:將編碼信息轉換為二進制字符串為:s=1110010100110000000001110101000001110,長度為37位,由于總共需糾四位錯,選擇將s分為兩組,每組進行BCH編碼,即t=2,根據BCH編碼原理選取本原BCH(31,21)碼,即21位有效信息的字符串生成10位BCH糾錯碼。因此最后需嵌入的包含BCH糾錯碼的二進制信息應有62位,所以可選取的編碼尺寸最小應為7*12,在本例中為了盡可能不浪費可編碼的信息位,我們選取編碼的寬度為12,高度為7。步驟2,將所需編碼的信息轉換為二進制字符串,根據隱藏信息需要糾錯的位數對該字符串進行分組,每組含k位二進制信息,并利用BCH編碼原理計算得出每組二進制信息的n位BCH糾錯碼。若二進制字符串在分組后存在某組二進制信息不足k位時,應先在二進制字符串首部添“0”補足,直到各個分組都包含k位二進制位,再將補足后的二進制字符串進行分組計算得到BCH糾錯碼。在得到各組的BCH糾錯碼后將每組的BCH糾錯碼分別插入至相應有效信息后,形成包含糾錯碼的編碼信息的二進制字符串,即為最終的所需編碼的二進制信息。實施例具體的實施過程說明如下:首先將s分為兩組,每組長度21位,分別為:000001110010100110000、000001110101000001110。然后分別計算兩組二進制信息的BCH糾錯碼。BCH碼的定義為:若循環(huán)碼的生成多項式具有如下形式:g(x)=LCM[m1(x),m3(x),...,m2t-1(x)]其中LCM表示最小公倍式,t為糾錯個數,mi(x)為素多項式,則由此生成的循環(huán)碼稱為BCH碼。BCH碼部分不可約多項式表如下:2階173階1134階1233375075階145375567在本實施例中由步驟1的實施例可得BCH糾錯碼采用BCH(31,21)碼,t=2,則n=31=25–1,通過查詢上述不可約多項式表可得:m1(x)=(45)8=100101=x5+x2+1;m3(x)=(75)8=111101=x5+x4+x3+x2+1;所以g(x)=LCM[m1(x),m3(x)]=x10+x9+x8+x6+x5+x3+1=11101101001,將每組21位二進制信息對生成多項式進行模2運算得到兩組二進制信息的BCH糾錯碼分別為:1000101110、0011110100。最后將糾錯碼插入相應的二進制有效信息后面得到包含BCH糾錯碼的編碼信息的二進制字符串。本例中將上述糾錯碼插入字符串s中得到字符串t,可得t的結果為:00000111001010011000010001011100000011101010000011100011110100。步驟3,創(chuàng)建一個寬度等于步驟1中自定義編碼寬度,高度等于步驟1中自定義編碼高度的二進制矩陣,并將二進制矩陣的最左一列與最底部一行各個信息位全部置為“1”,將其作為編碼的特征位。然后,從二進制矩陣剩余編碼區(qū)域中最左下角的信息位開始一位一位按照“之”字形的順序依次將步驟2最后得出的二進制字符串放入二進制矩陣的編碼區(qū)域中,注意放入時跳過二進制矩陣的最右上角、右上角左側及下側相鄰位置,當二進制信息長度小于矩形區(qū)域可放置長度時選擇在末尾添0補足。最后,將二進制矩陣的最右上角的信息位置為“1”,右上角左側相鄰位置置為“0”,右上角下側相鄰位置同樣置為“0”。將二進制矩陣的這三個信息位位置設為編碼的特征位。實施例的具體實施過程如下:根據步驟1的實施過程可知,選取的編碼尺寸的寬度為12,高度為7。因此首先創(chuàng)建一個尺寸為7*12的二進制矩陣,并將矩陣的最右一列與最底部一行各個信息位全部置為“1”,將其作為編碼的特征位。得到的二進制矩陣如下:為了方便后續(xù)說明在下圖中借用了坐標圖來表示二進制矩陣中各個位置然后,從二進制矩陣剩余編碼區(qū)域中最右下角的信息位開始即從坐標為(1,5)的位置開始一位一位按照“之”字形的順序依次將字符串t跳過二進制矩陣的最右上角及其相鄰位置放入二進制矩陣的編碼區(qū)域中,由于t的長度為62位,可編碼區(qū)域長度為(6*11)-3=63位,因此需添加一位“0”補足。全部插入后二進制矩陣為:最后,將二進制矩陣的最右上角的信息位即坐標為(11,0)置為“1”,右上角左側相鄰位置即坐標為(10,0)置為“0”,右上角下側相鄰位置即坐標為(11,1)同樣置為“0”。將二進制矩陣的這三個信息位位置設為編碼的特征位。步驟4,,選擇一種掩碼模式對步驟3最后生成的二進制矩陣除特征位外進行掩膜,使得最后生成的二維條碼圖形中的有顏色(白色除外)區(qū)域與白色區(qū)域能夠比率最優(yōu)的分布。實施例的具體實施過程如下:為了簡單起見,本例中選擇的掩碼方案為:將二進制矩陣中除特征位以外的區(qū)域而信息位進行“取反”操作,最后得到的二進制矩陣為:步驟5,將掩碼過后的二進制矩陣根據“0”、“1”進行著色并轉換為圖片。實施例的具體實施過程如下:對步驟4實施例最終生成的二進制矩陣進行著色,由于常見編碼圖片為黑白兩色,因此在本例中將二進制位為“1”著色為黑色,將二進制位為“0”著色為白色,最終生成的二維條碼圖片如圖5所示。對于信息的解碼,參見圖2,實施例以上述例子中生成的圖片為例對本方案的流程做一個具體的闡述:定義:S為提取出來包含糾錯碼的編碼信息的二進制字符串,T為正確的編碼信息的有效二進制字符串,M為編碼的信息明文步驟1,用戶將需要解碼的圖片用對應的解碼程序進行解碼,并將圖片的編碼尺寸大小作為參數傳入解碼程序中。解碼程序首先將圖片轉化為二進制位圖得到圖像的符號碼圖像,然后大致畫出符號圖像的位置,最后確定符號圖像的四個頂點。實施例的具體實施過程如下:首先,由該圖像的編碼可知,圖像的編碼尺寸為7*12,將圖像的寬度為12,高度為7作為參數傳入解碼程序中。然后,將圖像轉換為二進制位圖,采用上述信息解碼步驟1中的具體方法找出符號圖像的大致范圍,確定符號圖像的四個頂點坐標,分別記為A、B、C、D。在本例中確定的四個頂點坐標分別為A(23.05,53.14),B(25.12,166.53),C(216.85,167.32),D(218.44,54.45)。步驟2,確定符號圖像各個頂點的正確位置。首先利用bresenham算法掃描得出各個頂點之間連線是否為一條實線,從而可以將兩條實線的交點頂點確定為符號圖像的左下角頂點,將兩條都不是實線的交點頂點確定為符號圖像的右上角頂點。然后經過兩點間距離的比較確定符號圖像的左上角和右下角頂點。實施例的具體實施過程如下:分別利用bresenham算法計算A-B,A-C,A-D,B-C,B-D,C-D兩兩頂點之間是否為一條實線,在本例中得出頂點A-B,B-C之間為實線,頂點A-D,C-D之間不是實線,從而本例中圖像正確的左下角頂點坐標為B(25.12,166.53),右上角坐標為D(218.44,54.45)。對于頂點C(216.85,167.32))和頂點A(23.05,53.14),根據它們分別到頂點B和頂點D的距離可以得出左上角的頂點坐標為A(23.05,53.14),右下角的頂點坐標為C(216.85,167.32)。步驟3,根據步驟1傳入的圖片的編碼尺寸確定符號圖像每條邊上各有多少模塊,然后使用SampleGrid進行透視變換和采樣變換,將原始圖像中的符號圖像糾正、變換為我們解碼需要的規(guī)則的,以模塊為單位的符號矩陣即圖像的二進制矩陣。實施例的具體實施過程如下:本例中,圖片的編碼尺寸為寬度為12,高度為7,從而可確定符號圖像的上下兩條邊各有12個模塊,左右兩條邊各有7個模塊,進一步將符號圖像進行透視變換和采樣變換可得到7*12的二進制矩陣如下:步驟4,首先將步驟3中得到的二進制矩陣解掩碼得到正確的二進制矩陣,然后再根據編碼規(guī)則將正確的二進制矩陣中數據域的二進制信息依次提取出來,然后分組進行BCH解碼得到正確的有效信息,最后將有效信息轉換為明文形式進行輸出,完成解碼。實施例的具體實施過程如下:首先,將步驟3實施例的二進制矩陣根據編碼選擇的掩碼方案進行解掩碼,即將二進制矩陣中除特征位外的所有二進制進行取反操作,得到的正確的二進制矩陣如下:然后將二進制矩陣中數據域的二進制信息依次提取出來得到的二進制字符串為:000001110010100110000100010111000000111010100000111000111101000,由于在信息編碼時,采用的是BCH(31,21)碼,所以編碼的字符串長度應為62位,去除上述提取出來的二進制字符串的后1位得到的正確的二進制字符串應為:S=00000111001010011000010001011100000011101010000011100011110100對字符串S按每組31位分為兩組,分別對每組進行BCH解碼,得到正確的有效信息。其中對分組字符串1:0000011100101001100001000101110進行解碼得到的正確信息為:000001110010100110000;對分組字符串2:0000011101010000011100011110100進行解碼得到的正確信息為:000001110101000001110。最后,將各組解碼得到的正確信息按照分組順序進行拼接得到最終的編碼信息的二進制字符串,最終結果為:T=000001110010100110000000001110101000001110最后,將T轉換為十進制的整數,M=123044162062。本文中所描述的具體實施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬
技術領域
的技術人員可以對所描述的具體實施例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權利要求書所定義的范圍。當前第1頁1 2 3 
當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1