基于畸變圖像校正的二維碼解碼方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種畸變條碼圖像的校正方法和系統(tǒng),具體地說涉及一種基于畸變圖像校正的二維碼解碼方法和系統(tǒng)。
【背景技術(shù)】
[0002]條形碼(簡稱條碼)可分為一維條碼和二維條碼,一維條碼是由一組規(guī)則排列的條、空以及對應(yīng)的字符組成的標記,“條”指對光線反射率較低的部分,“空”指對光線反射率較高的部分,這些條和空組成的數(shù)據(jù)表達一定的信息。二維條碼是用特定的幾何圖像按一定規(guī)律在平面(二維方向上)分布的黑白相間的矩形方陣記錄數(shù)據(jù)符號信息的新一代的條碼技術(shù);二維條碼可以分為堆疊式二維條碼和矩陣式二維條碼。堆疊式二維條碼形態(tài)上是由多行短截的一維條碼堆疊而成(如TOF417條碼);矩陣式二維條碼以矩陣的形式組成,在矩陣相應(yīng)元素位置上用“點”表示二進制“ I ”,用“空”表示二進制“0”,由“點”和“空”的排列組成代碼(如QR碼)。二維碼具有存儲容量大,包含信息豐富,并且需要特別的解析方式,有很強的保密性。但是由于的二維碼的二維特性,在二維碼的水平和垂直分別存儲不同的信息,因此相比于一維碼有較大的解碼難度。
[0003]在日常生活和工業(yè)應(yīng)用中,二維碼的使用越來越廣泛,諸如:零售行業(yè)、物流行業(yè)、金融行業(yè)對條碼的使用需求越來越大。二維碼也從早期的平面印刷品,應(yīng)用在不同形狀物體的表面,例如:將二維碼印于圓柱形藥瓶表面用于記錄藥品相關(guān)信息;展會或促銷時,將包含產(chǎn)品信息或宣傳信息的二維碼貼紙貼在展銷人員的手臂上。在這些應(yīng)用場景下,因為條碼都位于曲面物體上,即條碼彎曲,條碼識讀設(shè)備拍攝到的條碼圖像相較于平整的條碼圖像存在一定的變形和失真?,F(xiàn)有技術(shù)中的二維碼解碼技術(shù)僅限于解決條碼識讀設(shè)備拍攝到的條碼為四邊形,以及條碼有較小曲面畸變的情況。中國專利文獻CN101908144B中對所拍攝條碼的圖像處理的具體操作過程可以用圖1所示,首先通過模式匹配等方法獲得二維碼特征點的坐標位置,如二維碼的尋像圖像和校正圖像的坐標位置。利用透視變換原理,根據(jù)源圖像和目標圖像的特征點對應(yīng)關(guān)系,分塊提取條碼的像素值序列,并送入解碼器解碼。但由于透視變換求解出的變換矩陣只能將一個四邊形變換到正方形,或者,將一個正方形變換到四邊形。在解決條碼識讀設(shè)備拍攝到的貼在曲面上的條碼的解碼上有較大的局限性。條碼識讀設(shè)備對位于曲面物體表面的解碼效率較低,通常要用戶手持條碼識讀設(shè)備以不同角度捕獲條碼圖像,然后進行解碼嘗試,解碼成功率較低。
【發(fā)明內(nèi)容】
[0004]為此,本發(fā)明所要解決的技術(shù)問題在于現(xiàn)有技術(shù)中條碼識讀設(shè)備無法準確識讀圖像畸變的二維碼。
[0005]為解決上述技術(shù)問題,本發(fā)明的所采用的技術(shù)方案:
[0006]基于畸變圖像校正的二維碼解碼方法,包括以下步驟:
[0007]S1:獲取一幀包含二維碼的圖像;
[0008]S2:確定二維碼的多個特征點,并判斷二維碼類型;
[0009]S3:建立坐標系,獲取所述二維碼的多個特征點的坐標;
[0010]S4:根據(jù)二維碼的類型調(diào)用與二維碼的類型對應(yīng)的匹配模板;
[0011]S5:根據(jù)獲取的二維碼的特征點的坐標和所述匹配模板中對應(yīng)的特征點的坐標,將所述二維碼的像素點應(yīng)用透視變換算法進行校正,將所述二維碼的每一像素點的灰度值填入所述匹配模板,得到第一解碼用圖;
[0012]S6:對第一解碼用圖應(yīng)用解碼算法進行嘗試解碼;解碼成功,則結(jié)束,開始下一幀二維碼的圖像校正;若解碼失敗,則繼續(xù)下一步驟;
[0013]S7:建立坐標系,根據(jù)步驟S3中獲取的所述二維碼的多個特征點的坐標以及所述匹配模版中對應(yīng)的特征點的坐標,應(yīng)用曲面校正算法進行校正,得到包含校正后的二維碼的第二還原圖;
[0014]S8:建立坐標系,獲取所述第二還原圖中的二維碼的多個特征點的坐標;
[0015]S9:根據(jù)獲取的所述第二還原圖中的二維碼的多個特征點的坐標和所述匹配模板中對應(yīng)的特征點的坐標,將所述第二還原圖中的二維碼的像素點應(yīng)用透視變換算法進行校正,將所述第二還原圖中的二維碼的每一像素點的灰度值填入所述匹配模板,得到第二解碼用圖;
[0016]S10:將所述第二解碼用圖應(yīng)用解碼算法進行嘗試解碼,解碼成功,則開始下一幀二維碼的圖像校正。
[0017]所述步驟S7中,所述曲面校正算法具體為如下的多次項式:
[0018]U = a0x2+a1y2+a2xy+a3x+a4y+a5
[0019]V = b0x2+b1y2+b2xy+b3x+b4y+b5
[0020]其中,U和V為所述二維碼的多個特征點的坐標,X和y為在所述匹配模版上對應(yīng)的特征點的坐標,a。、an a2、a3、a4、a5、b。、bn b2、b3、b4、b5為曲面建模變換系數(shù)。
[0021]所述步驟S5中,所述透視變換系數(shù)具體為如下的透視變換公式:
[0022]U= (ax+by+c)/ (gx+hy+1)
[0023]V= (dx+ey+f)/ (gx+hy+1)
[0024]其中,U和V為所述二維碼的多個特征點的坐標,X和y為在所述匹配模版上對應(yīng)的特征點的坐標,a、b、C、d、e、f、g及h為透視變換系數(shù)。
[0025]所述步驟S6中,將校正后的二維碼的像素點的灰度值帶入所述匹配模板中,將包含各像素點灰度值的匹配模板應(yīng)用解碼算法進行嘗試解碼。
[0026]所述步驟SlO中,將透視變換校正后的二維碼的像素點的灰度值帶入所述匹配模板中,將包含各像素點灰度值的匹配模板應(yīng)用解碼算法進行嘗試解碼。
[0027]基于畸變圖像校正的二維碼解碼系統(tǒng),包括以下模塊:
[0028]圖像獲取模塊:獲取一幀包含二維碼的圖像;
[0029]特征點獲取模塊:確定二維碼的多個特征點,并判斷二維碼類型;
[0030]計算模塊:建立坐標系,獲取所述二維碼的多個特征點的坐標;
[0031]匹配模板調(diào)用模塊:根據(jù)二維碼的類型調(diào)用與二維碼的類型對應(yīng)的匹配模板;
[0032]第一校正模塊:根據(jù)獲取的二維碼的特征點的坐標和所述匹配模板中對應(yīng)的特征點的坐標,將所述二維碼的像素點應(yīng)用透視變換算法進行校正,將所述二維碼的每一像素點的灰度值填入所述匹配模板,得到第一解碼用圖;
[0033]第一解碼模塊:對第一解碼用圖應(yīng)用解碼算法進行嘗試解碼;解碼成功,則結(jié)束,開始下一幀二維碼的圖像校正;若解碼失敗,則由曲面校正模塊繼續(xù)進行校正;
[0034]曲面校正模塊:根據(jù)所述計算模塊獲取的所述二維碼的多個特征點的坐標以及所述匹配模版中對應(yīng)的特征點的坐標,應(yīng)用曲面校正算法進行校正,得到第二還原圖;
[0035]第二計算模塊:建立坐標系,獲取所述第二還原圖中的二維碼的多個特征點的坐標;
[0036]第二校正模塊:根據(jù)獲取的所述第二還原圖中的二維碼的多個特征點的坐標和所述匹配模板中對應(yīng)的特征點的坐標,將所述第二還原圖中的二維碼的像素點應(yīng)用透視變換算法進行校正,將所述第二還原圖中的二維碼的每一像素點的灰度值填入所述匹配模板,得到第二解碼用圖;
[0037]第二解碼模塊:將所述第二解碼用圖應(yīng)用解碼算法進行嘗試解碼,解碼成功,則開始下一幀二維碼的圖像校正。
[0038]所述曲面校正模塊中,所述曲面校正算法具體為如下的多次項式:
[0039]U = a0x2+a1y2+a2xy+a3x+a4y+a5
[0040]V = b0x2+b1y2+b2xy+b3x+b4y+b5
[0041]其中,U和V為所述二維碼的多個特征點的坐標,X和y為在所述匹配模版上對應(yīng)的特征點的坐標,a。、an a2、a3、a4、a5、b。、bn b2、b3、b4、b5為曲面建模變換系數(shù)。
[0042]所述第一校正模塊中,所述透視變換系數(shù)具體為如下的透視變換公式計算透視變換系數(shù):
[0043]U= (ax+by+c)/ (gx+hy+1)