一種彩色三維碼圖像識讀前的預(yù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及條碼識讀領(lǐng)域,尤其涉及一種彩色三維碼圖像識讀前的預(yù)處理方法;尤其適用于對彩色三維碼出現(xiàn)的顏色失真和幾何形變的處理。
【背景技術(shù)】
[0002]在上世紀(jì)七十年代,美國超級市場委員會制定出通用商品代碼(UniversalProduct Code,UPC碼)后,條碼技術(shù)逐漸進(jìn)入零售業(yè)、庫存管理等商業(yè)領(lǐng)域。隨后美國統(tǒng)一編碼委員會(Uniform Code Council,UCC)和歐洲編碼協(xié)會相繼制定了條形碼標(biāo)準(zhǔn),使條碼技術(shù)進(jìn)入蓬勃發(fā)展時期。但一維條形碼(如圖1所示)信息容量只有幾十個字符,僅能存儲“指針”信息,其使用必須依賴于數(shù)據(jù)庫。
[0003]為了提高條碼的信息密度和和存儲容量,以QR(Quick Response,快速讀取)碼(如圖2所示)為代表的平面二維碼開始出現(xiàn),其相比于條形碼信息密度提高了幾十倍,容量也提高到了幾百個字節(jié),能存儲描述性的文本信息和小幅圖片。
[0004]隨著條碼技術(shù)的廣泛使用,條碼信息存儲容量的需求也在不斷增加,希望能存儲數(shù)據(jù)量較大的多媒體信息(如音頻、視頻),為此必須進(jìn)一步提高條碼的信息密度和信息容量,因此,三維碼的研宄也就此展開。
[0005]三維碼的三維由平面二維再加一維深度構(gòu)成。深度維可以是空間三維的深度、灰度或者色彩維度。空間三維碼(或稱為立體三維碼)由于在生成和解碼時需要采用復(fù)雜的設(shè)備,實用性不高,相關(guān)研宄較少;灰度三維碼能運用的灰度值范圍較窄,對條碼的信息密度提升有限,實際應(yīng)用價值不大。彩色三維碼不僅能提升信息密度,而且生成的碼圖具有很好的視覺效果,所以相關(guān)的研宄也最多。
[0006]然而,引入色彩維度后碼圖識別的魯棒性降低,光照的強度和色度都會對解碼造成很大困擾。當(dāng)碼圖面積較大時,采集得到的圖像容易出現(xiàn)光照不均勻和幾何形變,會對解碼造成較大的誤碼率。且為了保證解碼信息的準(zhǔn)確性,現(xiàn)有彩色三維碼都對存儲容量做了一定程度的限制,其相對于二維碼的優(yōu)勢僅在表達(dá)相同信息時占用面積更小。
【發(fā)明內(nèi)容】
[0007]針對上述問題,本發(fā)明的目的:旨在提供一種彩色三維碼圖像識別前的預(yù)處理的方法,其分別通過聚類算法和幾何形變矯正算法,矯正彩色三維碼圖識別過程中出現(xiàn)的顏色失真和幾何變形,不僅提高了顏色識別的魯棒性,同時識別碼圖時對平面面積的敏感性。
[0008]本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案如下:
[0009]這種彩色三維碼圖像識讀前的預(yù)處理方法,針對彩色三維碼圖在識讀過程中出現(xiàn)的色彩失真,首先利用聚類算法將所述彩色三維碼圖中的每個像素點進(jìn)行分類;而后根據(jù)不同顏色在色彩空間的特征確定聚類標(biāo)簽值對應(yīng)的色彩種類;最后對所述像素點重新賦值以完成所述色彩校正,具體步驟如下:
[0010]Sll統(tǒng)計所述彩色三維碼圖中的顏色種類,并提取所述彩色三維碼圖中每個像素點的色度分量值;
[0011]S12利用聚類算法根據(jù)所述色度分量值和所述彩色三維碼圖中的顏色種類將每個所述像素點進(jìn)行重新歸類,并使用預(yù)設(shè)標(biāo)簽對每個重新歸類的像素點進(jìn)行標(biāo)定;
[0012]S13根據(jù)每個所述像素點的預(yù)設(shè)標(biāo)簽值重新賦予其理想的色彩空間值,完成所述三維碼圖的色彩校正。
[0013]優(yōu)選地,在步驟Sll中,將所述三維碼圖從RGB空間中轉(zhuǎn)換到亮度和色度分離的色彩空間(Lab空間)中,進(jìn)而從所述色彩空間中提取每個像素點的色度分量值。在本技術(shù)方案中,Lab空間中,由亮度(L)和有關(guān)色彩的a, b三個要素組成。其中,L表示亮度(Luminosity),a表示從洋紅色至綠色的范圍,b表示從黃色至藍(lán)色的范圍。
[0014]優(yōu)選地,在步驟S13中,對每個所述像素點重新賦予RGB色彩空間的值。
[0015]優(yōu)選地,對所述彩色三維碼圖進(jìn)行了色彩校正之后,緊接著通過獲取每個模塊中包含的像素數(shù),并采樣得到所述彩色三維碼圖邊界的外輪廓點進(jìn)而通過直線擬合得到所述三維碼圖的頂點,最后通過插值透視變換完成對所述三維碼圖的校正,具體步驟如下:
[0016]S21將所彩色三維碼圖進(jìn)行模塊劃分;
[0017]S22選取所述彩色三維碼圖中一包含固定模塊數(shù)量的固定區(qū)域,并根據(jù)所述固定區(qū)域獲取每個所述模塊中包含的像素數(shù);
[0018]S23根據(jù)所述每個所述模塊中包含的像素數(shù)確定采樣間距;
[0019]S24根據(jù)所述采樣間距在所述三維碼圖的四條邊界上分別進(jìn)行采樣獲取采樣點,并記錄所述采樣點的坐標(biāo)值;
[0020]S24分別對每條所述邊界上的所述采樣點進(jìn)行直線擬合,并獲取相鄰所述邊界直線擬合后的直線交點坐標(biāo);
[0021]S25將獲取的所述四個交點坐標(biāo)映射到一個矩形的四個頂點得到透視變換的矩陣,同時將所述彩色三維碼圖一一映射到新彩色三維碼圖中;
[0022]S26所述新彩色三維馬蹄中空缺的像素點通過插值的方法進(jìn)行填充,以此完成對所述彩色三維碼圖的幾何校正。
[0023]優(yōu)選地,在步驟S23中,所述采樣間距至少為每個所述模塊中包含的像素數(shù)的兩倍。
[0024]優(yōu)選地,在步驟S25中,透視變換的目標(biāo)矩形長寬為所述彩色三維碼圖頂點間距離的整數(shù)倍。
[0025]優(yōu)選地,在步驟S26中,所述新彩色三維碼圖中空缺的像素點通過臨近插值的方法進(jìn)行填充。
[0026]與現(xiàn)有技術(shù)相比,本發(fā)明具有如下有益效果:
[0027]1.在本發(fā)明中,由于彩色三維碼中使用的色彩種類數(shù)是固定的,如4種、8種、16種顏色等,因而利用聚類算法可以根據(jù)像素點色度值的間距大小區(qū)分出確定數(shù)目的類別,即根據(jù)每個像素點的色度值使用聚類算法將其進(jìn)行重新歸類以實現(xiàn)對彩色三維碼在識讀過程中出現(xiàn)的顏色失真的矯正,有效地降低了局部像素點對整體識別的影響;
[0028]2.在本發(fā)明中,由于每個像素點的亮度值對于色彩種類識別沒有意義,因而表達(dá)信息僅采用了色度分量;通過在識別彩色三維碼圖的顏色種類時,利用色彩空間的轉(zhuǎn)換剔除亮度分量,再對色度分量的值進(jìn)行聚類分析實現(xiàn)對顏色失真的矯正,如此以來,既提高了彩色三維碼圖顏色識別對光照的魯棒性,同時降低了使用聚類算法對每個像素進(jìn)行重新歸類所需的時間;
[0029]3.由于彩色三維碼圖會占用一定的平面面積,在實際解碼時采集得到的彩色三維碼圖容易局部出現(xiàn)一些凹凸形變,通過幾何形變矯對彩色三維碼圖進(jìn)行幾何校正,大大提高了識別效率。
【附圖說明】
[0030]圖1為傳統(tǒng)一維條形碼結(jié)構(gòu)圖;
[0031 ] 圖2為QR碼二維碼結(jié)構(gòu)圖;
[0032]圖3為本發(fā)明中矯正彩色三維碼圖的色彩的流程示意圖;
[0033]圖4為本發(fā)明中通過掃描或拍照獲取的彩色三維碼圖;
[0034]圖5為本發(fā)明中經(jīng)過聚類算法之后采用標(biāo)簽值標(biāo)定的彩色三維碼圖;
[0035]圖6為本發(fā)明中經(jīng)過色彩校正的彩色三維碼圖;
[0036]圖7為本發(fā)明中對彩色三維碼進(jìn)行幾何校正的流程示意圖;
[0037]圖8為本發(fā)明中通過采樣獲取的彩色三維碼的外輪廓點和頂點的示意圖;
[0038]圖9為本發(fā)明中經(jīng)過色彩校正和幾何校正后的彩色三維碼圖。
[0039]附圖標(biāo)記:
[0040]A-藍(lán)色標(biāo)簽值,B-白色和黑色標(biāo)簽值,C-紅色標(biāo)簽值,D-綠色標(biāo)簽值
【具體實施方式】
[0041]下面結(jié)合附圖和【具體實施方式】對本發(fā)明作進(jìn)一步詳細(xì)說明:
[0042]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面結(jié)合附圖和實施例對本發(fā)明進(jìn)行具體的描述。下面描述中的附圖僅僅是本發(fā)明的一些實施例。對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0043]作為本發(fā)明的第一實施例,本發(fā)明提供的彩色三維碼圖像識讀前的預(yù)處理方法主要針對彩色三維碼圖在識讀過程中出現(xiàn)的色彩失真情況,在矯正其彩色失真的過程中首先利用聚類算法將彩色三維碼圖中的每個像素點進(jìn)行分類,根據(jù)不同顏色在色彩空間的特征確定聚類標(biāo)簽值對應(yīng)的色彩種類,最后對像素點重新賦予理想色彩空間以完成色彩校正。且為了增加在不同光照條件下識別彩色三維碼圖的魯棒性,將彩色三維碼圖從RGB空間轉(zhuǎn)換到亮度和色度分離的色彩空間(如Lab空間),聚類時僅考慮色度域的值。如圖3所示,對彩色三維碼圖進(jìn)行色彩校正的具體步驟如下:
[0044]Sll統(tǒng)計彩色三維碼圖中的顏色種類,并提取彩色三維碼圖中每個像素點的色度分量值。
[0045]—般來說,在具體實施例中,可以通過拍照或掃描的方式獲取彩色三維碼圖,隨后將三維碼圖從RGB空間中轉(zhuǎn)換到亮度和色度分離的色彩空間,如Lab空間中,進(jìn)而從色彩空間中提取每個像素點的色度分量值,忽略掉亮度通道的值。對于彩色三維碼圖中的顏色種類,目前在彩色三維碼中的數(shù)量相對固定,如包括4種、8種、16種等。最后要說明的是,在本發(fā)明中,我們對轉(zhuǎn)換的色彩空間不做具體限定,在其他實施例中,還可以根據(jù)時間復(fù)雜度、空間復(fù)雜度等因素靈活地選擇色彩空間,只要能實現(xiàn)本發(fā)明的目的,都包括在本發(fā)明的內(nèi)容中。
[0046]S12利用聚類算法根據(jù)色度分量值和彩色三維碼圖中的顏色種類將每個像素點進(jìn)行重新歸類,并使用預(yù)設(shè)標(biāo)簽對每個重新歸類的像素點進(jìn)行標(biāo)定。在具體實施例中,如果使用的是Lab彩色空間,則忽略掉了 L通道的亮度值以后,將a和b通道的值進(jìn)行重新組合,并利用聚類算法將像素點聚類為與彩色三維碼中顏色相同的類別并使用標(biāo)簽分別進(jìn)行標(biāo)定。如當(dāng)在彩色三維碼中使用了 4種顏色,則使用聚類算法將其歸為4類,并使用1、2、3、和4分別對4類顏色進(jìn)行標(biāo)定。以此類推,若三維碼中使用了 8中顏色,則使用類聚算法將其歸