專利名稱:一種數(shù)據(jù)矩陣(dm)二維條形碼識(shí)別的圖像預(yù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息存儲(chǔ)、定位和識(shí)別技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)矩 陣二維條形碼(Data Matrix Barcode,以下簡(jiǎn)稱"DM碼")識(shí)別的圖像預(yù) 處理方法。
背景技術(shù):
二維條形碼是將存儲(chǔ)的信息在水平和垂直的二維空間上擴(kuò)展。它充 分利用了平面上的二維空間,可以大幅提升了信息密度,使得在小面積 上編碼大量數(shù)據(jù)成為可能。其次,由于它本身具有的糾錯(cuò)能力,即使大 面積受損也能被準(zhǔn)確識(shí)別。目前二維條形碼應(yīng)用于工業(yè)自動(dòng)化、物流、 郵政、醫(yī)療、金融、交通運(yùn)輸、身份識(shí)別、海關(guān)及國(guó)防等領(lǐng)域。在我國(guó), 二維條形碼的應(yīng)用尚屬起步階段。但是可以預(yù)見,它將以其獨(dú)特的優(yōu)勢(shì)必將像一維條形碼一樣,在我國(guó)的各個(gè)領(lǐng)域被推廣和應(yīng)用。根據(jù)二維條形碼的實(shí)現(xiàn)原理和結(jié)構(gòu)形狀的差異,可分為堆積式或?qū)?排式二維條形碼(Stacked Bar Code )和棋盤式或矩陣式二維條形碼。目 前的二維條形碼主要有快帶響應(yīng)(QuickResponse, QR)碼、數(shù)據(jù)矩陣 (Data Matrix, DM )碼和PDF417條形碼等。其中,DM碼是矩陣式二維 條形碼之一,由于其尺寸小、保密性好、糾錯(cuò)能力強(qiáng)而廣泛使用在工業(yè)、 數(shù)據(jù)安全及其他行業(yè)。如圖1所示,其中a為DM碼圖像,b為其尋址圖像,c為其數(shù)據(jù)區(qū),d 為結(jié)構(gòu)鏈接的DM碼圖像,DM碼是一個(gè)由黑白兩種顏色組成的點(diǎn)陣組 合,每一個(gè)相同大小的黑色或白色方格稱為一個(gè)數(shù)據(jù)單位。矩陣中的0、 1就是在DM碼的黑白兩色小方格,即數(shù)據(jù)單位。條碼的最外面邊界的四 個(gè)邊是有兩個(gè)黑色線和由黑白點(diǎn)組合的兩條鐵路線組成,主要用于限定 符號(hào)的單元結(jié)構(gòu),但也能幫助確定物理尺寸及失真。已有的DM二維條形碼識(shí)別圖像預(yù)處理方法如圖2所示,它主要由以 下步驟組成在完成二值化處理之后,使用中值濾波去除細(xì)小噪聲對(duì)后 續(xù)處理的干擾。在粗定位時(shí),對(duì)整幅圖像使用Gaussian Laplace算子進(jìn)行 邊緣檢測(cè),可將得到的邊緣圖像(二值圖像)在水平和垂直方向上投影, 分別統(tǒng)計(jì)第i行和第j列上的黑色像素,再進(jìn)行幾何裁剪。在進(jìn)行精確定 位時(shí),首先找到它的定位圖形"L"形。它利用Hough變換4企測(cè)直線定位 頂點(diǎn),獲得"L"形的頂點(diǎn)坐標(biāo)與兩邊的長(zhǎng)度,然后進(jìn)行幾何旋轉(zhuǎn)和剪裁, 得到近似標(biāo)準(zhǔn)的DM碼圖像取樣后解碼。上述已有的方法是通過尋找目標(biāo)區(qū)域內(nèi)的特定圖形而實(shí)現(xiàn)定位的, 缺點(diǎn)在于過分依賴于基于GaussianLaplace的邊緣檢測(cè)和基于Hough變換 的直線檢測(cè),當(dāng)圖像存在比較嚴(yán)重的幾何失真時(shí),尋址圖像L的兩條直 接邊將會(huì)出現(xiàn)弧度,從而難以檢測(cè)并影響最終的識(shí)別率。另外,在復(fù)雜 背景下,背景圖像的邊緣也會(huì)對(duì)識(shí)別率有顯著影響。發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種DM碼識(shí)別的圖像預(yù)處理 方法,可顯著提高DM碼的識(shí)別速度和精度。為解決上述技術(shù)問題,本發(fā)明的技術(shù)方案包括以下步驟
A、 二值化動(dòng)態(tài)迭代法求取最佳閾值,利用該閾值對(duì)圖像進(jìn)行二 值化;B、 圖像定位通過掃描十字區(qū)域,判別所在路徑上的黑、白邊緣 點(diǎn)是否在L鐵路線上,來尋找L型線段,確定其三個(gè)端點(diǎn)坐標(biāo);C:幾何校正根據(jù)上步獲得的三點(diǎn)坐標(biāo),對(duì)圖像進(jìn)行仿射變換, 得到校正圖形;D:取樣對(duì)圖像進(jìn)行取樣,輸出碼流。其中,步驟A中所述最佳閾值的求取方法為采用動(dòng)態(tài)迭代法對(duì)輸 入的灰度圖數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),迭代求取閾值。 其中,步驟B中定位方法為Bl、掃描十字區(qū)域,求取通過路徑上的一邊緣點(diǎn)最長(zhǎng)的一條線段所在的角度及該線段兩端點(diǎn)的坐標(biāo);B2、將兩端點(diǎn)分別沿線段正負(fù)偏移45度方向游移到最遠(yuǎn)點(diǎn);B3、以這兩點(diǎn)重新確立一條線段,重新設(shè)定其角度;B4、判斷該線段是否屬于L型線的一條邊,若不是則轉(zhuǎn)入步驟B1判斷下一邊緣點(diǎn),若是則繼續(xù)步驟B5; B5、調(diào)整兩端點(diǎn)到模塊的中心位置;B6、以該兩點(diǎn)為&出尋找另一條線段,得到另一端點(diǎn)的坐標(biāo); B7、調(diào)整點(diǎn)坐標(biāo)的放置順序并輸出。其中,步驟B1中的求取最長(zhǎng)線段角度及端點(diǎn)坐標(biāo)的方法為 Bll、作一條直線水平穿過該邊緣點(diǎn),記錄上面黑色點(diǎn)的個(gè)數(shù)及兩 端點(diǎn)的坐標(biāo)值,并記錄其角度;B12、以2度的步進(jìn)單位旋轉(zhuǎn)該直線,并記錄黑色點(diǎn)個(gè)數(shù)、角度及 兩端點(diǎn)的坐標(biāo)值,直到旋轉(zhuǎn)l周;B13、取黑色點(diǎn)個(gè)數(shù)最多的一條線段,返回其角度及兩端點(diǎn)的坐標(biāo)。其中,步驟B4中判斷方法為若線段長(zhǎng)度小于30個(gè)像素寬度、線 段長(zhǎng)度除以模塊寬度得到的模塊數(shù)目小于8、或者線段兩端點(diǎn)朝垂直方 向移動(dòng)1個(gè)模塊寬度的距離后新形成的線段中包含至少1個(gè)模塊寬度的 黑色象素,則該線段不是L型線的一邊;否則,則是L型線的一邊;所述步驟B5中調(diào)整兩端點(diǎn)位置的方法為B51、分別過兩端點(diǎn)垂直于線段作兩條直線,形成兩條垂直線段, 記錄上面黑色連續(xù)點(diǎn)的個(gè)數(shù),即垂直線段的長(zhǎng)度;B52、取黑色連續(xù)點(diǎn)少的垂直線段,該線段的長(zhǎng)度即為初步得到的 模塊寬度;處于該垂直線段上的兩端點(diǎn)即為L(zhǎng)型的一個(gè)端點(diǎn)和頂點(diǎn);B53、根據(jù)端點(diǎn)到三個(gè)邊緣的距離相等,將把端點(diǎn)調(diào)整到模塊中心 位置;B54、根據(jù)頂點(diǎn)到兩最近邊緣的距離等于半個(gè)模塊寬度,將頂點(diǎn)調(diào) 整到模塊中心位置;所述步驟B6中尋找另一條線段的方法為 B61、在垂直已知線段正負(fù)20度的范圍內(nèi)搜索一條最長(zhǎng)的線段; B62、將該線段的兩端點(diǎn)在該方向正負(fù)45度上移到最遠(yuǎn)點(diǎn); B63、新形成的線段即為L(zhǎng)型線的另一條線段,重新判定其角度。其中,所述步驟D進(jìn)一步包括以下步驟 Dl、計(jì)算數(shù)據(jù)矩陣圖像的版本號(hào);D2、對(duì)于版本較高的圖像,搜索校正鐵路線; D3、按區(qū)域取樣,得到取樣位流,最后輸出碼流。其中,所述步驟D1進(jìn)一步包括以下步驟 Dll、計(jì)算L型豎線上端點(diǎn)的橫向模塊寬度; D12、荻得水平探測(cè)鐵路線的所有黑色模塊的中心坐標(biāo); D13、計(jì)算L型線橫線端點(diǎn)的縱向模塊寬度; D14、獲得縱向探測(cè)鐵路線的所有黑色模塊的中心坐標(biāo); D15、去除偽鐵路線,根據(jù)兩條鐵路線作一條直線則必定相交于一 點(diǎn),舍去兩鐵路線交點(diǎn)后面的所有點(diǎn)坐標(biāo);D16、根據(jù)得到的鐵路線模塊個(gè)數(shù)計(jì)算出版本號(hào)。其中,所述步驟D12進(jìn)一步包括D121、由L型豎線端點(diǎn)出發(fā)向右搜索,搜索長(zhǎng)度為L(zhǎng)型橫向線段 長(zhǎng)度+ 3個(gè)才莫塊寬度大小或者超出圖像尺寸為止;D122、當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線黑色模塊的中心 位置,記錄該點(diǎn)的坐標(biāo)^f直;D123、繼續(xù)向前搜索,重復(fù)D122;所述步驟D14進(jìn)一步包括D141、由L型線橫線端點(diǎn)出發(fā)向上搜索,搜索長(zhǎng)度為L(zhǎng)型縱向線 段長(zhǎng)度+ 3個(gè)模塊寬度大小或者超出圖像尺寸為止;D142、當(dāng)碰到一個(gè)白黑交替點(diǎn)時(shí),移動(dòng)到該鐵路線黑色模塊的中心 位置,記錄該點(diǎn)的坐標(biāo)值;D143、繼續(xù)向前搜索,重復(fù)D142。
其中,所述步驟D2進(jìn)一步包括以下步驟D21 、選擇縱向探測(cè)鐵路線與橫向校正鐵路線相交的白色模塊的中 心坐標(biāo)作為起始點(diǎn),搜索長(zhǎng)度為L(zhǎng)型橫向線段長(zhǎng)度+ 3個(gè)模塊寬度大小 或者超出圖像尺寸為止;D22、當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線白色模塊的中心 位置,記錄該點(diǎn)的坐標(biāo)值;D23、繼續(xù)向前搜索,重復(fù)D22;D24、選擇橫向探測(cè)鐵路線與縱向校正鐵路線相交的白色模塊的中 心坐標(biāo)作為起始點(diǎn),搜索長(zhǎng)度為L(zhǎng)型縱向線段長(zhǎng)度+ 3個(gè)模塊寬度大小 或者超出圖像尺寸為止;D25、當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線白色模塊的中心 位置,記錄該點(diǎn)的坐標(biāo)值;D26、繼續(xù)向前搜索,重復(fù)D25。其中,所述步驟D3中每個(gè)區(qū)域的定義為一條L型線與黑白交替的 校正鐵路線圍成的閉合區(qū)域。本發(fā)明具有以下有益效果由于本發(fā)明沒有使用邊緣檢測(cè)和直線檢 測(cè)手段,因此受背景噪聲、幾何失真的影響較?。皇褂昧诵UF路線坐 標(biāo),并按區(qū)域取樣生成碼流,有助于提高識(shí)別率;算法中沒有復(fù)雜的計(jì) 算,具有很強(qiáng)的實(shí)時(shí)性,通常在PC平臺(tái)上不超過5ms,每秒鐘可以解 碼200張以上的DM圖片。
圖1是標(biāo)準(zhǔn)的DM碼圖像,其中a為DM碼圖像,b為其尋址圖像, c為其數(shù)據(jù)區(qū),d為結(jié)構(gòu)鏈接的DM碼圖像; 圖2是現(xiàn)有技術(shù)中DM碼圖形識(shí)別流程; 圖3是本發(fā)明的DM碼識(shí)別圖像預(yù)處理流程; 圖4是圖像二值化處理,其中a和b分別為處理前后的圖像; 圖5是本發(fā)明中L型鐵路線搜索路徑示意圖; 圖6是搜索到的L型線段示意圖;圖7是仿射變換示意圖,其中a和b分別是變換前后的圖像; 圖8是搜索校正鐵路線的黑色模塊中心坐標(biāo)過程示意圖; 圖9是對(duì)每個(gè)分區(qū)域進(jìn)行取樣的過程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述 請(qǐng)參閱圖3所示,本發(fā)明的DM碼識(shí)別圖像預(yù)處理方法包括以下步驟301、 二值化采用動(dòng)態(tài)迭代法對(duì)輸入的灰度圖數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),并迭代求取其最佳闊值,然后利用該閾值對(duì)圖像進(jìn)行二值化,得到二 值DM碼圖像。302、 定位即尋找L型線段。掃描十字區(qū)域,對(duì)所在路徑上的黑-> 白邊緣點(diǎn)進(jìn)行判別,判別是否在L鐵路線上。303、 仿射變換4艮據(jù)已知的三點(diǎn)坐標(biāo),利用6參數(shù)的仿射變換公 式,對(duì)圖像進(jìn)行幾何校正,得到新的圖像數(shù)據(jù)。304、 計(jì)算數(shù)據(jù)矩陣圖像的版本號(hào)。305、 搜索校正鐵路線坐標(biāo)考慮到實(shí)際存在的失真情況,本發(fā)明
對(duì)較高版本號(hào)的DM圖像使用了校正鐵路線。通過搜索校正鐵路線可以 為下一步自適應(yīng)取樣提供參考,有助于提高識(shí)別率。306、 取樣借助定位圖形和校正鐵路線,將DM碼圖像劃分為小 的區(qū)間。盡管通過了幾何矯正,仍然可能存在失真。因此,取樣過程按 照DM碼相應(yīng)版本的寬度和高度,自適應(yīng)地將DM碼圖形劃分為小的區(qū) 間。通過判斷這些區(qū)間內(nèi)黑色和白色像素的比例,將此小區(qū)判別為'T' 或"0"。307、 輸出碼流即可解碼。下面對(duì)該方法的各步驟進(jìn)行詳細(xì)描述A. 二值化采用動(dòng)態(tài)迭代法對(duì)輸入的灰度圖數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),并迭代求取 其最佳閾值。然后,利用該閾值對(duì)圖像進(jìn)行二值化處理。假設(shè)T(i)為新的分割閾值,vl(i)為灰度值小于T(i)的像素的灰度平 均值,v2(i)為灰度值大于T(i)的像素的灰度平均值,則迭代法取閥值算 法如下T(0)=128T(i+l)=(V2(T(i))+vl(T(i)))/2;當(dāng)條件滿足T(i+l)-(v2(T(i))+vl(T(i)))/2時(shí)退出迭代,T(i)即為最佳 閾值。如圖4所示,通過二值化算法,可以把一幅RGB的灰度圖像轉(zhuǎn)換 為二值圖像。B. 圖j象定位通過掃描十字區(qū)域,判別所在路徑上的黑、白邊緣
點(diǎn)是否在L鐵路線上,來尋找L型線段,確定其三個(gè)端點(diǎn)坐標(biāo)。掃描路 徑如圖5所示。其中,判斷某個(gè)邊緣點(diǎn)是否處于L型線上的方法為 Bl.求取通過該點(diǎn)最長(zhǎng)的一條線段所在的角度及該線段兩端點(diǎn)的 坐標(biāo),方法3p下(B11)作一條直線水平穿過該點(diǎn),記錄上面過該點(diǎn)連續(xù)黑色點(diǎn)的 個(gè)數(shù)及兩端點(diǎn)的坐標(biāo)值,并記錄下其角度。(B12)以每2度的步進(jìn)單位旋轉(zhuǎn)該直線,并記錄黑色點(diǎn)個(gè)數(shù)、角 度及兩端點(diǎn)的坐標(biāo)值,直到旋轉(zhuǎn)1周。(B13)取黑色點(diǎn)個(gè)數(shù)最多的一條線段,返回其角度及兩端點(diǎn)的坐標(biāo)。B2. "te兩端點(diǎn)沿線—?dú)W正負(fù)偏移45度方向游移到最遠(yuǎn)點(diǎn),方法如下 判斷線段的角度落在的區(qū)域,角度區(qū)域與游動(dòng)方向關(guān)系為158°~179°,0° -22。------左右方向游動(dòng)23°~67° -----左上右下方向游動(dòng)68° ~112° -----上下方向游動(dòng)113° ~ 157° -----左下右上方向游動(dòng)左右方向的點(diǎn)移動(dòng)的規(guī)則為點(diǎn)向線段外方向每左移動(dòng) 一個(gè)象素, 都需要判斷該點(diǎn)是否為黑色象素,如果不是,則取其上下方向上其中的 一個(gè)黑色點(diǎn)作為新的點(diǎn)坐標(biāo),游移直到超出圖片或者下一個(gè)點(diǎn)及其上下 方向的點(diǎn)都為白色止。其它方向的^L則可類推。B3.以這兩點(diǎn)重新確立一條線段,重新設(shè)定其角度。 B4.判斷線段是否屬于L型線的一條邊,判斷方法如下若線段長(zhǎng) 度小于30個(gè)像素寬度、線段長(zhǎng)度除以模塊寬度得到的模塊數(shù)目小于8、 或者線段兩端點(diǎn)朝垂直方向移動(dòng)1個(gè)模塊寬度的距離后新形成的線段中 包含至少1個(gè)模塊寬度的黑色象素,則該線段不是L型線的一邊;否貝'J, 則是L型線的一邊。B5.調(diào)整兩個(gè)端點(diǎn)到模塊的中心位置,調(diào)整方法如下 (B51)分別過兩端點(diǎn)垂直于線段作兩條直線,形成兩條垂直線段, 記錄上面黑色連續(xù)點(diǎn)的個(gè)數(shù),即垂直線段的長(zhǎng)度;(B52)取黑色連續(xù)點(diǎn)少的垂直線段,該線段的長(zhǎng)度即為初步得到 的模塊寬度;處于該垂直線段上的兩端點(diǎn)即為L(zhǎng)型的一個(gè)端點(diǎn)和頂點(diǎn);(B53)根據(jù)端點(diǎn)到三個(gè)邊緣的距離相等,將把端點(diǎn)調(diào)整到模塊中 心位置;(B54)根據(jù)頂點(diǎn)到兩最近邊緣的距離等于半個(gè)模塊寬度,將頂點(diǎn) 調(diào)整到模塊中心位置。B6.以該兩點(diǎn)為基礎(chǔ)尋找另 一條線段,尋找方法如下 (B61)在垂直已知線段正負(fù)20度的范圍內(nèi)搜索一條最長(zhǎng)的線段; (B62)將該線段的兩端點(diǎn)在該方向正負(fù)45度上移到最遠(yuǎn)點(diǎn); (B63)新形成的線段即為L(zhǎng)型線的另一條線段,重新判定其角度。B7.調(diào)整點(diǎn)坐標(biāo)的放置順序輸出。找到了L型線段后返回l,并輸出三個(gè)點(diǎn)坐標(biāo),否則返回O。 如圖6所示,該圖顯示了一種復(fù)雜條件下DM碼識(shí)別過程中,定位 找到的L鐵路線的結(jié)果。C.幾何矯正根據(jù)已知的三點(diǎn)坐標(biāo),利用6參數(shù)的仿射變換公式, 對(duì)圖像進(jìn)行幾何校正,得到新的圖像數(shù)據(jù)。有ii殳(u0, v0)、 (ul, vl)和(u2, v2)為幾何頭斧正前的3個(gè)頂點(diǎn)坐標(biāo),(xO, y0)、 (xl, yl)和(x2, y2)為幾何矯正后期望的坐標(biāo)。6參數(shù)仿射變換公 式如下u = a*x + b*y + c;v = d*x + e*y + f;三個(gè)坐標(biāo)值,剛好解6個(gè)參數(shù),則各個(gè)參數(shù)的解如下b = [x2求(ul隱u0) + xl*(u0 - u2) + x0*(u2 - ul)]/ [x2*(yl-y0) + xl*(y0 -y2) + x0*(y2-yl)]a = [y2*(ul-u0) + yl*(u0 - u2) + y0*(u2 - ul)]/ [y2*(xl-x0) + yl*(x0 -x2) + y0*(x2-xl)]或者a = [(ul-uO) -b*(yl- y0)]/(xl-x0)c = u0 -a*x0 - b*y0e = [x2*(vl-v0) + xl*(v0 - v2) + x0承(v2 - vl)]/ [x2承(yl-v0) + xl承(yO -y2) + x0*(y2-yl)]d= [y2*(vl-v0) + yl*(vO - v2) + y0承(v2 - vl)]/ [y2承(xl-x0) + yl承(xO -x2) + y0*(x2-xl)]或者d = [(vl-vO) -e*(yl- yO)]/(xl-xO)f= vO -d*xO - e*yO經(jīng)過仿射變換后,得到的QR碼校正圖形,如圖7所示,(a)和(b) 分別為變換前后的圖形。注如果是平行四邊形失真,則校正后的圖形
就是正方形,如果是梯形失真,則經(jīng)過校正左上角是失真最少的,右下 角是失真最大的。D.取樣取樣過程是DM碼識(shí)別的另一個(gè)關(guān)鍵。特別對(duì)于版本較 高的DM圖像,需要利用校正圖形幫助識(shí)別過程。其主要步驟如下 Dl.計(jì)算數(shù)據(jù)矩陣圖像的版本號(hào)。具體包括以下步驟(D11)計(jì)算L型豎線上端點(diǎn)的橫向模塊寬度。(D12)獲得水平探測(cè)鐵路線的所有黑色模塊的中心坐標(biāo)。方法為 由L型豎線端點(diǎn)出發(fā)向右搜索,搜索長(zhǎng)度為L(zhǎng)型橫向線段長(zhǎng)度+ 3個(gè)模 塊寬度大小或者超出圖像尺寸為止;當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到 該鐵路線黑色模塊的中心位置,記錄該點(diǎn)的坐標(biāo)值;繼續(xù)向前搜索。(D13)計(jì)算L型線橫線端點(diǎn)的縱向模塊寬度。(D14)獲得縱向探測(cè)鐵路線的所有黑色模塊的中心坐標(biāo)。方法為 由L型線橫線端點(diǎn)出發(fā)向上搜索,搜索長(zhǎng)度為L(zhǎng)型縱向線段長(zhǎng)度+ 3個(gè) 模塊寬度大小或者超出圖像尺寸為止。當(dāng)碰到一個(gè)白黑交替點(diǎn)時(shí),移動(dòng) 到該鐵路線黑色模塊的中心位置,記錄該點(diǎn)的坐標(biāo)值,繼續(xù)向前搜索。(D15)去除偽鐵路線,根據(jù)兩條鐵路線作一條直線則必定相交于 一點(diǎn),舍去兩4失路線交點(diǎn)后面的所有點(diǎn)坐標(biāo)。(D16)根據(jù)得到的鐵路線模塊個(gè)數(shù)計(jì)算出版本號(hào)。 D2.對(duì)于版本較高的圖像,搜索校正鐵路線。計(jì)算所有校正鐵圖線 的中心點(diǎn)位置,獲取校正信息,取樣按照校正鐵路線的種類分三種情況 考慮版本1 - 9:沒有校正圖形的情況;
版本2 - 15:只有一條校正圖形的情況; 版本16-21:有三條校正圖形的情況??紤]到實(shí)際失真情況,本發(fā)明只對(duì)于版本號(hào)16-21利用了校正鐵 路線。如圖8所示,搜索校正鐵路線的黑色模塊中心坐標(biāo)過程,方法為(D21)選擇縱向探測(cè)鐵路線與橫向校正鐵路線相交的白色模塊的 中心坐標(biāo)作為起始點(diǎn),搜索長(zhǎng)度為L(zhǎng)型橫向線段長(zhǎng)度+ 3個(gè)模塊寬度大 小或者超出圖像尺寸為止;(D22)當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線白色模塊的中 心位置,記錄該點(diǎn)的坐標(biāo)值;(D23)繼續(xù)向前搜索,重復(fù)(D22);(D24 )選擇橫向探測(cè)鐵路線與縱向校正鐵路線相交的白色模塊的 中心坐標(biāo)作為起始點(diǎn),搜索長(zhǎng)度為L(zhǎng)型縱向線段長(zhǎng)度+ 3個(gè)模塊寬度大 小或者超出圖像尺寸為止;(D25)當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線白色模塊的中 心位置,記錄該點(diǎn)的坐標(biāo)值;(D26)繼續(xù)向前搜索,重復(fù)(D25)。 D3.如圖9所示的對(duì)每個(gè)分區(qū)域進(jìn)行取樣的過程示意圖,按區(qū)域取 樣,得到取樣位流,最后輸出碼流。每個(gè)區(qū)域的定義為一條L型線與黑 白交替的校正鐵路線圍成的閉合區(qū)域。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡 在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng) 包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種數(shù)據(jù)矩陣(DM)二維條形碼識(shí)別的圖像預(yù)處理方法。DM二維條形碼以下簡(jiǎn)稱“DM碼”。其特征在于,包括以下步驟A、二值化動(dòng)態(tài)迭代法求取最佳閾值,利用該閾值對(duì)圖像進(jìn)行二值化處理;B、圖像定位通過掃描十字區(qū)域,判別所在路徑上的黑、白邊緣點(diǎn)是否在L型鐵路線上,來尋找L型線段,確定其三個(gè)端點(diǎn)坐標(biāo);C幾何校正根據(jù)上步獲得的三點(diǎn)坐標(biāo),對(duì)圖像進(jìn)行仿射變換,得到校正圖形;D取樣對(duì)圖像進(jìn)行取樣,輸出碼流。
2、 如權(quán)利要求1所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,步驟A中所述最佳閾值的求取方法為采用動(dòng)態(tài)迭代法對(duì)輸入 的灰度圖數(shù)據(jù)進(jìn)行直方圖統(tǒng)計(jì),迭代求取閾值。
3、 如權(quán)利要求1所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,步驟B中定位方法為Bl、掃描十字區(qū)域,求取通過路徑上的一邊緣點(diǎn)最長(zhǎng)的一條線段所在的角度及該線段兩端點(diǎn)的坐標(biāo);B2、將兩端點(diǎn)分別沿線段正負(fù)偏移45度方向游移到最遠(yuǎn)點(diǎn);B3、以這兩點(diǎn)重新確立一條線段,重新設(shè)定其角度;B4、判斷該線段是否屬于L型線的一條邊,若不是則轉(zhuǎn)入步驟Bl判斷下一邊緣點(diǎn),若是則繼續(xù)步驟B5; B5、調(diào)整兩端點(diǎn)到模塊的中心位置;B6、以該兩點(diǎn)為基礎(chǔ)尋找另一條線段,得到另一端點(diǎn)的坐標(biāo); B7、調(diào)整點(diǎn)坐標(biāo)的放置順序并輸出。
4、 如權(quán)利要求3所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,步驟B1中的求取最長(zhǎng)線段角度及端點(diǎn)坐標(biāo)的方法為Bll、作一條直線水平穿過該邊緣點(diǎn),記錄上面黑色點(diǎn)的個(gè)數(shù)及 兩端點(diǎn)的坐標(biāo)值,并記錄其角度;B12、以2度的步進(jìn)單位旋轉(zhuǎn)該直線,并記錄黑色點(diǎn)個(gè)數(shù)、角度 及兩端點(diǎn)的坐標(biāo)值,直到旋轉(zhuǎn)l周;B13、取黑色點(diǎn)個(gè)數(shù)最多的一條線段,返回其角度及兩端點(diǎn)的坐標(biāo)。
5、 如權(quán)利要求3所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,步驟B4中判斷方法為若線段長(zhǎng)度小于30個(gè)像素寬度、線段 長(zhǎng)度除以模塊寬度得到的模塊數(shù)目小于8、或者線段兩端點(diǎn)朝垂直方 向移動(dòng)1個(gè)模塊寬度的距離后新形成的線段中包含至少1個(gè)模塊寬度 的黑色象素,則該線段不是L型線的一邊;否則,則是L型線的一邊;所述步驟B5中調(diào)整兩端點(diǎn)位置的方法為B51、分別過兩端點(diǎn)垂直于線段作兩條直線,形成兩條垂直線段, 記錄上面黑色連續(xù)點(diǎn)的個(gè)數(shù),即垂直線段的長(zhǎng)度;B52、取黑色連續(xù)點(diǎn)少的垂直線段,該線段的長(zhǎng)度即為初步得到 的模塊寬度;處于該垂直線段上的兩端點(diǎn)即為L(zhǎng)型的一個(gè)端點(diǎn)和頂點(diǎn);B53、根據(jù)端點(diǎn)到三個(gè)邊緣的距離相等,將把端點(diǎn)調(diào)整到模塊中 心位置5B54、根據(jù)頂點(diǎn)到兩最近邊緣的距離等于半個(gè)模塊寬度,將頂點(diǎn) 調(diào)整到模塊中心位置;所述步驟B6中尋找另一條線段的方法為 B61、在垂直已知線段正負(fù)20度的范圍內(nèi)搜索一條最長(zhǎng)的線段; B62、將該線^殳的兩端點(diǎn)在該方向正負(fù)45度上移到最遠(yuǎn)點(diǎn); B63、新形成的線段即為L(zhǎng)型線的另一條線段,重新判定其角度。
6、 如權(quán)力要求1所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,所述步驟D進(jìn)一步包括以下步驟Dl、計(jì)算數(shù)據(jù)矩陣圖像的版本號(hào);D2、對(duì)于版本較高的圖像,搜索校正鐵路線;D3、按區(qū)域取才羊,得到耳又樣位流,最后輸出碼流。
7、 如權(quán)力要求6所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,所述步驟D1進(jìn)一步包括以下步驟Dll、計(jì)算L型豎線上端點(diǎn)的橫向模塊寬度; D12、獲得水平探測(cè)鐵路線的所有黑色模塊的中心坐標(biāo); D13、計(jì)算L型線橫線端點(diǎn)的縱向模塊寬度; D14、獲得縱向探測(cè)鐵路線的所有黑色模塊的中心坐標(biāo); D15、去除偽鐵路線,根據(jù)兩條鐵路線作一條直線則必定相交于 一點(diǎn),舍去兩4fe洛線交點(diǎn)后面的所有點(diǎn)坐標(biāo);D16、根據(jù)得到的鐵路線模塊個(gè)數(shù)計(jì)算出版本號(hào)。
8、 如權(quán)力要求7所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,所述步驟D12進(jìn)一步包括D121、由L型豎線端點(diǎn)出發(fā)向右搜索,搜索長(zhǎng)度為L(zhǎng)型橫向線 段長(zhǎng)度+ 3個(gè)模塊寬度大小或者超出圖像尺寸為止;D122、當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線黑色模塊的 中心位置,記錄該點(diǎn)的坐標(biāo)值;D123、繼續(xù)向前搜索,重復(fù)D122;所述步驟D14進(jìn)一步包括D141、由L型線橫線端點(diǎn)出發(fā)向上搜索,搜索長(zhǎng)度為L(zhǎng)型縱向 線段長(zhǎng)度+ 3個(gè)模塊寬度大小或者超出圖像尺寸為止;D142、當(dāng)碰到一個(gè)白黑交替點(diǎn)時(shí),移動(dòng)到該鐵^各線黑色模塊的 中心位置,記錄該點(diǎn)的坐標(biāo)值;D143、繼續(xù)向前搜索,重復(fù)D142。
9、 如權(quán)力要求6所述的DM碼識(shí)別圖像預(yù)處理方法,其特征在 于,所述步驟D2進(jìn)一步包括以下步驟D21、選擇縱向探測(cè)鐵路線與橫向校正鐵路線相交的白色模塊的 中心坐標(biāo)作為起始點(diǎn),搜索長(zhǎng)度為L(zhǎng)型橫向線段長(zhǎng)度+ 3個(gè)模塊寬度 大小或者超出圖像尺寸為止;D22、當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線白色模塊的中 心位置,i己錄該點(diǎn)的坐標(biāo)^L;D23、繼續(xù)向前搜索,重復(fù)D22;D24、選擇橫向探測(cè)鐵路線與縱向校正鐵路線相交的白色模塊的 中心坐標(biāo)作為起始點(diǎn),搜索長(zhǎng)度為L(zhǎng)型縱向線段長(zhǎng)度+ 3個(gè)模塊寬度 大小或者超出圖像尺寸為止;D25、當(dāng)碰到一個(gè)黑白交替點(diǎn)時(shí),移動(dòng)到該鐵路線白色模塊的中 心位置,記錄該點(diǎn)的坐標(biāo)值;D26、繼續(xù)向前搜索,重復(fù)D25。
10、如4又力要求6所述的DM碼識(shí)別圖#_預(yù)處理方法,其特征在 于,所述步驟D3中每個(gè)區(qū)域的定義為一條L型線與黑白交替的校正 鐵路線圍成的閉合區(qū)域。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)矩陣(DM)二維條形碼識(shí)別的圖像預(yù)處理方法,該方法包括以下步驟A.二值化求取最佳閾值,利用該閾值對(duì)圖像進(jìn)行二值化處理;B.圖像定位通過掃描十字區(qū)域,判別所在路徑上的黑、白邊緣點(diǎn)是否在L型鐵路線上,來尋找L型線段,確定其三個(gè)端點(diǎn)坐標(biāo);C.幾何校正根據(jù)步驟B獲得的三點(diǎn)坐標(biāo),對(duì)圖像進(jìn)行仿射變換,得到校正圖形;D.取樣對(duì)圖像進(jìn)行取樣,輸出碼流。由于本發(fā)明沒有使用邊緣檢測(cè)和直線檢測(cè)手段,因此受背景噪聲、幾何失真的影響較??;使用了校正鐵路線坐標(biāo),并按區(qū)域取樣生成碼流,有助于提高在幾何失真等情況下的識(shí)別率;算法中沒有復(fù)雜的計(jì)算,具有很強(qiáng)的實(shí)時(shí)性。測(cè)試結(jié)果表明在CPU為2.4GHz,內(nèi)存為512M的計(jì)算機(jī)上識(shí)別一幅存在明顯失真的DM碼圖像,耗時(shí)不超過5ms,即每秒鐘可以解碼200張以上的DM圖片。
文檔編號(hào)G06K9/46GK101398895SQ200710035808
公開日2009年4月1日 申請(qǐng)日期2007年9月26日 優(yōu)先權(quán)日2007年9月26日
發(fā)明者楊高波 申請(qǐng)人:楊高波