范澤華 陳茂林
摘 要:在快捷支付的生活中,手機掃描二維碼圖像時會因囊括其他非用戶鎖定的二維碼而導致識別失敗,用戶需要重新掃描二維碼才能解決該問題,降低了二維碼使用的便捷率。本文提出了一種改進的輪廓定位檢測方法,先將圖像進行降噪處理和圖像增強處理,然后再獲取關鍵探測圖形的位置,最后通過旋轉與ROI區(qū)域選定生成標準二維碼圖像。實驗結果表明,本方法可提高二維碼圖像的檢測率。
關鍵詞:二維碼;圖像預處理;位置探測圖形;輪廓定位檢測
中圖分類號:TP391.41 文獻標識碼:A 文章編號:1003-5168(2018)22-0021-02
Research on Image Detection of QR Code with Multiple Interference
Points Based on OpenCV Library
FAN Zehua CHEN Maolin
(Chongqing Jiaotong University,Chongqing 400074)
Abstract: In the life of fast payment, mobile phone scanning two-dimensional code image will result in recognition failure because it contains other two-dimensional code locked by non-users. Users need to re-scan two-dimensional code to solve this problem and reduce the convenience of using two-dimensional code. In this paper, an improved contour location detection method was proposed. First, the image was denoised and enhanced, then the position of the key detection image was obtained. Finally, the standard two-dimensional code image was generated by rotation and ROI region selection. Experimental results showed that this method could improve the detection rate of two-dimensional code images.
Keywords: QR Code;image preprocessing;position detection graphics;contour location detection
二維碼是用某種特定的幾何圖形按一定規(guī)律在二維平面維度上采用黑白相間的圖形來記錄數(shù)據(jù)符號信息的,通過圖像輸入設備或光電掃描設備自動識讀以實現(xiàn)信息自動處理。在二維碼密集度較高的情況下,二維碼之間也會產生噪聲。目前使用的輪廓定位法會因為非目標二維碼的噪聲干擾導致檢測失敗,從而導致二維碼的應用效率下降。本文從圖像預處理過程中的檢測階段入手,對輪廓定位法進行改進,從而提高圖像預處理的精準度。
1 圖像預處理
根據(jù)二維碼的屬性,需要對其中的圖像進行降噪處理和圖像增強處理。
1.1 灰度處理
對于彩色圖像,將圖像的RGB分量轉化成灰度(過濾彩色干擾),其轉化公式為:
[Gray=0.3×R+0.59×G+0.11×B] (1)
1.2 濾波處理
通過電子設備采集的圖像通常會受到電磁干擾,為了提高圖像識別的精度,需要對之前的灰度圖進行去噪處理[1]。數(shù)學公式表示為:
[Yi=Medfi-v,…,fi-1,fi,fi+1,…,fi+v] (2)
其中,[i∈N],[v=m-1/2],[Yi]為序列[fi-v,…,fi-1,fi,fi+1,…,fi+v]的中值。
1.3 灰度圖像直方圖均衡化
考慮到光照問題,曝光過度或者曝光不足的圖像需要采用灰度圖像直方圖均衡化來增強圖像細節(jié)[2]。
灰度直方圖均衡化算法實現(xiàn)步驟如下。
①統(tǒng)計原始圖像各灰度級的像素數(shù)目[ni]([0≤i②圖像中灰度為[i]的像素出現(xiàn)的概率是:[px(i)=p(x=i)=ni/n],其中[n]是當前圖像中所有的像素數(shù),[px(i)]是像素值為[i]的圖像的直方圖,歸一化到[0,1];
③px的累積分布函數(shù),是圖像的累計歸一化直方圖:
[cdfxi=j=0ipx(j)] (3)
④直方圖均衡化計算公式,cdfmin為累積分布函數(shù)最小值,M和N分別代表圖像的長寬像素個數(shù),而L則是灰度級數(shù)(如圖像為8位深度,則灰度級別共有28=256個級數(shù),這也是最常見的灰度級數(shù)),v為原始圖像中為v的像素值:
[hv=roundcdfv-cdfminM*N-cdfmin*L-1] (4)
1.4 二值化
根據(jù)二維碼的“0”“1”比特流的概念,這里需要對前面處理的圖像進行二值化,進一步將灰度圖像處理為非黑即白的黑白效果圖。
灰度圖像閾值處理公式為:
[fx,y=0 fx,y
2 位置探測圖形的重定位實現(xiàn)
2.1 位置探測圖形的提取
二維碼在區(qū)域上有嚴格的定義。其中,二維碼圖像有效區(qū)域中存在三個探測圖形。探測圖形中黑白相間圖形的寬度之比為1∶1∶3∶1∶1。經過位置探測圖形提取處理后,生成僅僅只包含探測圖形的圖像。
2.2 關鍵位置探測圖形的重定位
確認好位置探測圖形的坐標信息后,求解坐標之間的斜率。其中,左上角的探測圖形與其他兩個圖形的夾角等于90° ± δ 。
通過斜率與角度的公式轉換可推導出夾角模型:
[angle=arctanki×180π-arctankj×180π] (6)
當且僅當[angle=90°±δ]且探測圖形之間的歐式距離為最小的情況下,滿足關鍵位置探測圖形篩選條件[3]。
2.3 旋轉變換
在確認好關鍵位置探測圖形后,需要對圖形進行幾何變換,處理成標準的二維碼圖像。本文主要采用旋轉變化,圖像的旋轉變換通常是以輸入圖像的中心像素為原點,將圖像上的所有像素都按一個相同的角度進行旋轉,但這里選定左下和右上的探測圖形的中點C作為旋轉中心。根據(jù)旋轉變換的矩陣公式與斜率角度轉換公式可以得到旋轉模型:
[xi,yi,1=xi,yi,1cosarctank0×180π sinarctank0×180π 0-sinarctank0×180π cosarctank0×180π 0 0 0 1](7)
其中,[k0]為中點C與圖像左下對角點的斜率。
通過旋轉處理與ROI區(qū)域選定后,處理出最終的標準二維碼圖像(如圖2所示)。
3 結果分析
為了驗證方法的可行性,采用手機采集二維碼圖像信息的方式進行處理。為了達到實驗目的,從店鋪的微信支付寶云支付收款碼進行采集,共選取200張作為測試圖像。其中,成功生成標準二維碼圖片的數(shù)量為187,檢測成功率為93.5%。從實驗結果看,本文的檢測方法可行性較高。該方法降低了顧客使用手機掃描二維碼的時間,提高了二維碼的快捷效率。
4 結語
二維碼區(qū)域的確定存在一定的誤判性,本文通過對包含二維碼的圖像進行減噪與增強圖像處理,從二維碼的屬性出發(fā),提取關鍵位置探測圖像。由此,快速鎖定了用戶感興趣的區(qū)域,降低了用戶的操作時間。但本文存在一定的局限性,只能應用于店鋪堆放的二維碼圖像和環(huán)境較好的情況,而對位置探測圖像數(shù)量較多的圖像需要進一步研究。
參考文獻:
[1]歐福超.基于圖像處理的QR碼圖像預處理的研究[D].濟南:山東大學,2014.
[2]齊鳳山,蔣廷耀.基于Harris的二維碼圖像角點檢測方法改進[J].軟件導刊,2016(5):199-201.
[3]灰度圖像直方圖均衡化公式及實現(xiàn)[EB/OL].(2018-01-28)[2018-06-01].https://blog.csdn.net/fengbingchun/article/details/79188021.