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