王 超 冉鑫澤 劉 毅
1(國(guó)家食品藥品監(jiān)督管理總局信息中心 北京 100053) 2(華中科技大學(xué) 湖北 武漢 430074) 3(復(fù)旦大學(xué) 上海 201203)
條形碼是一種廣泛應(yīng)用在商業(yè)、郵政、圖書(shū)管理、倉(cāng)儲(chǔ)、工業(yè)生產(chǎn)過(guò)程控制等領(lǐng)域的自動(dòng)識(shí)別技術(shù)具有輸入速度快、準(zhǔn)確度高、成本低、可靠性強(qiáng)等優(yōu)點(diǎn)。條形碼有一維碼、二維碼、三維碼等類(lèi)型。常見(jiàn)的一維碼有EAN碼、UPC碼、25碼、39碼、128碼等,一維碼一般有數(shù)據(jù)校驗(yàn)功能;常見(jiàn)的二維碼有QR碼、PDF417碼、Data Matrix碼、漢信碼、龍貝碼等,二維碼一般具有數(shù)據(jù)糾錯(cuò)功能;一維碼、二維碼均印制在平面上的圖形,是二維空間的編碼,三維碼則在此基礎(chǔ)上增加第三維的信息,獲得更大的數(shù)據(jù)容量[1]。
二維碼是一種數(shù)據(jù)交換的載體。常見(jiàn)應(yīng)用中,二維碼存儲(chǔ)物品的編碼、或某個(gè)域名信息,使用信息終端掃碼獲取編碼或域名,進(jìn)而通過(guò)訪問(wèn)網(wǎng)絡(luò)獲取更多的相關(guān)信息,這類(lèi)應(yīng)用對(duì)二維碼的數(shù)據(jù)容量尚沒(méi)有很大的要求。在一些特殊情況下,維碼需要存儲(chǔ)較多的數(shù)據(jù)信息,例如在現(xiàn)在火車(chē)票、機(jī)票上,廣泛采用二維碼,可以存儲(chǔ)用戶姓名、證件號(hào)碼、車(chē)/班次等信息[2-4]。
當(dāng)二維碼被用作普通意義的數(shù)據(jù)傳輸信道時(shí),容量更成為一個(gè)突出的問(wèn)題。文獻(xiàn)[5-6]中,利用二維碼實(shí)現(xiàn)物理隔離的數(shù)據(jù)安全交換。類(lèi)似的,在文獻(xiàn)[7]中,運(yùn)用二維條碼技術(shù)和數(shù)字圖像處理實(shí)現(xiàn)非涉密外網(wǎng)與涉密內(nèi)網(wǎng)數(shù)據(jù)的單向傳輸。
上述文獻(xiàn)提出的應(yīng)用模式對(duì)條碼信息容量提出很高的要求,但沒(méi)有給出可行的大容量條碼技術(shù)方案。在二維碼基礎(chǔ)上,用顏色擴(kuò)充第三維信息,實(shí)現(xiàn)三維碼設(shè)計(jì),增大信息容量,是一種簡(jiǎn)單易行的方式。
QR碼,即快速響應(yīng)矩陣碼,應(yīng)用非常廣泛,特別在移動(dòng)互聯(lián)網(wǎng)時(shí)代無(wú)處不在的掃碼應(yīng)用中,QR碼更是不可或缺的標(biāo)識(shí)形式。QR碼按模塊數(shù)量不同分為40個(gè)不同版本,其中版本1規(guī)格為21×21個(gè)模塊,版本40規(guī)格為177×177個(gè)模塊。不同版本信息容量不同,表1給出了幾種版本模塊數(shù)量對(duì)應(yīng)的數(shù)據(jù)容量情況[8]。
表1 不同版本模塊數(shù)量及數(shù)據(jù)容量
如圖1所示,QR碼中用黑白模塊表示一個(gè)比特位的數(shù)據(jù)信息,并設(shè)計(jì)了定位圖形、矯正圖形,可實(shí)現(xiàn)快速識(shí)讀,在圖像彎曲、變形情況下仍具有較強(qiáng)的識(shí)別能力[9-13]。
圖1 QR碼符號(hào)示例
在二維碼基礎(chǔ)上,增加顏色信息,即形成所謂彩色二維碼,可以增加二維碼的信息容量,這也是多維碼/三維碼的一種主要形式。對(duì)于相同的模塊結(jié)構(gòu),黑白碼每個(gè)模塊表示1個(gè)比特位,而四種顏色時(shí)每個(gè)模塊可以表示兩個(gè)比特位的信息,容量增加一倍。
微軟公司制定了Microsoft Tag 多維碼,這種二維條碼有四色和八色兩種版本,主要用于保存URL、vCard 和電話。解碼時(shí)需要根據(jù)解碼得到的索引號(hào)連接到服務(wù)器中獲取相應(yīng)數(shù)據(jù)。Microsoft Tag 針對(duì)不同的內(nèi)容打開(kāi)不同的應(yīng)用,實(shí)現(xiàn)了單個(gè)條碼對(duì)應(yīng)多條信息[14]。
韓國(guó)ColorZip 公司推出一種名叫ColorCode 的多維碼,該條碼由延世大學(xué)的研究小組開(kāi)發(fā),并逐漸推出了相關(guān)產(chǎn)品。ColorCode 的特點(diǎn)是像照片那樣由一看即懂的圖案構(gòu)成,重點(diǎn)在于條碼外觀的個(gè)性化設(shè)計(jì),條碼內(nèi)只存了一個(gè)索引信息,使用時(shí)將解碼得到的索引發(fā)送給服務(wù)器,服務(wù)器將索引對(duì)應(yīng)的相關(guān)信息發(fā)送到手機(jī)上。ColorCode 本身的信息容量并不高,獲取信息需要和Microsoft Tag一樣聯(lián)網(wǎng),沒(méi)有離線獲取信息的功能[15-17]。
清華大學(xué)的關(guān)濤[18]分析了Data Matrix 條碼的生成過(guò)程,并對(duì)其進(jìn)行信息擴(kuò)展,生成了一種新的彩色Data Matrix 條碼。Data Matrix 條碼能夠離線解碼數(shù)據(jù),且其數(shù)據(jù)容量相對(duì)于二維碼提高了很多。
類(lèi)似彩色Data Matrix碼,也可以在QR碼基礎(chǔ)上擴(kuò)展模塊的顏色,形成新的二維碼方案。陳元枝等[19-20]提出一種彩色QR碼方案,每一個(gè)模塊表示的不僅僅是一位的二進(jìn)制數(shù)據(jù),可以表示兩位、三位甚至更多。假設(shè)編碼采用的顏色數(shù)量為2 k,則QR碼符號(hào)中每個(gè)模塊可以儲(chǔ)存的比特?cái)?shù)就是k。為了保證彩色QR碼的可靠性和健壯性,這種彩色QR碼方案只改變了數(shù)據(jù)編碼區(qū)域的顏色信息,功能圖形依然使用的是普通的黑白QR碼的,這樣可以最大程度的保證其和普通黑白QR碼的兼容性。
上述彩色二維碼方案中,Microsoft Tag和ColorCode主要目的是為用戶提供一種更絢麗的條碼方案,而非擴(kuò)大數(shù)據(jù)容量。文獻(xiàn)[18-20]提出的方案中,直接對(duì)表示數(shù)據(jù)的圖形模塊進(jìn)行顏色擴(kuò)展,從而提高信息容量。這種設(shè)計(jì)思路容易理解,但是新的條碼與Data Matrix或QR碼不僅結(jié)構(gòu)上不兼容,而且對(duì)數(shù)據(jù)編碼、糾錯(cuò)碼的設(shè)計(jì)也帶來(lái)影響,限制了新方案的應(yīng)用。
QR碼性能良好,應(yīng)用非常廣泛。在QR碼基礎(chǔ)上,擴(kuò)展第三個(gè)維度的顏色信息,可以增加信息容量,不僅繼承了QR碼的優(yōu)點(diǎn),還有利于彩色二維碼的應(yīng)用普及。基于該思想,設(shè)計(jì)新型彩色QR碼技術(shù)方案。
首先,將需要寫(xiě)入二維碼的信息按照先后順序平均分成前、后兩部分,按照普通QR碼的生成方法,將兩部分?jǐn)?shù)據(jù)分別寫(xiě)入前、后兩個(gè)相同版本的QR碼中,也即兩個(gè)二維碼的位置探測(cè)圖形、定位圖形、分隔符、版本信息和格式信息完全一樣。
然后,根據(jù)上述兩個(gè)普通QR碼符號(hào),生成彩色QR碼,彩色QR碼模塊顏色定義的規(guī)則如表2所示。例如前后兩個(gè)QR碼相應(yīng)位置模塊為白色和黑色,則彩色QR碼相應(yīng)位置模塊為紅色。
表2 彩色QR碼模塊顏色定義規(guī)則
該彩色QR碼位置探測(cè)圖形、定位圖形、分隔符、版本信息和格式信息完全遵循QR碼的技術(shù)標(biāo)準(zhǔn),也不需要考慮模塊掩模、糾錯(cuò)等問(wèn)題。
解碼時(shí),根據(jù)彩色QR碼的模塊顏色,按照表2規(guī)則反向操作,將彩色QR碼還原為前、后兩個(gè)黑白QR碼,分別提取存儲(chǔ)的信息,最后按前、后順序?qū)刹糠中畔⑵唇釉谝黄?,得到所需的完整信息。綜上所述,彩色QR編碼、解碼流程如圖2所示。
圖2 彩色QR碼編碼/解碼流程
相比黑白二維碼,提高解碼的可靠性是彩色二維碼面臨的一個(gè)關(guān)鍵問(wèn)題,增加顏色維度不僅影響二維碼符號(hào)圖形的檢測(cè),增加模塊的顏色類(lèi)型,也會(huì)影響提取信息的準(zhǔn)確性。
為了提高彩色QR碼識(shí)別的可靠性,在選擇模塊顏色時(shí),盡可能使顏色之間的區(qū)分度更大。眾所周知,紅色、綠色、藍(lán)色是三原色,按比例混合可以得到各種其他顏色。圖3為RGB顏色空間示意圖,RGB顏色空間處在邊長(zhǎng)為1的正方體中,紅色、綠色、藍(lán)色分別位于立方體在坐標(biāo)軸上的三個(gè)頂點(diǎn)上,坐標(biāo)系原點(diǎn)處為黑色,其他定點(diǎn)分別對(duì)應(yīng)白色、黃色、品紅和青色。
圖3 RGB顏色空間示意圖
顏色空間中,空間距離越大,顏色區(qū)分度越高。因此,彩色QR碼模塊顏色可以選擇RGB空間頂點(diǎn)處的顏色。方案中,彩色QR碼定位圖形、校正圖形仍然為黑色,這樣可以提高這些圖形識(shí)別的準(zhǔn)確性。
綜上所述,在彩色QR碼方案設(shè)計(jì)中,選擇了黑色、白色、紅色、藍(lán)色作為模塊的四種顏色,具體配色規(guī)則見(jiàn)表2。
在Visual Studio 2012開(kāi)發(fā)平臺(tái)上,采用C#編程語(yǔ)言編程實(shí)現(xiàn)了新型彩色QR碼生成、解碼功能。
測(cè)試中,分別輸入10個(gè)、20個(gè)、30個(gè)漢字,程序?qū)⒆址譃閮刹糠郑謩e生成前、后兩個(gè)相同版本的QR碼,并依據(jù)表2定義的規(guī)則自動(dòng)生成彩色QR碼,并用惠普LaserJet Pro CP1025 彩色激光打印機(jī)打印出來(lái)。圖4中,需要存儲(chǔ)的字符串是“白日依山盡黃河入海流”,分段后分別生成兩個(gè)QR碼。其中,圖4(a)存儲(chǔ)的信息是“白日依山盡”,圖4(b)中存儲(chǔ)的是“黃河入海流”,圖4(c)是合成的彩色(不同灰度)QR碼。
(a) 前二維碼(b) 后二維碼(c) 對(duì)應(yīng)彩色QR碼 圖4 彩色QR碼生成實(shí)例
解碼時(shí),用攝像機(jī)采集彩色QR碼圖像,基于普通QR碼圖像分析原理,實(shí)現(xiàn)二維碼的定位及模塊分割。計(jì)算每個(gè)功能模塊所有像素R、G、B的均值,對(duì)均值歸一化后,計(jì)算其與RGB顏色空間中黑色、白色、紅色、藍(lán)色的空間距離,按距離大小實(shí)現(xiàn)模塊顏色的判斷。由于采用所有像素的統(tǒng)計(jì)特性,所以能最大化提高模塊顏色判定的準(zhǔn)確性。依據(jù)模塊的顏色,按照表2定義的規(guī)則,還原兩個(gè)普通QR碼,提取兩個(gè)QR碼中的信息并拼接得到完整信息,完成彩色QR碼的解碼過(guò)程。
分別在不同情況下對(duì)彩色QR碼的識(shí)別準(zhǔn)確率進(jìn)行測(cè)試:正常情況下的測(cè)試、皺褶或彎曲情況下的測(cè)試、顏色光照明條件下的測(cè)試。
在自然漫反射環(huán)境光下進(jìn)行彩色QR碼識(shí)別測(cè)試,印刷彩色QR碼的紙張平整,攝像機(jī)正向采集圖像。此時(shí)彩色QR碼識(shí)讀穩(wěn)定,沒(méi)有出現(xiàn)數(shù)據(jù)差錯(cuò)。
測(cè)試中,過(guò)度的皺褶、彎曲導(dǎo)致數(shù)據(jù)錯(cuò)誤、甚至無(wú)法識(shí)別,這是由圖形定位錯(cuò)誤、模塊分割錯(cuò)誤引起。測(cè)試中,保證標(biāo)準(zhǔn)黑白QR碼能夠被正確識(shí)別,在同等皺褶、彎曲條件下,測(cè)試彩色QR碼識(shí)別準(zhǔn)確性的差異。經(jīng)過(guò)100次試驗(yàn)(其中皺褶80次、彎曲20次),彩色QR碼正確識(shí)別97次,準(zhǔn)確性略有下降。
在顏色光照明條件下進(jìn)行彩色QR碼識(shí)別測(cè)試,分別用紅、綠、藍(lán)單色光照明,QR碼能夠正確定位,但數(shù)據(jù)大量錯(cuò)誤。顯而易見(jiàn),彩色QR碼中,模塊的顏色包含了數(shù)據(jù)信息,在偏色條件下,可能導(dǎo)致顏色識(shí)別錯(cuò)誤,數(shù)據(jù)不能得到正確解碼。
實(shí)驗(yàn)表明,正常條件下,彩色QR碼識(shí)別準(zhǔn)確率與QR碼持平,具有較高的可靠性。但對(duì)照明光的偏色敏感,過(guò)度偏色將導(dǎo)致數(shù)據(jù)出現(xiàn)明顯差錯(cuò)。因此應(yīng)用過(guò)程中,應(yīng)盡可能采用自然光、日光燈等白光源照明。
QR碼是一種廣泛應(yīng)用的數(shù)據(jù)載體形式,通過(guò)增加顏色維度可以成倍增加數(shù)據(jù)容量,拓寬二維碼的應(yīng)用范圍。本文設(shè)計(jì)的彩色二維碼在保留QR碼圖形特征、數(shù)據(jù)編碼特征的基礎(chǔ)上,將信息切分兩段,分別生成QR碼,按特定顏色定義規(guī)則合成為彩色二維碼。如果增加顏色種類(lèi),可以進(jìn)一步增加信息容量。該方案原理簡(jiǎn)潔、實(shí)用,識(shí)別穩(wěn)定可靠,在彩色QR碼合成前及分解后,與標(biāo)準(zhǔn)QR碼完全兼容,比較容易得到推廣。