基于改进Canny算子和Hough变换的QR码图像校正
2017-10-12刘琳琳梁雪慧
刘琳琳,梁雪慧
(天津理工大学 自动化学院,天津 300384)
基于改进Canny算子和Hough变换的QR码图像校正
刘琳琳,梁雪慧
(天津理工大学 自动化学院,天津 300384)
在QR码图像的识别中,图像的倾斜会给整个识别过程带来一定程度的误差。考虑到传统Canny算子检测对于去除局部噪声的效果并不是很理想,提出了一种基于自适应中值滤波的Canny算子边缘检测方法,再结合Hough变换标识出直线段并计算出倾斜角度,最后用双线性插值算法对QR码图像进行旋转校正。将其在Matlab平台上进行验证实验,结果表明,改进的Canny算法有效地去除了图像噪声,并能够准确地完成了QR码图像的旋转校正。
QR码;Canny算子;边缘检测;Hough变换;旋转校正
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
随着电子支付方式的广泛应用,手机QR码作为新兴的电子支付媒介在各个行业领域受到普遍关注。以天津地铁即将投入使用的云购票机为背景,其针对手机屏幕上的QR二维码进行扫码兑票,但人工采集图像过程中难免会引入一些噪声甚至图像的倾斜,因此在整个QR码图像识别系统中,最初要对QR码图像进行图像预处理。由于传统的Canny算子在进行QR码图像的边缘检测时,对局部噪声不能有效去除,这将会影响图像的校正效果甚至整个识别结果[1-2]。为提高QR码图像识别的准确性,提出了一种改进的QR码图像校正方法,在QR码图像进行Canny算子边缘检测时采用自适应中值滤波方法进行去噪处理,然后结合Hough变换实现QR码图像的旋转校正[3]。
1 Canny算子边缘检测原理
Canny边缘检测的基本思想就是首先选择一种高斯滤波器对图像进行平滑滤波,然后采用非极值抑制技术进行处理得到最后的边缘图像。
1.1 传统的高斯滤波器平滑图像
采用二维高斯函数(二维正态分布密度函数)构造滤波器[4-5],均值为0、方差为σ2的二维高斯函数如式(1);然后对原始图像数据 f(x,y)进行卷积运算如式(2),得到平滑图像 I(x,y)。
其中,σ为平滑程度控制参数。
1.2 计算梯度的幅值和方向
利用一阶偏导的有限差分来计算平滑后所得图像I各点处的梯度幅值与梯度方向[2-5]。一阶差分卷积模板如下:
取图像中任一像素点(i,j),将图像 f(x,y)分别与模板H1、H2卷积得到其x方向、y方向的一阶偏导数 Gx(i,j)和 Gy(i,j)分别为:
则对应点(i,j)处的梯度为:
梯度幅值 φ(i,j)与梯度方向 θφ(i,j)分别为:
1.3 对梯度幅值应用非极大值抑制
图像梯度幅值矩阵中的元素值越大,说明图像中该点的梯度值越大,但得到的梯度并不足以确定边缘,因为这里仅把图像快速变化的问题转化成求幅值局部最大值问题。为确定边缘,必须细化幅值图像中的屋脊带,只保留幅值局部最大值的像素点,并将非局部极大值点置零以得到细化的边缘[6-7]。
1.4 双阈值算法检测和连接边缘
使用两个高低阈值 T1和 T2(T1<T2),对图像进行扫描,分别得到两个高低阈值边缘图像N1[i,j]和N2[i,j]。双阈值法是先用高阈值求边缘,由于高阈值比较严格,因而认为得到的高阈值边缘都是有效的,但它往往是存在间断的。首先在高阈值边缘图像N2[i,j]中把间断的边缘连成轮廓,当轮廓出现断点时,该算法就在低阈值边缘图像N1[i,j]中的8邻域位置搜寻可以连接成轮廓上的边缘,这样,算法不断地在N1[i,j]中收集边缘,直到将 N2[i,j]连接成闭合为止[7-8]。
2 改进的Canny算子
传统的Canny算子进行边缘检测时,采用的是高斯滤波器对原图像进行平滑滤波。考虑到在图像采集过程中不可避免的会引入一些图像噪声,对平滑滤波而言,在处理的像素邻域之内包含噪声点时,噪声的存在会对该点的像素值的计算产生影响,而高斯平滑,影响程度与噪声点到中心点的距离成正比;相反,中值滤波是一种去除噪声的非线性滤波处理方法,对于某些类型的随机噪声具有较理想的降噪能力,且它在衰减噪声的同时不会使图像的边界模糊。因此,本实验采用自适应的中值滤波方法取代传统的高斯滤波对图像进行平滑处理,减少图像边缘受噪声的影响,并避免了滤波器参数的人工设定[9-12]。
该方法能够实现两个功能:一是可有效的去除椒盐噪声,二是减少因滤波带来的图像模糊,几乎不会影响到边缘灰度值。其步骤如下:
照片发送邮箱:2851627954@qq.com(注明姓名和联系方式),照片刊登后,同学们可免费获得当月杂志和礼品一份。
Step1:设定起始窗口大小及最大尺寸;
Step2:将带有噪声的QR码图像尺寸调整为最大窗口尺寸;
Step3:对窗口内的像素进行排序,求出像素中值,并判断中值是否为噪声点。若不是,则继续下一步操作;若是,则转到操作step5;
Step4:判断该点的原值是否为噪声点。若不是,则输出原值,即不作处理;若是,则输出中值;
Step5:增大窗口尺寸。若新窗口小于设定好的最大尺寸,重复操作step3;若大于,则滤波器输出前一个窗口的中值。
3 Hough变换原理
Hough变换的基本思想是利用点-线的对偶性[1]。在原始坐标系x-y中的一个点对应了参数坐标系k-b中的一条直线,同样k-b坐标系下的一条直线对应了x-y坐标系中的一个点。对于x-y坐标系中同一条直线上的所有点,由于它们具有相同的斜率k0和截距b0,所以它们在k-b坐标系中对应于同一个点。这样再将x-y坐标系下的各个点投影到k-b坐标系下之后,看k-b坐标系下有没有聚集点,这样的聚集点就对应了x-y坐标系下的直线[13-15],直角坐标系中的Hough变换如图1所示。
但是y=kx+b形式只适合解释Hough变换原理,其无法检测垂直线条,所以在实际应用中,采用参数方程 ρ=xcosθ+ysinθ形式。这样,Hough 变换就不再受局限性,原始坐标系x-y平面中的一个点就对应了极坐标系ρ-θ平面上的一条曲线,极坐标系中的Hough变换如图2所示。
4 QR码图像的倾斜校正
4.1 算法流程
第一步:读取QR码图像;
图1 直角坐标中的Hough变换
图2 极坐标中的Hough变换
第二步:将图像进行灰度转换;
第四步:对QR码图像进行高斯滤波后的Canny算子边缘检测,并进行效果对比;
第五步:验证本文所提出的改进Canny算子边缘检测算法(此处以椒盐噪声为例)——基于自适应中值滤波方法的Canny检测;
第六步:分别将几种边缘检测算法对带有椒盐噪声的QR码图像进行边缘检测并进行效果比较;
第七步:选择自适应中值滤波-Canny算子边缘检测来进行QR码图像的Hough校正。具体步骤如下:
Step1:对边缘检测得到的QR码图像进行Hough变换及峰值点检测并标出峰值位置;
Step2:由检测出的峰值点得到原二值图像中的直线信息,提取直线段;
Step3:强调出最长部分,检测出起止端点,利用直线端点坐标值,求得其斜率;
Step4:利用双线性插值算法旋转得到校正后的QR码图像。
第八步:显示校正后QR码图像。
4.2 实验结果分析
本算法实现是基于Matlab R2011b平台完成的,通过对手机QR码的摄像来完成图像的采集。首先,对采集到的QR码图像分别进行传统Canny算子和加入高斯滤波的Canny算子的边缘检测,效果如图3所示。通过实验可以看出,在未添加椒盐噪声时,传统的Canny算子边缘检测尚且还能获得较好的检测结果。为了验证本文所提出改进Canny算子检测在抗噪方面的显著效果,在采集到的QR码图像上加入了椒盐噪声,再次对图像进行边缘检测,从实验结果对比可知,传统的Canny算子和经过高斯滤波后的Canny算子已不能很好的完成边缘检测,但是对于自适应中值滤波来说,依然能够高效的完成图像的边缘检测,如图4所示。然后将改进的Canny算子边缘检测与Hough变换结合来完成QR码图像的倾斜校正,并将边缘检测后所得图像进行直线的标识,最后利用双线性插值算法旋转得到校正后的QR码图像,如图5所示。
图3 传统Canny算子对原图像进行边缘检测
图4 改进Canny算子对加噪图像进行边缘检测
图5 改进Canny算子对图像进行旋转校正
5 结 论
本文将改进的Canny算子应用到QR码图像的边缘检测中,并结合Hough变换对图像中的直线进行检测,进而实现图像的倾斜校正。选择自适应中值滤波对传统的Canny算子边缘检测算法进行改进,解决了因平滑滤波带来的图像边界模糊,且免去了人工设定滤波器参数。通过实验可以看出,相比传统的Canny算子检测,该方法可以有效地去除噪声并准确地实现图像边缘的检测,最后结合Hough变换完成了QR码图像的旋转校正。
[1]马超.基于人工智能算法的QR码识别系统应用与比较[D].浙江:杭州电子科技大学,2013.
[2]孙丽萍,方源敏,刘兵川,等.Canny算子边缘检测的改进研究 [J].河南科学,2015,33 (11):1937-1940.
[3]马歌.基于Canny算子和Radon变换的证件图像倾斜校正[J].中国新技术新产品,2014,(15):14-15.
[4]张铮,徐超,任淑霞,等.数字图像处理与机器视觉:Visual C++与Matlab实现[M].北京:人民邮电出版社,2014.
[5]赵宏中,张彦超.基于Canny边缘检测算子的图像检索算法[J].电子设计工程,2010,18(2):75-78.
[6]李平阳,孙志毅.一种提升Canny算子的自适应边缘检测方法[J].太原科技大学学报,2013,34(3):171-174.
[7]张少伟.基于机器视觉的边缘检测算法研究与应用[D].上海:上海交通大学,2013.
[8]李旭,王正勇,吴晓红,等.一种改进非极大值抑制的Canny边缘检测算法 [J].成都信息工程学院学报,2011,26(5):564-569.
[9]杨卓东,张欣,张涛,等.改进自适应中值滤波的图像去噪[J].通信技术,2015,48(11):1257-1260.
[10]潘涛,吴晓波,张伟伟,等.改进自适应中值滤波算法在图像去噪中的应用[J].后勤工程学院学报,2015,31(5):92-96.
[11]赵高长,张磊,武风波.改进的中值滤波算法在图像去噪中的应用[J].应用光学,2011,32(4):678-682.
[12]赵建春,叶丽娜,刘芳,等.改进型中值滤波在图像处理中的应用[J].四川兵工学报,2013,34(6):129-131.
[13]高宇鹏,李益明,胡众义,等.基于Hough变换倾斜文档校正的改进方法 [J].浙江工业大学学报,2013,41(1):106-109.
[14]乔连芝.基于图像处理方式定位识别条形码[D].广东:华南理工大学,2010.
[15]卫晋伟,戴曙光,穆平安.基于形态学和Hough变换的QR码校正与定位方法[J].电脑与信息技术,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稿件编号201608049
天津市科技特派员项目(14JCTPJC00510)
刘琳琳(1991—),女,天津人,硕士研究生。研究方向:控制理论与控制工程。