趙群禮, 周秋平, 史君華
(合肥師范學(xué)院 計(jì)算機(jī)科學(xué)與技術(shù)系,安徽 合肥230061)
二維條碼技術(shù)是20世紀(jì)80年代末在一維條碼基礎(chǔ)上發(fā)展起來(lái)的,與一維條碼相比,二維條碼具有容量高、密度高、糾錯(cuò)能力強(qiáng)等特點(diǎn)[1,2],因此得到廣泛應(yīng)用。而正由于二維條碼信息密度高,與一維條碼相比識(shí)別技術(shù)更為復(fù)雜,所以對(duì)二維條碼進(jìn)行快速有效的識(shí)別成為當(dāng)前的一個(gè)研究熱點(diǎn)。本文主要對(duì) QR(Quick Response)[3,4]二維條碼的圖像識(shí)別技術(shù)進(jìn)行了具體的探討和分析。
QR碼是由日本Denso公司于1994年9月制定的一種矩陣二維條碼符號(hào),它除了具有信息容量大、可靠性高、可表示漢字及圖像信息、保密防偽性強(qiáng)等優(yōu)點(diǎn)外,還具有超高速響應(yīng)、全方位識(shí)讀等特點(diǎn)。QR碼的尺寸小于相同密度的PDF417碼[5](Portable Data File 417Code),專(zhuān)有的漢字模式更加適合我國(guó)應(yīng)用。
每個(gè)QR碼符號(hào)由正方形模塊組成的一個(gè)正方形陣列構(gòu)成,它由編碼區(qū)域和包括尋像圖形、分隔符、定位圖形和校正圖形在內(nèi)的功能圖形組成,功能圖形不用于數(shù)據(jù)編碼,符號(hào)的四周為空白區(qū)。圖1為QR碼版本1符號(hào)的結(jié)構(gòu)圖。
圖1 QR碼符號(hào)的示例
QR碼基本特性主要有以下五個(gè)方面:
(1)編碼字符集,包括數(shù)字型數(shù)據(jù)(數(shù)字0~9)、字母數(shù)字型數(shù)據(jù)(數(shù)字;大小寫(xiě)英文字母;9個(gè)其他字符:space,$,%,*,+,一,.,/,:)、8位字節(jié)型數(shù)據(jù)、日本漢字字符、中國(guó)漢字字符(GB2312對(duì)應(yīng)的漢字和非漢字字符)。
(2)數(shù)據(jù)表示方法,用深色模塊表示二進(jìn)制“1”,用淺色模塊表示二進(jìn)制“0”。
(3)符號(hào)規(guī)格,符號(hào)規(guī)格不包括空白區(qū)域,從版本1的21×21模塊到版本40的177×177模塊。
(4)符號(hào)的數(shù)據(jù)字符數(shù),以版本40為例,每種符號(hào)的數(shù)據(jù)字符數(shù)為:數(shù)字?jǐn)?shù)據(jù)7089個(gè)字符、字母數(shù)字?jǐn)?shù)據(jù)4296個(gè)字符、8位字節(jié)數(shù)據(jù)2953個(gè)字符、中國(guó)漢字?jǐn)?shù)據(jù)1817個(gè)字符。
(5)糾錯(cuò)能力,有4種糾錯(cuò)等級(jí),可恢復(fù)的碼字比例為:L級(jí)是7%、M級(jí)是15%、Q級(jí)是25%、H級(jí)是30%。
(1)結(jié)構(gòu)鏈接
結(jié)構(gòu)鏈接是可選項(xiàng)目,允許把數(shù)據(jù)文件最多用16個(gè)QR碼符號(hào)在邏輯上連續(xù)地表示。以任意的順序掃描,而原始數(shù)據(jù)能正確地重新連接起來(lái)。
(2)掩模
掩模是固有項(xiàng)目,可以使符號(hào)中深色與淺色模塊的比例接近1:1,使因鄰近模塊的排列而影響高效譯碼的可能性降為最小,減小對(duì)譯碼的準(zhǔn)確的影響。
(3)擴(kuò)充解釋
擴(kuò)充解釋是可選項(xiàng)目,這種方式使符號(hào)可以表示字符集以外的數(shù)據(jù)(如阿拉伯字符、古斯拉夫字符、希臘字母等),以及其他數(shù)據(jù)解釋?zhuān)ㄈ缬靡欢▔嚎s方式表示的數(shù)據(jù))或者針對(duì)行業(yè)特點(diǎn)的需要進(jìn)行編碼。
QR碼的編碼格式依次為:模式指示符、字符計(jì)數(shù)指示符、經(jīng)各種規(guī)則壓縮后的數(shù)據(jù)、填充位和其他信息,然后按照版本信息分割成不同的塊,對(duì)每一塊進(jìn)行糾錯(cuò)位計(jì)算并填充糾錯(cuò)碼數(shù)據(jù),按照不同的版本擺放位置探測(cè)圖形、定位圖形、校正圖形、格式信息、版本信息等,如圖2所示。
圖2 QR碼的符號(hào)結(jié)構(gòu)
圖像識(shí)別是人工智能的一個(gè)重要領(lǐng)域。使用計(jì)算機(jī)對(duì)圖像進(jìn)行處理、分析和理解,是識(shí)別不同模式的目標(biāo)和對(duì)象的一種技術(shù)。采用圖像識(shí)別技術(shù)對(duì)QR二維碼進(jìn)行識(shí)別已得到廣泛的應(yīng)用,其識(shí)別過(guò)程可分為圖像采集、灰度化、二值化、校正和解碼五個(gè)步驟,如圖3所示。
圖3 QR條碼圖像識(shí)別過(guò)程
(1)采集
QR二維條碼當(dāng)前已應(yīng)用在很多領(lǐng)域,通常條形碼被打印在相應(yīng)的物品上,用來(lái)表示物品的相關(guān)信息,當(dāng)要對(duì)這些信息進(jìn)行識(shí)別的時(shí)候,就需要提取條碼的圖像。二維條碼的獲取可以由光學(xué)相機(jī)如面陣CCD、數(shù)碼相機(jī)或者激光掃描器設(shè)備得到。
(2)灰度化
在通常狀態(tài)下,通過(guò)數(shù)碼相機(jī)等攝像設(shè)備獲取的QR二維碼圖像是彩色的,和灰度圖像相比彩色圖像含有的信息量大,占用的存儲(chǔ)空間更多,并且對(duì)彩色圖像的處理過(guò)程相對(duì)復(fù)雜,運(yùn)算量也比較大,因此有必要將彩色圖像進(jìn)行灰度化處理,以減少后續(xù)處理步驟的運(yùn)算量。標(biāo)準(zhǔn)的灰度值計(jì)算公式為:W=R*0.30+G*0.59+B*0.11,其中R、G、B分別表示紅、綠、藍(lán)三種顏色分量,W表示灰度值,它們的數(shù)值范圍都在0~255之間。
(3)二值化
標(biāo)準(zhǔn)的二維條碼圖像是由黑白兩種小的模塊組合而成的,因此在經(jīng)過(guò)圖像灰度化處理后,需要對(duì)所得圖像進(jìn)行二值化處理,圖像二值化就是將一幅多個(gè)灰度級(jí)的圖像轉(zhuǎn)化為只有兩個(gè)灰度級(jí)的圖像,以便于數(shù)據(jù)的壓縮、特征的突出以及圖形的識(shí)別。圖像二值化的方法是通過(guò)預(yù)先設(shè)定的一個(gè)閾值,將灰度圖像的像素分成大于閾值和小于閾值的兩個(gè)部分,只要閾值選擇的合適,就可將圖像中的背景和條碼符號(hào)區(qū)域分開(kāi)。對(duì)于閾值的選取方法,文獻(xiàn)[6,7,8]中提出了多種方法,如直方圖閾值法、最大類(lèi)間方差閾值分割法、Bernsen方法。
(4)校正
由于在采集條碼圖像的過(guò)程中,可能會(huì)出現(xiàn)攝像頭與條碼平面存在傾角的問(wèn)題,從而引起圖像產(chǎn)生幾何形變,使得原本正方形的QR碼呈現(xiàn)為不規(guī)則的四邊形,在很大程度上影響了條碼信息的正確提取,因此必須進(jìn)行圖像校正。在本文中采用雙線性變換的方法進(jìn)行幾何校正,以將不規(guī)則四邊形區(qū)域通過(guò)一定的映射關(guān)系映射為QR碼標(biāo)準(zhǔn)的正方形區(qū)域,如圖4所示,其中左邊的四個(gè)頂點(diǎn)變換為右邊的四個(gè)頂點(diǎn),變換前和變換后兩點(diǎn)之間的映射關(guān)系如(1)式所示,其中a~h八個(gè)參數(shù)為雙線性變換映射系數(shù)。
圖4 頂點(diǎn)映射關(guān)系示例
將預(yù)設(shè)的校正后的頂點(diǎn)坐標(biāo)代入(1)式的右邊,校正前采集到的頂點(diǎn)坐標(biāo)代入(1)式的左邊。(1)式中的橫坐標(biāo)x映射關(guān)系如方程組(2)所示。
由 圖 4 可 知 x1′=x2′,x3′=x4′,y1′=y(tǒng)3′,y2′=y(tǒng)4′,代入方程組(2)化簡(jiǎn)為(3)式。
其中M=x1′-x3′=y(tǒng)1′-y2′為預(yù)設(shè)的轉(zhuǎn)換后的QR碼邊長(zhǎng)。在求出a,b,c。后,根據(jù)方程組(2)中的任一個(gè)方程即可求出d。同理,可以求出縱坐標(biāo)y之間的映射系數(shù)e,f,g,h,然后可將預(yù)設(shè)正方形內(nèi)的點(diǎn)通過(guò)上面的變換映射到失真四邊形內(nèi),從而完成圖形的校正。圖5中的左圖經(jīng)上述的算法校正后轉(zhuǎn)變?yōu)橛覉D,由右圖可以發(fā)現(xiàn)雖然一些模塊的邊緣因取點(diǎn)時(shí)的近似出現(xiàn)鋸齒狀,但在總體上并不影響該模塊原來(lái)的條碼信息。
圖5 QR碼的幾何校正示例
(5)解碼
從理論上來(lái)說(shuō),解碼的過(guò)程可以看著是編碼的逆過(guò)程,首先要獲取待解碼的QR二維條碼,然后對(duì)該條碼進(jìn)行全部掃描,并將掃描結(jié)果存在一個(gè)二維數(shù)組中,接下來(lái)將掃描到的條碼符號(hào)轉(zhuǎn)換成碼字,再將碼字按照不同的編碼規(guī)則轉(zhuǎn)化為可讀的字符、漢字等相關(guān)文本信息,具體解碼步驟以下:
第1步:獲取符號(hào)圖像。深色與淺色模塊識(shí)別為由‘0’與‘1’組成的陣列;
第2步:識(shí)讀格式信息(按要求去除掩模圖形并完成對(duì)格式信息模塊的糾錯(cuò),識(shí)別糾錯(cuò)等級(jí)與掩模圖形參考);
第3步:識(shí)讀版本信息,確定符號(hào)的版本;
第4步:用掩模圖形(掩模圖形參考己經(jīng)從格式信息中得出)對(duì)矩陣中的編碼區(qū)域進(jìn)行異或處理,消除掩模;
第5步:根據(jù)模塊排列規(guī)則,識(shí)讀符號(hào)字符,恢復(fù)信息的數(shù)據(jù)與糾錯(cuò)碼字;
第6步:用與糾錯(cuò)等級(jí)信息相對(duì)應(yīng)的糾錯(cuò)碼字檢測(cè)錯(cuò)誤,如果發(fā)現(xiàn)錯(cuò)誤,則進(jìn)行糾錯(cuò);
第7步:根據(jù)模式指示符和字符計(jì)數(shù)指示符,將數(shù)據(jù)碼字劃分成多個(gè)部分;
第8步:按照使用的模式進(jìn)行譯碼,得出數(shù)據(jù)字符。
通過(guò)對(duì)QR二維條碼的介紹,分析了采用圖像處理方法識(shí)別QR碼的過(guò)程,并對(duì)識(shí)別過(guò)程中的圖像校正和解碼方法進(jìn)行了詳細(xì)介紹,提出了雙線性變換的方法解決幾何形變問(wèn)題,該方法簡(jiǎn)單易于實(shí)現(xiàn),能夠快速地進(jìn)行QR條碼圖像的幾何校正。和光電識(shí)別技術(shù)相比,采用圖像處理技術(shù)進(jìn)行QR條碼識(shí)別的方法,能夠有效地識(shí)別有污染、殘缺和幾何變形的條形碼,因而具有廣闊的應(yīng)用前景。
[1]Vangils W J.Two-dimensional dot code for product identification[J].IEEE Transactions on Information Theory,1987,33(5):620-631.
[2]Pavlidis T,Swartz J.Fundamentals of barcode information theory[J].IEEE Transactions on Computers,1990,23(4):74-86.
[3]張成海,郭衛(wèi)華,羅秋科等.QR Code二維碼[M].北京:中國(guó)標(biāo)準(zhǔn)出版社,2000.
[4]中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)GB/T18284-2000.快速響應(yīng)矩陣碼[S].
[5]中華人名共和國(guó)國(guó)家標(biāo)準(zhǔn)GB/T17172-1997.四一七條碼[S].
[6]劉發(fā)耀.QR條碼識(shí)別方法的研究.國(guó)防科學(xué)技術(shù)大學(xué),2010,24(1):45-46.
[7]N otsu.A threshold seleetion method from gray level histograms[J].IEEE Transactionson Systems Man and Cybernetic,1979,9(1):62-66.
[8]謝金龍,武獻(xiàn)宇,楊立雄,羅濤,王晨.QR二維條碼的設(shè)計(jì)與實(shí)現(xiàn)[J].物流工程與管理,2011,33(4):88-89.