劉琳琳,梁雪慧
(天津理工大學(xué) 自動(dòng)化學(xué)院,天津 300384)
基于改進(jìn)Canny算子和Hough變換的QR碼圖像校正
劉琳琳,梁雪慧
(天津理工大學(xué) 自動(dòng)化學(xué)院,天津 300384)
在QR碼圖像的識(shí)別中,圖像的傾斜會(huì)給整個(gè)識(shí)別過(guò)程帶來(lái)一定程度的誤差??紤]到傳統(tǒng)Canny算子檢測(cè)對(duì)于去除局部噪聲的效果并不是很理想,提出了一種基于自適應(yīng)中值濾波的Canny算子邊緣檢測(cè)方法,再結(jié)合Hough變換標(biāo)識(shí)出直線段并計(jì)算出傾斜角度,最后用雙線性插值算法對(duì)QR碼圖像進(jìn)行旋轉(zhuǎn)校正。將其在Matlab平臺(tái)上進(jìn)行驗(yàn)證實(shí)驗(yàn),結(jié)果表明,改進(jìn)的Canny算法有效地去除了圖像噪聲,并能夠準(zhǔn)確地完成了QR碼圖像的旋轉(zhuǎn)校正。
QR碼;Canny算子;邊緣檢測(cè);Hough變換;旋轉(zhuǎn)校正
Abstract:In recognition of the QR code image,the inclination of the image will bring a certain degree of error to the whole recognition process.The effect of traditional detection of Canny operator for the removal of the local noise works not well.Considering this situation,a kind of adaptive median filtering method for edge detection of Canny operator is proposed,it identifies the line segment and calculate the tilt angle with the Hough transform.Finally,the bilinear interpolation algorithm is used to rotate the QR code image.To be verified experimentally on Matlab platform,the results show that the improved Canny algorithm effectively eliminates image noise and completes the rotation correction QR code image accurately.
Key words:QR code;Canny operator;edge detection;Hough transform;rotation correction
隨著電子支付方式的廣泛應(yīng)用,手機(jī)QR碼作為新興的電子支付媒介在各個(gè)行業(yè)領(lǐng)域受到普遍關(guān)注。以天津地鐵即將投入使用的云購(gòu)票機(jī)為背景,其針對(duì)手機(jī)屏幕上的QR二維碼進(jìn)行掃碼兌票,但人工采集圖像過(guò)程中難免會(huì)引入一些噪聲甚至圖像的傾斜,因此在整個(gè)QR碼圖像識(shí)別系統(tǒng)中,最初要對(duì)QR碼圖像進(jìn)行圖像預(yù)處理。由于傳統(tǒng)的Canny算子在進(jìn)行QR碼圖像的邊緣檢測(cè)時(shí),對(duì)局部噪聲不能有效去除,這將會(huì)影響圖像的校正效果甚至整個(gè)識(shí)別結(jié)果[1-2]。為提高QR碼圖像識(shí)別的準(zhǔn)確性,提出了一種改進(jìn)的QR碼圖像校正方法,在QR碼圖像進(jìn)行Canny算子邊緣檢測(cè)時(shí)采用自適應(yīng)中值濾波方法進(jìn)行去噪處理,然后結(jié)合Hough變換實(shí)現(xiàn)QR碼圖像的旋轉(zhuǎn)校正[3]。
Canny邊緣檢測(cè)的基本思想就是首先選擇一種高斯濾波器對(duì)圖像進(jìn)行平滑濾波,然后采用非極值抑制技術(shù)進(jìn)行處理得到最后的邊緣圖像。
采用二維高斯函數(shù)(二維正態(tài)分布密度函數(shù))構(gòu)造濾波器[4-5],均值為0、方差為σ2的二維高斯函數(shù)如式(1);然后對(duì)原始圖像數(shù)據(jù) f(x,y)進(jìn)行卷積運(yùn)算如式(2),得到平滑圖像 I(x,y)。
其中,σ為平滑程度控制參數(shù)。
利用一階偏導(dǎo)的有限差分來(lái)計(jì)算平滑后所得圖像I各點(diǎn)處的梯度幅值與梯度方向[2-5]。一階差分卷積模板如下:
取圖像中任一像素點(diǎn)(i,j),將圖像 f(x,y)分別與模板H1、H2卷積得到其x方向、y方向的一階偏導(dǎo)數(shù) Gx(i,j)和 Gy(i,j)分別為:
則對(duì)應(yīng)點(diǎn)(i,j)處的梯度為:
梯度幅值 φ(i,j)與梯度方向 θφ(i,j)分別為:
圖像梯度幅值矩陣中的元素值越大,說(shuō)明圖像中該點(diǎn)的梯度值越大,但得到的梯度并不足以確定邊緣,因?yàn)檫@里僅把圖像快速變化的問(wèn)題轉(zhuǎn)化成求幅值局部最大值問(wèn)題。為確定邊緣,必須細(xì)化幅值圖像中的屋脊帶,只保留幅值局部最大值的像素點(diǎn),并將非局部極大值點(diǎn)置零以得到細(xì)化的邊緣[6-7]。
使用兩個(gè)高低閾值 T1和 T2(T1<T2),對(duì)圖像進(jìn)行掃描,分別得到兩個(gè)高低閾值邊緣圖像N1[i,j]和N2[i,j]。雙閾值法是先用高閾值求邊緣,由于高閾值比較嚴(yán)格,因而認(rèn)為得到的高閾值邊緣都是有效的,但它往往是存在間斷的。首先在高閾值邊緣圖像N2[i,j]中把間斷的邊緣連成輪廓,當(dāng)輪廓出現(xiàn)斷點(diǎn)時(shí),該算法就在低閾值邊緣圖像N1[i,j]中的8鄰域位置搜尋可以連接成輪廓上的邊緣,這樣,算法不斷地在N1[i,j]中收集邊緣,直到將 N2[i,j]連接成閉合為止[7-8]。
傳統(tǒng)的Canny算子進(jìn)行邊緣檢測(cè)時(shí),采用的是高斯濾波器對(duì)原圖像進(jìn)行平滑濾波。考慮到在圖像采集過(guò)程中不可避免的會(huì)引入一些圖像噪聲,對(duì)平滑濾波而言,在處理的像素鄰域之內(nèi)包含噪聲點(diǎn)時(shí),噪聲的存在會(huì)對(duì)該點(diǎn)的像素值的計(jì)算產(chǎn)生影響,而高斯平滑,影響程度與噪聲點(diǎn)到中心點(diǎn)的距離成正比;相反,中值濾波是一種去除噪聲的非線性濾波處理方法,對(duì)于某些類(lèi)型的隨機(jī)噪聲具有較理想的降噪能力,且它在衰減噪聲的同時(shí)不會(huì)使圖像的邊界模糊。因此,本實(shí)驗(yàn)采用自適應(yīng)的中值濾波方法取代傳統(tǒng)的高斯濾波對(duì)圖像進(jìn)行平滑處理,減少圖像邊緣受噪聲的影響,并避免了濾波器參數(shù)的人工設(shè)定[9-12]。
該方法能夠?qū)崿F(xiàn)兩個(gè)功能:一是可有效的去除椒鹽噪聲,二是減少因?yàn)V波帶來(lái)的圖像模糊,幾乎不會(huì)影響到邊緣灰度值。其步驟如下:
照片發(fā)送郵箱:2851627954@qq.com(注明姓名和聯(lián)系方式),照片刊登后,同學(xué)們可免費(fèi)獲得當(dāng)月雜志和禮品一份。
Step1:設(shè)定起始窗口大小及最大尺寸;
Step2:將帶有噪聲的QR碼圖像尺寸調(diào)整為最大窗口尺寸;
Step3:對(duì)窗口內(nèi)的像素進(jìn)行排序,求出像素中值,并判斷中值是否為噪聲點(diǎn)。若不是,則繼續(xù)下一步操作;若是,則轉(zhuǎn)到操作step5;
Step4:判斷該點(diǎn)的原值是否為噪聲點(diǎn)。若不是,則輸出原值,即不作處理;若是,則輸出中值;
Step5:增大窗口尺寸。若新窗口小于設(shè)定好的最大尺寸,重復(fù)操作step3;若大于,則濾波器輸出前一個(gè)窗口的中值。
Hough變換的基本思想是利用點(diǎn)-線的對(duì)偶性[1]。在原始坐標(biāo)系x-y中的一個(gè)點(diǎn)對(duì)應(yīng)了參數(shù)坐標(biāo)系k-b中的一條直線,同樣k-b坐標(biāo)系下的一條直線對(duì)應(yīng)了x-y坐標(biāo)系中的一個(gè)點(diǎn)。對(duì)于x-y坐標(biāo)系中同一條直線上的所有點(diǎn),由于它們具有相同的斜率k0和截距b0,所以它們?cè)趉-b坐標(biāo)系中對(duì)應(yīng)于同一個(gè)點(diǎn)。這樣再將x-y坐標(biāo)系下的各個(gè)點(diǎn)投影到k-b坐標(biāo)系下之后,看k-b坐標(biāo)系下有沒(méi)有聚集點(diǎn),這樣的聚集點(diǎn)就對(duì)應(yīng)了x-y坐標(biāo)系下的直線[13-15],直角坐標(biāo)系中的Hough變換如圖1所示。
但是y=kx+b形式只適合解釋Hough變換原理,其無(wú)法檢測(cè)垂直線條,所以在實(shí)際應(yīng)用中,采用參數(shù)方程 ρ=xcosθ+ysinθ形式。這樣,Hough 變換就不再受局限性,原始坐標(biāo)系x-y平面中的一個(gè)點(diǎn)就對(duì)應(yīng)了極坐標(biāo)系ρ-θ平面上的一條曲線,極坐標(biāo)系中的Hough變換如圖2所示。
第一步:讀取QR碼圖像;
圖1 直角坐標(biāo)中的Hough變換
圖2 極坐標(biāo)中的Hough變換
第二步:將圖像進(jìn)行灰度轉(zhuǎn)換;
第四步:對(duì)QR碼圖像進(jìn)行高斯濾波后的Canny算子邊緣檢測(cè),并進(jìn)行效果對(duì)比;
第五步:驗(yàn)證本文所提出的改進(jìn)Canny算子邊緣檢測(cè)算法(此處以椒鹽噪聲為例)——基于自適應(yīng)中值濾波方法的Canny檢測(cè);
第六步:分別將幾種邊緣檢測(cè)算法對(duì)帶有椒鹽噪聲的QR碼圖像進(jìn)行邊緣檢測(cè)并進(jìn)行效果比較;
第七步:選擇自適應(yīng)中值濾波-Canny算子邊緣檢測(cè)來(lái)進(jìn)行QR碼圖像的Hough校正。具體步驟如下:
Step1:對(duì)邊緣檢測(cè)得到的QR碼圖像進(jìn)行Hough變換及峰值點(diǎn)檢測(cè)并標(biāo)出峰值位置;
Step2:由檢測(cè)出的峰值點(diǎn)得到原二值圖像中的直線信息,提取直線段;
Step3:強(qiáng)調(diào)出最長(zhǎng)部分,檢測(cè)出起止端點(diǎn),利用直線端點(diǎn)坐標(biāo)值,求得其斜率;
Step4:利用雙線性插值算法旋轉(zhuǎn)得到校正后的QR碼圖像。
第八步:顯示校正后QR碼圖像。
本算法實(shí)現(xiàn)是基于Matlab R2011b平臺(tái)完成的,通過(guò)對(duì)手機(jī)QR碼的攝像來(lái)完成圖像的采集。首先,對(duì)采集到的QR碼圖像分別進(jìn)行傳統(tǒng)Canny算子和加入高斯濾波的Canny算子的邊緣檢測(cè),效果如圖3所示。通過(guò)實(shí)驗(yàn)可以看出,在未添加椒鹽噪聲時(shí),傳統(tǒng)的Canny算子邊緣檢測(cè)尚且還能獲得較好的檢測(cè)結(jié)果。為了驗(yàn)證本文所提出改進(jìn)Canny算子檢測(cè)在抗噪方面的顯著效果,在采集到的QR碼圖像上加入了椒鹽噪聲,再次對(duì)圖像進(jìn)行邊緣檢測(cè),從實(shí)驗(yàn)結(jié)果對(duì)比可知,傳統(tǒng)的Canny算子和經(jīng)過(guò)高斯濾波后的Canny算子已不能很好的完成邊緣檢測(cè),但是對(duì)于自適應(yīng)中值濾波來(lái)說(shuō),依然能夠高效的完成圖像的邊緣檢測(cè),如圖4所示。然后將改進(jìn)的Canny算子邊緣檢測(cè)與Hough變換結(jié)合來(lái)完成QR碼圖像的傾斜校正,并將邊緣檢測(cè)后所得圖像進(jìn)行直線的標(biāo)識(shí),最后利用雙線性插值算法旋轉(zhuǎn)得到校正后的QR碼圖像,如圖5所示。
圖3 傳統(tǒng)Canny算子對(duì)原圖像進(jìn)行邊緣檢測(cè)
圖4 改進(jìn)Canny算子對(duì)加噪圖像進(jìn)行邊緣檢測(cè)
圖5 改進(jìn)Canny算子對(duì)圖像進(jìn)行旋轉(zhuǎn)校正
本文將改進(jìn)的Canny算子應(yīng)用到QR碼圖像的邊緣檢測(cè)中,并結(jié)合Hough變換對(duì)圖像中的直線進(jìn)行檢測(cè),進(jìn)而實(shí)現(xiàn)圖像的傾斜校正。選擇自適應(yīng)中值濾波對(duì)傳統(tǒng)的Canny算子邊緣檢測(cè)算法進(jìn)行改進(jìn),解決了因平滑濾波帶來(lái)的圖像邊界模糊,且免去了人工設(shè)定濾波器參數(shù)。通過(guò)實(shí)驗(yàn)可以看出,相比傳統(tǒng)的Canny算子檢測(cè),該方法可以有效地去除噪聲并準(zhǔn)確地實(shí)現(xiàn)圖像邊緣的檢測(cè),最后結(jié)合Hough變換完成了QR碼圖像的旋轉(zhuǎn)校正。
[1]馬超.基于人工智能算法的QR碼識(shí)別系統(tǒng)應(yīng)用與比較[D].浙江:杭州電子科技大學(xué),2013.
[2]孫麗萍,方源敏,劉兵川,等.Canny算子邊緣檢測(cè)的改進(jìn)研究 [J].河南科學(xué),2015,33 (11):1937-1940.
[3]馬歌.基于Canny算子和Radon變換的證件圖像傾斜校正[J].中國(guó)新技術(shù)新產(chǎn)品,2014,(15):14-15.
[4]張錚,徐超,任淑霞,等.數(shù)字圖像處理與機(jī)器視覺(jué):Visual C++與Matlab實(shí)現(xiàn)[M].北京:人民郵電出版社,2014.
[5]趙宏中,張彥超.基于Canny邊緣檢測(cè)算子的圖像檢索算法[J].電子設(shè)計(jì)工程,2010,18(2):75-78.
[6]李平陽(yáng),孫志毅.一種提升Canny算子的自適應(yīng)邊緣檢測(cè)方法[J].太原科技大學(xué)學(xué)報(bào),2013,34(3):171-174.
[7]張少偉.基于機(jī)器視覺(jué)的邊緣檢測(cè)算法研究與應(yīng)用[D].上海:上海交通大學(xué),2013.
[8]李旭,王正勇,吳曉紅,等.一種改進(jìn)非極大值抑制的Canny邊緣檢測(cè)算法 [J].成都信息工程學(xué)院學(xué)報(bào),2011,26(5):564-569.
[9]楊卓東,張欣,張濤,等.改進(jìn)自適應(yīng)中值濾波的圖像去噪[J].通信技術(shù),2015,48(11):1257-1260.
[10]潘濤,吳曉波,張偉偉,等.改進(jìn)自適應(yīng)中值濾波算法在圖像去噪中的應(yīng)用[J].后勤工程學(xué)院學(xué)報(bào),2015,31(5):92-96.
[11]趙高長(zhǎng),張磊,武風(fēng)波.改進(jìn)的中值濾波算法在圖像去噪中的應(yīng)用[J].應(yīng)用光學(xué),2011,32(4):678-682.
[12]趙建春,葉麗娜,劉芳,等.改進(jìn)型中值濾波在圖像處理中的應(yīng)用[J].四川兵工學(xué)報(bào),2013,34(6):129-131.
[13]高宇鵬,李益明,胡眾義,等.基于Hough變換傾斜文檔校正的改進(jìn)方法 [J].浙江工業(yè)大學(xué)學(xué)報(bào),2013,41(1):106-109.
[14]喬連芝.基于圖像處理方式定位識(shí)別條形碼[D].廣東:華南理工大學(xué),2010.
[15]衛(wèi)晉偉,戴曙光,穆平安.基于形態(tài)學(xué)和Hough變換的QR碼校正與定位方法[J].電腦與信息技術(shù),2010,18(6):32-35.
QR code image correction based on improved Canny operator and Hough transform
LIU Lin-lin,LIANG Xue-hui
(Department of Automation, Tianjin University of Technology, Tianjin300384,China)
TN713
A
1674-6236(2017)19-0183-04
2016-08-06稿件編號(hào)201608049
天津市科技特派員項(xiàng)目(14JCTPJC00510)
劉琳琳(1991—),女,天津人,碩士研究生。研究方向:控制理論與控制工程。