本發(fā)明涉及二維碼識別技術(shù),特別是一種二維碼識別方法及裝置。
背景技術(shù):
二維碼(dimensional barcode),又稱二維條碼,是在一維條碼的基礎(chǔ)上擴展出的一種具有可讀性的條碼,是用某種特定的幾何圖形按一定規(guī)律在平面二維方向上分布的黑白相間的圖形記錄數(shù)據(jù)符號信息,在代碼編制上利用構(gòu)成計算機內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個與二進制相對應(yīng)的幾何形體來表示文字數(shù)值信息,通過圖象輸入設(shè)備或光電掃描設(shè)備自動識讀以實現(xiàn)信息自動處理。
常用的二維碼碼制有Data Matrix,Maxi Code,Aztec,QR Code等,其中QR Code(Quick Response Code,快速響應(yīng)編碼)矩陣碼是目前最為流行的碼制,它具有信息容量大、可靠性高、可表示漢字及圖像多種文字信息、保密防偽性強等優(yōu)點。QR碼呈正方形,黑白兩色,三個角落印有“回”字的正方圖案,其中,該印有“回”字的正方圖案為QR碼的定位碼,利用三個定位碼即可定位一個QR碼。
現(xiàn)有部分企業(yè)已使用產(chǎn)品二維碼管理方式,將二維碼與各工位對應(yīng),各工位完成后的半成品在指定區(qū)域進行貼碼并流入生產(chǎn)線供后者使用。多工位完成后,對指定區(qū)域的多個二維碼進行識別,將多個二維碼信息有選擇地整合為一個二維碼并貼附或噴涂在產(chǎn)品或外包裝上,供內(nèi)部其他部門、或者消費者使用。
現(xiàn)有二維碼識別方法使用的是單攝像頭,二維碼識別裝置為單攝像頭裝置,在面對二維碼光照不均時,無法識別二維碼,需要人為調(diào)整光源或二維碼位置才能解決該現(xiàn)象。同樣,在面對二維碼圖片扭曲變形時,現(xiàn)有二維碼識別方法及裝置僅可以識別出形變較小的二維碼,如果形變過大則無法識別二維碼。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種能夠在二維碼圖片扭曲變形、光照不均的情況下讀取出二維碼信息的二維碼識別方法及裝置。
實現(xiàn)本發(fā)明目的的技術(shù)方案為:一種二維碼識別方法,包括以下步驟:
通過兩個攝像頭從不同角度同時采集二維碼圖片;
對采集的兩張二維碼圖片進行預(yù)處理;
對預(yù)處理后的二維碼圖片進行二維碼分割處理,提取出二維碼;
根據(jù)兩張二維碼的邊緣扭曲情況對二維碼所處的貼面進行判定與計算,獲得校正公式,使用校正公式對二維碼進行圖像校正,將其還原為標準形狀的二維碼;
記錄兩張標準形狀二維碼編碼區(qū)信息,根據(jù)其中一個編碼區(qū)中黑像素點對另一個編碼區(qū)進行補充處理,得到可識別二維碼;
提取可識別二維碼中的二維碼信息。
一種二維碼識別裝置,包括:
兩個攝像頭,用于從不同角度同時采集二維碼圖片;
圖像預(yù)處理模塊,用于對采集的兩張二維碼圖片進行預(yù)處理;
二維碼分割處理模塊,用于對預(yù)處理后的二維碼圖片進行二維碼分割處理,提取出二維碼;
二維碼校正模塊,用于根據(jù)兩張二維碼的邊緣扭曲情況對二維碼所處的貼面進行判定與計算,獲得校正公式,使用校正公式對二維碼進行圖像校正,將其還原為標準形狀的二維碼;
二維碼互補模塊,用于記錄兩張標準形狀二維碼編碼區(qū)信息,根據(jù)其中一個編碼區(qū)中黑像素點對另一個編碼區(qū)進行補充處理,得到可識別二維碼;
二維碼信息提取模塊,用于提取可識別二維碼中的二維碼信息。
與現(xiàn)有技術(shù)相比,本發(fā)明的顯著優(yōu)點為:
(1)本發(fā)明可以在二維碼發(fā)生光照不均時還原出較好的圖像并提取出二維碼信息;
(2)現(xiàn)有技術(shù)僅可在二維碼形變較小的情況下識別二維碼信息,當二維碼發(fā)生較大形變時則無法識別二維碼信息,本發(fā)明可以在二維碼發(fā)生扭曲變形時較好的還原出圖像并提取出二維碼信息。
附圖說明
圖1為本發(fā)明識別方法的流程圖。
圖2為本發(fā)明識別裝置的模塊圖。
具體實施方式
為了便于理解本發(fā)明,下面結(jié)合識別方法的流程圖以及識別裝置的模塊圖,對本發(fā)明進行詳細的說明。
結(jié)合圖1,本發(fā)明的一種二維碼識別方法,包括以下步驟:
通過兩個攝像頭從不同角度同時采集二維碼圖片;
對采集的兩張二維碼圖片進行預(yù)處理;
對預(yù)處理后的二維碼圖片進行二維碼分割處理,提取出二維碼;
根據(jù)兩張二維碼的邊緣扭曲情況對二維碼所處的貼面進行判定與計算,獲得校正公式,使用校正公式對二維碼進行圖像校正,將其還原為標準形狀的二維碼;
記錄兩張標準形狀二維碼編碼區(qū)信息,根據(jù)其中一個編碼區(qū)中黑像素點對另一個編碼區(qū)進行補充處理,得到可識別二維碼;
提取可識別二維碼中的二維碼信息。
進一步的,預(yù)處理包括圖像灰度化處理、圖像二值化處理和圖像去噪處理。
進一步的,分割處理的過程為:
檢測二維碼上的三個位置探測圖形,確定二維碼位置;
對二維碼進行圖像孔洞填充,使二維碼在同一連通域內(nèi);
進行邊緣檢測,提取出二維碼。
進一步的,校正處理過程為
檢測二維碼關(guān)鍵點;
根據(jù)二維碼關(guān)鍵點進行二維碼邊緣擬合和二維碼貼面擬合;
確定校正公式,并通過校正公式校正二維碼,得到標準形狀的二維碼。
結(jié)合圖2,本發(fā)明還提供一種二維碼識別裝置,包括:
兩個攝像頭,用于從不同角度同時采集二維碼圖片;
圖像預(yù)處理模塊,用于對采集的兩張二維碼圖片進行預(yù)處理;
二維碼分割處理模塊,用于對預(yù)處理后的二維碼圖片進行二維碼分割處理,提取出二維碼;
二維碼校正模塊,用于根據(jù)兩張二維碼的邊緣扭曲情況對二維碼所處的貼面進行判定與計算,獲得校正公式,使用校正公式對二維碼進行圖像校正,將其還原為標準形狀的二維碼;
二維碼互補模塊,用于記錄兩張標準形狀二維碼編碼區(qū)信息,根據(jù)其中一個編碼區(qū)中黑像素點對另一個編碼區(qū)進行補充處理,得到可識別二維碼;
二維碼信息提取模塊,用于提取可識別二維碼中的二維碼信息。
所述預(yù)處理包括圖像灰度化處理、圖像二值化處理和圖像去噪處理。
所述二維碼分割處理模塊的分割處理過程為:
檢測二維碼上的三個位置探測圖形,確定二維碼位置;
對二維碼進行圖像孔洞填充,使二維碼在同一連通域內(nèi);
最后進行邊緣檢測,提取出二維碼。
下面結(jié)合具體實施例對本發(fā)明作進一步說明。
實施例
如圖1所示,本實施例的二維碼識別方法包括以下步驟:
第一步,采集二維碼圖片
使用兩個攝像頭從不同角度拍攝對二維碼進行拍攝,本實施例的兩個攝像頭分別在距二維碼平面法線正負二十度。
第二步,預(yù)處理
在獲得含有二維碼的圖片之后,對二維碼圖片進行圖像預(yù)處理,圖像預(yù)處理包括圖像灰度化處理、圖像二值化處理和圖像去噪處理。
含有二維碼的圖像以彩色圖像形式顯示。然而,實際的二維碼區(qū)域只是由深淺交錯的模塊組成,彩色圖像沒有特別的意義。經(jīng)過灰度化以及二值化處理后的圖像需要的計算時間和計算空間更少,可以大大提高處理速度。圖像去噪處理可以降低圖片噪聲,使二維碼圖片變得更加平滑,便于后面對二維碼的分割處理以及對二維碼的識讀工作,可以大大增強對二維碼的識別能力。
圖像預(yù)處理是為二維碼的提取工作做準備,該處理步驟有利于提高裝置的處理速度以及增強裝置對二維碼的識別能力。
第三步,分割處理
對預(yù)處理后的二維碼圖片進行二維碼分割處理,主要過程為:
首先檢測二維碼上的三個位置探測圖形,確定二維碼位置;
然后對二維碼進行圖像孔洞填充,使二維碼在同一連通域內(nèi);
最后進行邊緣檢測,提取出二維碼。
分割處理的作用是根據(jù)二維碼的邊緣將二維碼從圖片中分割出來,便于后續(xù)針對二維碼進行處理。
第四步,校正處理
在獲得兩張二維碼之后,首先判斷二維碼是否有扭曲變形的情況出現(xiàn),如果二維碼并不是矩形,那么將對二維碼進行校正處理,根據(jù)兩張二維碼圖片的邊緣扭曲情況對二維碼所處的貼面進行判定與計算,再根據(jù)計算出的結(jié)果獲得校正公式,使用公式對二維碼進行圖像校正,將其還原為規(guī)范的二維碼。具體過程如下:
首先,檢測兩張二維碼的關(guān)鍵點,關(guān)鍵點包括二維碼邊緣角點及位置探測圖形角點。
二維碼邊緣角點的檢測方法為:因為圖像扭曲使得二維碼圖像各部分的伸縮比例有變化,三個位置探測圖形之間的距離變化比例也會不相同,找出相距最長的兩個位置探測圖形連接成一條直線,并求出直線的斜率,用與該直線平行的兩條直線和垂直的兩條直線分別從四個方向逼近二維碼區(qū)域,直到直線與二維碼相切,求出四條直線與二維碼區(qū)域的切點,即為二維碼邊緣角點。
位置探測圖形角點的檢測方法為:以位置探測圖形的中心為種子點,利用區(qū)域增長算法,求出該位置探測圖形中心所在的連通閾,并令該區(qū)域為白色;然后以中心點為種子點,利用區(qū)域增長算法,求出該位置探測圖形中心所在的連通閾,并令該區(qū)域為黑色;再以中心點為種子點,利用區(qū)域增長算法,求出該位置探測圖形中心所在的連通閾,即得到一個位置探測圖形,即得到位置探測圖形角點。
然后進行二維碼邊緣擬合,上面己經(jīng)找到二維碼關(guān)鍵點,再用最小二乘法曲線擬合每條邊上的關(guān)鍵點,得到邊緣擬合線,將二維碼邊緣提取出。
再進行二維碼貼面擬合,通過上述我們求出的兩組扭曲二維碼上的關(guān)鍵點包括:二維碼邊緣角點,位置探測圖形的角點,及四條邊的擬合曲線,擬合出二維碼貼面形狀。
再確定校正公式,我們將要得到的圖像稱為理想圖,先用積分的方法,求出擬合貼面上同一條邊上每兩個相鄰關(guān)鍵點的距離,累加得到四條擬合曲線的長度,由于二維碼發(fā)生非線性形變,每條邊的形變大小不相同,我們將四條邊的均值作為理想圖的邊長,根據(jù)理想圖的邊長L,求出扭曲二維碼每條邊的伸縮系數(shù)kt=L/Lt,t=1,2,3,4。Lt為四條擬合曲線的長度;將擬合貼面上的關(guān)鍵點作為理想圖的對應(yīng)點,求出擬合貼面上的關(guān)鍵點在擬合曲面上距離各邊的長度,通過伸縮系數(shù)再求出相應(yīng)的理想圖上的對應(yīng)點。假定理想圖中的點(x’,y’),在擬合貼面中對應(yīng)坐標為(x,y),(x,y)與(x’,y’)之間的映射關(guān)系為:其中i取0到m,j取0到n,m為圖像橫坐標最大值,n為縱坐標最大值,k為變量,m≥k≥i,(x,y)為擬合貼面上的點,uij、vij為坐標點(x,y)的校正參數(shù),基于這n對對應(yīng)點數(shù)據(jù)用最小二乘法辨識出式中的校正參數(shù),從而確定校正公式。
最后通過校正公式校正二維碼,根據(jù)二維碼貼面的形狀對二維碼進行坐標映射變換,先將二維碼關(guān)鍵點校正到標準位置,然后再校正二維碼其他部分。
上述校正處理使本發(fā)明可以在二維碼發(fā)生扭曲變形情況下還原出較好的圖像并提取出二維碼信息。
第五步,補充處理
記錄兩張標準形狀二維碼編碼區(qū)信息,根據(jù)其中一個編碼區(qū)中黑像素點對另一個編碼區(qū)進行補充處理,得到可識別二維碼;假設(shè)二維碼圖片出現(xiàn)了光照不均勻現(xiàn)象,出現(xiàn)反光亮斑,通過兩個攝像頭從不同角度對二維碼進行拍攝,采集兩張不同光照分布的二維碼圖片,使用另一張二維碼圖片的同一位置處的二維碼信息去填補該圖片,獲得一張質(zhì)量較好的可識別的二維碼圖片。該處理步驟使本發(fā)明裝置可以在二維碼發(fā)生光照不均情況下還原出較好的圖像并提取出二維碼信息。
第六步,從上一步得到的可識別二維碼中提取二維碼信息。