專利名稱:二維條形碼的讀出方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種二維條形碼的讀出方法,尤其涉及在讀出裝置小型化的同時(shí)提高讀出速度的二維條形碼的讀出方法。
例如,各種商品使用一維條形碼,可以實(shí)現(xiàn)對(duì)商品的庫(kù)存管理和銷售管理。然而,因?yàn)橛涗浀男畔⒘可俚木壒?,例如只能記錄商品的檢索碼。所以,只能基于這種檢索碼,再查詢數(shù)據(jù)庫(kù),從數(shù)據(jù)中獲取大量的商品信息。
針對(duì)這種現(xiàn)狀,在1平方厘米的INTACTA.CODE碼中的信息量,例如400~500字節(jié)的情況下,一枚紙張可以記錄大量的商品信息。同時(shí)也具有不必配置外部數(shù)據(jù)庫(kù)的優(yōu)點(diǎn)。
以往使用掃描器等線傳感器來(lái)讀取在紙張上印刷的INTACTA.CODE碼。這樣,使用線傳感器讀取的INTACTA.CODE碼在數(shù)字?jǐn)?shù)據(jù)化后,例如,導(dǎo)入計(jì)算機(jī)通過(guò)復(fù)原程序可以將INTACTA.CODE碼的記錄信息復(fù)原出來(lái)?,F(xiàn)在,INTACTA.CODE碼的復(fù)原程序在現(xiàn)今互聯(lián)網(wǎng)中有廣泛的發(fā)布。
發(fā)明內(nèi)容
然而,上述讀取紙張上印刷的INTACTA.CODE碼的方式使用掃描器等線傳感器,必須有驅(qū)動(dòng)線傳感器的驅(qū)動(dòng)電路等,讀取裝置復(fù)雜且規(guī)模大,同時(shí)因?yàn)閷?duì)每一線條要單獨(dú)讀取的緣故,存在著讀出速度非常慢的問(wèn)題。
鑒于上述情況,本發(fā)明者提出使用面?zhèn)鞲衅髯x取INTACTA.CODE碼,在使讀出裝置小型化的同時(shí),提高讀出速度的想法。
為了實(shí)現(xiàn)讀出裝置的小型化,要縮短面?zhèn)鞲衅魃贤哥R的焦距,這樣,獲得的INTACTA.CODE碼的圖像就會(huì)發(fā)生畸變和亮度斑駁,就會(huì)出現(xiàn)不能正確復(fù)原記錄信息的問(wèn)題。要解決這個(gè)問(wèn)題,要么增長(zhǎng)透鏡的焦距,要么減少INTACTA.CODE碼的信息量。前者導(dǎo)致讀出裝置的大型化和成本提高,后者則不能發(fā)揮INTACTA.CODE碼的特長(zhǎng)。
鑒于上述現(xiàn)有技術(shù)的問(wèn)題,本發(fā)明的目的是使INTACTA.CODE碼讀出裝置小型化的同時(shí),提高讀出速度。
另外,本發(fā)明的其它目的包括,在使用裝配短焦點(diǎn)透鏡的面?zhèn)鞲衅髯x取INTACTA.CODE碼時(shí),通過(guò)對(duì)獲取的INTACTA.CODE碼圖像的畸變和亮度斑駁實(shí)施校正,實(shí)現(xiàn)正確的記錄信息的復(fù)原。
本發(fā)明的特征包括使用面?zhèn)鞲衅鲗?duì)印刷在紙張等上的二維條形碼攝像獲取二維條形碼的圖像,針對(duì)該圖像實(shí)施以下步驟(1)根據(jù)投影變換對(duì)畸變實(shí)施校正的步驟;(2)對(duì)上述圖像中出現(xiàn)的亮度斑駁實(shí)施校正的步驟;(3)根據(jù)由上述2個(gè)校正步驟校正的二維條形碼圖像數(shù)據(jù),對(duì)二維條形碼實(shí)施解碼的步驟。
這樣的結(jié)構(gòu)因?yàn)槭褂昧嗣鎮(zhèn)鞲衅鱽?lái)讀取二維條形碼,和用線傳感器的方式相比,讀取速度有大幅度提高。
另外,為了校正用面?zhèn)鞲衅鲾z像獲取的二維條形碼圖像的畸變和亮度斑駁,需要設(shè)立上述軟件處理的(1)、(2)步驟,這樣就可以采用價(jià)格低廉的使用緊湊型短焦距鏡頭的面?zhèn)鞲衅?,其結(jié)果,就可以實(shí)現(xiàn)讀出裝置的小型化。
希望的實(shí)施方式如下所述。
即,根據(jù)投影變換對(duì)畸變進(jìn)行校正的步驟包括基于正方格子的4個(gè)頂點(diǎn)座標(biāo)和使用面?zhèn)鞲衅鳙@得的畸變圖像的正方格子的4個(gè)頂點(diǎn)座標(biāo)求解校正數(shù)據(jù)的步驟,基于該畸變校正數(shù)據(jù)對(duì)上述面?zhèn)鞲衅鳙@得的二維條形碼圖像根據(jù)投影變換實(shí)施畸變校正的步驟。
另外,對(duì)圖像實(shí)施亮度斑駁校正的步驟包括對(duì)面?zhèn)鞲衅鳙@得的二維條形碼圖像實(shí)施復(fù)數(shù)條塊分割的步驟,對(duì)每一個(gè)條塊實(shí)施亮度校正的步驟。
對(duì)每一個(gè)條塊實(shí)施亮度校正的步驟包括針對(duì)上述每一個(gè)條塊,根據(jù)該條塊的像素亮度分布求解條塊基準(zhǔn)值的步驟,根據(jù)圖像整體的亮度分布求解整體基準(zhǔn)值的步驟,根據(jù)條塊基準(zhǔn)值和整體基準(zhǔn)值,對(duì)每一條塊實(shí)施亮度校正的步驟。
圖2是說(shuō)明和本發(fā)明實(shí)施方式相關(guān)的二維條形碼讀出方法的流程圖。
圖3是根據(jù)投影變換校正圖像畸變的示意圖。
圖4是根據(jù)投影變換校正圖像畸變的示意圖。
圖5是說(shuō)明校正圖像亮度斑駁的圖。
圖6是說(shuō)明校正圖像亮度斑駁的圖。
圖7是說(shuō)明校正圖像亮度斑駁的圖。符號(hào)說(shuō)明1-LED/(發(fā)光二極管);2-透鏡;3-CMOS/(圖像傳感器);4-圖像處理電路;5-CPU(中央處理器);6-JPEG(格式處理器);7-圖像內(nèi)存;8-USB接口;9-USB電纜;10-個(gè)人電腦(微機(jī));50-紙片;51-條形碼區(qū)域。
CMOS圖像傳感器3的輸出信號(hào)經(jīng)過(guò)圖像處理電路4進(jìn)行圖像處理后轉(zhuǎn)換成特定的數(shù)字?jǐn)?shù)據(jù)。從圖像處理電路4輸出的圖像數(shù)據(jù),依從CPU5的指令,通過(guò)JPEG6、圖像內(nèi)存7被壓縮。
另外,壓縮后的圖像數(shù)據(jù)、通過(guò)USB接口8、USB電纜9,輸入到個(gè)人電腦10中。還有,CPU5按照程序內(nèi)存11(例如,閃存)中程序的指令,對(duì)JPEG6、圖像內(nèi)存、USB接口8等實(shí)施控制。個(gè)人電腦10對(duì)接收到的圖像數(shù)據(jù)進(jìn)行各種校正(見(jiàn)后述內(nèi)容)。
另外,在上述二維條形碼讀出系統(tǒng)中,除去個(gè)人電腦10的部分,構(gòu)成了基于面?zhèn)鞲衅鞯淖x出裝置。
圖2是說(shuō)明二維條形碼讀出方法的流程圖。在步驟101中,上述基于面?zhèn)鞲衅鞯淖x出裝置讀取二維條形碼。
另外,由個(gè)人電腦10實(shí)行軟件處理。在步驟102中,針對(duì)個(gè)人電腦10獲得的圖像數(shù)據(jù),根據(jù)投影變換對(duì)圖像畸變實(shí)施校正。在透鏡2為短焦距的情況和相對(duì)于透鏡2傾斜的情況下,上述步驟是對(duì)拍攝的圖像的畸變進(jìn)行校正的步驟。
另外,在步驟103中,對(duì)圖像的亮度斑駁實(shí)施校正。發(fā)光二極管LED1在印刷有INTACTA.CODE碼的區(qū)域51不可能亮度均勻的照明,圖像上有亮度的斑駁。上述步驟就是針對(duì)這種情況的校正步驟。其特征是,將圖像分割成復(fù)數(shù)條塊,針對(duì)每一條塊進(jìn)行校正。另外,步驟102和步驟103的實(shí)行順序可以調(diào)換。
另外,在步驟104中,對(duì)校正后的圖像數(shù)據(jù)進(jìn)行解碼。例如,通過(guò)執(zhí)行INTACTA.CODE碼的復(fù)原程序,將INTACTA.CODE碼解碼后,就可以得到文字或圖像等的記錄信息。
下面,針對(duì)上述步驟102的“通過(guò)投影變換校正圖像畸變”、步驟103的“通過(guò)條塊分割校正亮度斑駁”,參照?qǐng)D面進(jìn)行詳細(xì)說(shuō)明。
圖3、圖4是通過(guò)投影變換校正圖像畸變的說(shuō)明圖。所謂投影變換,就是對(duì)圖像的某些部分進(jìn)行縮小、而對(duì)某些部分進(jìn)行放大的數(shù)據(jù)處理方法。投影變換首先將指定需變換的四邊形的4個(gè)頂點(diǎn)座標(biāo),然后將每個(gè)頂點(diǎn)移動(dòng)到變換后的座標(biāo),需要移動(dòng)多少由投影變換決定。
圖3(A)是由讀出裝置拍攝的二維條形碼的圖像。為了使讀出裝置小型化,使用的是短焦距透鏡2,攝像機(jī)和拍攝距離(透鏡2和紙片50上印刷的二維條形碼之間的距離)非常短。因而,拍攝的二維條形碼的周圍變圓,像在角上打了結(jié)一樣。由于圖像畸變,這樣不可能對(duì)條形碼進(jìn)行解碼。另外,攝像機(jī)的拍攝距離越短,這種畸變就越嚴(yán)重。
為了校正畸變,在這里首先通過(guò)讀出裝置拍攝均勻地印刷在紙片50上的正方格子,得到圖3(B)的圖像。從圖像中可以看出正方格子的畸變。求解出畸變正方格子的、畸變正方形的4個(gè)頂點(diǎn)座標(biāo)O、P、Q、R(圖4)。
將以上求解得到的畸變正方形進(jìn)行投影變換,相應(yīng)地變換成正方形。例如,在圖4中,投影變換前的頂點(diǎn)O、P、Q、R分別移動(dòng)到O’、P’、Q、R,就得到了投影變換后的正方形。這樣,如圖3(C)所示,畸變的正方形就被校正過(guò)來(lái)了。通過(guò)上述操作,就知道了對(duì)于每個(gè)正方形其中的像素怎樣移動(dòng)是合適的。通過(guò)這些頂點(diǎn)就可以求出投影變換行列,作為校正數(shù)據(jù)保存下來(lái)。
這樣,使用校正數(shù)據(jù)對(duì)拍攝的二維條形碼圖像(圖3(A))實(shí)施投影變換,就可以得到如圖3(D)所示校正后的圖像。從這個(gè)圖像可以看出,圖像周圍的圓形畸變被校正過(guò)來(lái)了。這樣,基于校正后的圖像,就可能復(fù)原二維條形碼。
接下來(lái),針對(duì)步驟103的“通過(guò)條塊分割校正亮度斑駁”,參照?qǐng)D5至圖7進(jìn)行詳細(xì)說(shuō)明。在使用基于面?zhèn)鞲衅鞯淖x出裝置拍攝二維條形碼的情況下,得到像圖5(A)所示的亮度均勻的圖像是理想情況。
然而,實(shí)際情況是,由于裝配在讀出裝置上的LED1的位置的影響,得到的圖像明亮不均,如圖5(B)所示。在圖5(B)所示的圖像例子中,LED1是配置在紙片50的上下附近,故圖像的上下明亮,圖像的中央部分黯淡。
因此,這樣的二維條形碼不能夠正確的復(fù)原。在這里,對(duì)這樣的圖像施加亮度的圖像處理,為了得到理想的圖像,將比某基準(zhǔn)值(閾值)暗的顏色變換成黑色,另外將比某基準(zhǔn)值(閾值)亮的顏色變換成白色(以下簡(jiǎn)稱2值化處理),就可以得到圖5(C)這樣的圖像。
在這個(gè)例子中,將二維條形碼圖像的上下部分都切除了。原因是圖像的上下部分的明亮區(qū)域中像素的“黑”比中央部分的黯淡區(qū)域中像素的“白”還要明亮,如果使用同一基準(zhǔn)值進(jìn)行亮度校正,則圖像的上下部分的明亮區(qū)域中的像素“黑”都會(huì)變換成白。
為了解決這個(gè)問(wèn)題,需要進(jìn)行下面的校正處理。
將由讀出裝置拍攝的二維條形碼的圖像數(shù)據(jù)分割成點(diǎn)陣狀的復(fù)數(shù)條塊Bi。這種條塊分割的例子如圖5(D)所示。這樣,各條塊Bi按照各自的基準(zhǔn)值實(shí)行亮度校正。具體的例子如圖6所示,求出每一個(gè)條塊Bi中像素(點(diǎn))的亮度(像素值)的分布。
這里的像素值是亮度數(shù)值化的結(jié)果,在0~255之間變化。像素值0最暗,像素值255最亮。因?yàn)樵趫D像中存在黑和白的像素,假定將像素值分成黑和白兩種分布。這樣,將這兩種分布的中間的像素值選擇為基準(zhǔn)值A(chǔ)i。因此,針對(duì)每一條塊Bi,基準(zhǔn)值A(chǔ)i就成為反映條塊亮度的數(shù)值。另外,在黑和白的分布不能完全分開(kāi)的情況下,通過(guò)計(jì)算黑和白分布的約中間值作為基準(zhǔn)值A(chǔ)i。
另一方面,求出圖像整體的亮度(像素值)。這樣,通過(guò)整體的分布同樣可以求出整體的基準(zhǔn)值A(chǔ)T。圖7是說(shuō)明亮度校正的原理圖。橫軸代表圖像的一個(gè)方向的座標(biāo),例如,圖5(D)的紙面上下方向的軸。
在橫軸方向上,被分割成了6個(gè)條塊B1~B6??v軸代表圖像(像素)的亮度。條塊B1、B2、B3、B4、B5、B6的基準(zhǔn)值分別是A1、A2、A3、A4、A5、A6。整體基準(zhǔn)值由AT表示。
這樣,基于各條塊的基準(zhǔn)值A(chǔ)i和整體基準(zhǔn)值A(chǔ)T對(duì)各條塊進(jìn)行亮度校正。例如,對(duì)于條塊B1,因?yàn)锳1>AT,對(duì)應(yīng)于A1和AT的差值ΔA1,黑和白的分布移動(dòng)到較暗的一方。對(duì)于條塊B3,因?yàn)锳3<AT,對(duì)應(yīng)于A3和AT的差值ΔA3,黑和白的分布移動(dòng)到較亮的一方。
這樣,對(duì)每一條塊進(jìn)行亮度校正。對(duì)校正后的圖像進(jìn)行2值化處理,就可以得到經(jīng)2值化處理后的二維條形碼數(shù)據(jù)。
在本實(shí)施方式中雖然以INTACTA.CODE碼為例對(duì)二維條形碼進(jìn)行了說(shuō)明,但本發(fā)明并不局限于這類碼,也同樣適用于一般意義上的二維條形碼。
另外,在本實(shí)施方式中,利用個(gè)人電腦10的軟件處理過(guò)程對(duì)圖像畸變和亮度斑駁實(shí)施校正,使用讀出裝置中內(nèi)附的CPU5也能達(dá)到同樣的目的。在這種情況下,上述用于校正處理的程序、用于二維條形碼解碼處理的程序存放在程序內(nèi)存11中。CPU5依照這些程序的指令實(shí)施校正處理和解碼處理。
(發(fā)明的效果)依據(jù)本發(fā)明,針對(duì)由面?zhèn)鞲衅鳙@取的二維條形碼圖像,對(duì)短焦距透鏡導(dǎo)致的圖像畸變和近距離照明導(dǎo)致的亮度斑駁進(jìn)行校正后,根據(jù)復(fù)原程序?qū)ΧS條形碼進(jìn)行解碼,在使得讀出裝置小型化的同時(shí),可以實(shí)現(xiàn)比用掃描器讀取更高速度的讀取數(shù)據(jù)處理。
權(quán)利要求
1.一種二維條形碼的讀出方法,其特征在于包括以下步驟針對(duì)用面?zhèn)鞲衅鞯玫降亩S條形碼的圖像,根據(jù)投影變換實(shí)施畸變校正的步驟;對(duì)所述圖像出現(xiàn)的亮度斑駁實(shí)施校正的步驟;根據(jù)對(duì)通過(guò)所述兩個(gè)步驟校正后的二維條形碼的圖像數(shù)據(jù)對(duì)該二維條形碼進(jìn)行解碼的步驟。
2.根據(jù)權(quán)利要求1所述的二維條形碼的讀出方法,其特征在于,根據(jù)所述投影變換實(shí)施畸變校正的步驟包括基于正方格子的4個(gè)頂點(diǎn)座標(biāo)和用面?zhèn)鞲衅鲾z像獲得的畸變圖像的正方格子的4個(gè)頂點(diǎn)座標(biāo)求解畸變校正數(shù)據(jù)的步驟;基于該畸變校正數(shù)據(jù)對(duì)所述面?zhèn)鞲衅鳙@得的二維條形碼圖像根據(jù)所述投影變換實(shí)施畸變校正的步驟。
3.根據(jù)權(quán)利要求1所述的二維條形碼的讀出方法,其特征在于,對(duì)所述圖像出現(xiàn)的亮度斑駁實(shí)施校正的步驟包括對(duì)所述面?zhèn)鞲衅鳙@得的二維條形碼圖像實(shí)施復(fù)數(shù)條塊分割的步驟;對(duì)所述每一個(gè)條塊實(shí)施亮度校正的步驟。
4.根據(jù)權(quán)利要求3所述的二維條形碼的讀出方法,其特征在于,根據(jù)條塊基準(zhǔn)值及整體基準(zhǔn)值,對(duì)所述每一個(gè)條塊實(shí)施亮度校正的步驟包括針對(duì)所述每一個(gè)條塊,根據(jù)該條塊內(nèi)的像素亮度分布求解條塊基準(zhǔn)值的步驟;根據(jù)所述圖像整體的亮度分布求解整體基準(zhǔn)值的步驟。
5.根據(jù)權(quán)利要求1至4所述的二維條形碼的讀出方法,其特征在于所述二維條形碼是一種INTACTA碼(INTACTA.CODE)。
全文摘要
本發(fā)明公開(kāi)了一種二維條形碼的讀出方法。該方法是以二維條形碼讀出裝置的小型化和讀取的高速化為目的。該方法包括以下的步驟:使用面?zhèn)鞲衅鲗?duì)印刷在紙張等上的二維條形碼進(jìn)行攝像,針對(duì)得到的二維條形碼,根據(jù)投影變換對(duì)圖像實(shí)施畸變校正的步驟(102);對(duì)圖像實(shí)施亮度斑駁校正的步驟(103);對(duì)上述兩個(gè)步驟校正后的二維條形碼的圖像數(shù)據(jù)進(jìn)行解碼的步驟(104)。
文檔編號(hào)G06T3/00GK1423236SQ02154809
公開(kāi)日2003年6月11日 申請(qǐng)日期2002年11月28日 優(yōu)先權(quán)日2001年11月30日
發(fā)明者中沢務(wù), 浜川浩一, 竹井洋次, 木山真伸 申請(qǐng)人:三洋電機(jī)株式會(huì)社