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