一种超低对比度二维码的解码方法及系统
技术领域
本发明属于二维码的解码技术领域,尤其涉及一种超低对比度二维码的解码方法及系统。
背景技术
现有二维码解码方法一般先对图像进行二值化处理,然后进行定位,最后解码。但是一般的图像二值化方法对低对比度的图像处理效果很差。对于这种问题一般采用图像增强进行处理,比如伽马校正。但是处理的结果仍然不够理想。以上处理的结果不能有效的将二维码图形与背景分离。
还有一种处理低对比度的思想是先进行边缘检测,根据二维码的相关特征找到二维码所在图像的大概区域,然后对这个区域进行二值化,但是这种处理仍然有一个缺点,很多低对比度的二维码采集的图片都伴随着很强的噪声,这些噪声会严重影响边缘检测的效果,即使使用边缘检测最好的canny方法也不能得到完整的区域。
发明内容
本发明的任务之一是解决现有的二维码解码方法不能有效将二维码图形与背景分离,对低对比度的图像处理效果很差的问题,提供了一种可有效将二维码图形与背景分离,对低对比度的图像处理效果好的超低对比度二维码的解码方法。
本发明采用的技术方案为:
一种超低对比度二维码的解码方法,包括以下步骤:
1)建立二维码原始图像的积分图像,利用积分图像对二维码原始图像进行自适应二值化处理;
2)对二值化处理后的二维码原始图像进行中值滤波去噪;
3)对去噪后的二维码原始图像进行定位;
4)对提取的二进制系列检错纠错、译码。
优选地,所述步骤1)中,利用积分图像对二维码原始图像进行自适应二值化处理的具体步骤为:
A、设图像在像素点(x,y)处的灰度值为f(x,y),在二维码原始图像中建立以像素点(x,y)为中心的(2s+1)×(2s+1)窗口,利用积分图像计算窗口内的像素点的灰度值之和,其中,s为整数;
B、根据步骤A中得出的窗口内的像素点的灰度和值,计算其与的比值,若两者的比值大于设定的阈值百分比参数,则该点设为1,判为目标像素类,否则为0,判为背景像素类,完成此点的二值化;其中,两者的比值是指窗口内的像素点的灰度和值/的值。
C、根据步骤A和B,对图像中的各个像素点(x,y)逐点进行二值化。
由于积分图像所需的空间较大,通常其所需的内存空间至少是原始图像空间的4倍,这对一些内存资源非常紧张的嵌入式设备是个较大的问题,为了节省内存资源,更优选地,所述步骤1)中,二维码原始图像的积分图像的建立通过如下步骤实现:
i、新建两个数组,数组宽度同二维码原始图像的宽度相同;
ii、在处理像素点(x,y)时,在步骤i的两个数组中,分别记录积分图像的第y-s-1行和第y+s行,其中,s为整数;
iii、使用如下公式计算像素点(x,y)窗口区域(2s+1)×(2s+1)内的像素之和,公式为:
其中,x1=x-s; x2=x+s; y1=y-s; y2=y+s,I(x2,y2)是积分图像第y+s行中(x2,y2)对应的值;I(x1-1,y2)是积分图像第y+s行中(x1-1,y2)对应的值;I(x2,y1-1)是积分图像第y-s-1行中(x2,y1-1)对应的值;I(x1-1,y1-1)是积分图像第y-s-1行中(x1-1,y1-1)对应的值。
中值滤波是将每一个像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值,在处理过程中,需要对窗口内的像素点进行排序,取中间的值,通常排序是非常耗时的,为了节省中值滤波的处理时间,优选地,所述步骤2)中,中值滤波的处理方法为:将滑动窗口内的各个像素点的像素值相加,得到像素值之和,然后将其与滑动窗口内的像素点数的1/2进行比较,若像素值之和大于像素点数的1/2,则结果为1,此点判为目标像素类,否则结果为0,此点判为背景像素类。
为了进一步节省处理时间,更优选地,利用中值滤波处理像素点(x+1,y)的窗口区域时,将像素点(x,y)的窗口区域中的各个像素点的像素值之和减去其第一列像素点的像素值之和,再加上像素点(x+1,y)窗口区域的最后一列像素点的像素值之和,即可得出像素点(x+1,y)窗口区域的各个像素点的像素值之和。
本发明还提供了一种超低对比度二维码的解码系统,该系统可有效将二维码图形与背景分离,对低对比度的图像处理效果好。
本发明采用的技术方案为:一种超低对比度二维码的解码系统,包括:
自适应二值化处理模块,用于建立二维码原始图像的积分图像,利用积分图像对二维码原始图像进行自适应二值化处理;
中值滤波处理模块,用于对二值化处理后的二维码原始图像进行中值滤波去噪;
定位模块,用于对去噪后的二维码原始图像进行定位;
检错纠错译码模块,用于对提取的二进制系列检错纠错译码。
相对于现有技术,本发明的有益效果为:
本发明的超低对比度二维码的解码方法和系统通过对二维码原始图像进行自适应二值化处理和中值滤波去噪后,可有效将二维码图形与背景分离,对低对比度的图像处理效果好。
附图说明
图1为本发明超低对比度二维码的解码方法的流程图;
图2为实施例1中二值化处理前的二维码原始图像;
图3为实施例1中二值化处理后的二维码原始图像;
图4为实施例2中二值化处理前的二维码原始图像;
图5为实施例2中二值化处理后的二维码原始图像。
具体实施方式
实施例1
图1为本实施例中超低对比度二维码的解码方法的流程图,超低对比度二维码的解码方法的包括以下步骤:
1)建立二维码原始图像的积分图像,利用积分图像对二维码原始图像进行自适应二值化处理;
2)对二值化处理后的二维码原始图像进行中值滤波去噪;
3)对去噪后的二维码原始图像进行定位;
4)对提取的二进制系列检错纠错、译码。
步骤1)中的积分图像的任意一点(x,y)表示从原始图像的左上角到这个点所构成的矩形区域内的所有的点的灰度之和,即
其中,表示积分图像,i(x’,y’)表示原图像。可用下面两个公式迭代计算得到:
其中,s(x,y)表示一列的积分,且s(x,-1)=0,ii(-1,y)=0。求积分图像,仅需遍历一次原图像。利用积分图像可快速得出原始图像窗口内所有像素点的灰度值大小,仅需找出相应的四个点,进行简单的差和处理即可。
步骤1)中,利用积分图像对二维码原始图像进行自适应二值化处理的具体步骤为:
A、设图像在像素点(x,y)处的灰度值为f(x,y),在二维码原始图像中建立以像素点(x,y)为中心的(2s+1)×(2s+1)窗口,利用积分图像计算窗口内的像素点的灰度值之和,其中s为整数;
B、根据步骤A中得出的窗口内的像素点的灰度和值,计算其与 的比值,若两者的比值大于设定的阈值百分比参数,则该点设为1,判为目标像素类,否则为0,判为背景像素类,完成此点的二值化;
C、根据步骤A和B,对图像中的各个像素点逐点进行二值化。
其中,s和阈值百分比参数的具体数值根据实际应用确定。在实际应用中,根据设备的特性,比如设备拍摄的图片尺寸,拍多张图片进行分析实验,然后确定一个最佳参数。在确定最佳参数时,通常先设定一个参数,然后根据参数的处理效果对参数进行调整,最终确定一个处理效果最优的最佳参数。
步骤2)中,中值滤波处理的方法为:将滑动窗口内的各个像素点的像素值相加,得到像素值之和,然后将其与滑动窗口内的像素点数的1/2进行比较,若像素值之和大于像素点数的1/2,则结果为1,此点判为目标像素类,否则结果为0,此点判为背景像素类。例如,对于33的平滑窗口,若其内各个像素点的像素值相加之和为4,其小于1/2与9的乘积,则输出结果为0;若其内各个像素点的像素值相加之和为5,其大于1/2与9的乘积,则输出结果为1。
利用中值滤波处理像素点(x+1,y)的窗口区域时,将像素点(x,y)的窗口区域中的各个像素点的像素值之和减去其第一列像素点的像素值之和,再加上像素点(x+1,y)窗口区域的最后一列像素点的像素值之和,即可得出像素点(x+1,y)窗口区域的各个像素点的像素值之和。使用这种算法,可大大节省计算时间,如对于33的平滑窗口,可节省1/3的时间。
图2利用新大陆HR200获取的二值化处理前的二维码原始图像,图3为二值化处理后的二维码原始图像,其中,s设为(width/16)/2,阈值百分比参数设为96%,width是指二维码原始图像的宽度。
实施例2
本实施例中超低对比度二维码的解码方法与实施例1的区别是:本实施例中对步骤1)中的二维码原始图像的积分图像的实现方式进行了优化,这种实现方法可大大节省设备的内存资源,提高设备的运行效率。
二维码原始图像的积分图像的建立通过如下步骤实现:
i、新建两个数组,数组宽度同二维码原始图像的宽度相同;
ii、在处理像素点(x,y)时,在步骤i的两个数组中,分别记录积分图像的第y-s-1行和第y+s行,其中,s为整数;
iii、使用如下公式计算像素点(x,y)窗口区域(2s+1)×(2s+1)内的像素之和,公式为:
其中,x1=x-s; x2=x+s; y1=y-s; y2=y+s,I(x2,y2)是积分图像第y+s行中(x2,y2)对应的值;I(x1-1,y2)是积分图像第y+s行中(x1-1,y2)对应的值;I(x2,y1-1)是积分图像第y-s-1行中(x2,y1-1)对应的值;I(x1-1,y1-1)是积分图像第y-s-1行中(x1-1,y1-1)对应的值。
Ⅳ、处理y+1行时,需要重新更替步骤ii中的两个数组,分别在其中记录积分图像的第y-s行和y+s+1行,然后根据步骤iii进行处理,如此往复。
图4为利用新大陆HR200获取的二值化处理前的二维码原始图像,图5为二值化处理后的二维码原始图像,其中,s设为(width/32)/2,阈值百分比参数设为96%,width是指二维码原始图像的宽度。
本发明还提供了一种超低对比度二维码的解码系统,包括:
自适应二值化处理模块,用于建立二维码原始图像的积分图像,利用积分图像对二维码原始图像进行自适应二值化处理;
中值滤波处理模块,用于对二值化处理后的二维码原始图像进行中值滤波去噪;
定位模块,用于对去噪后的二维码原始图像进行定位;
检错纠错译码模块,用于对提取的二进制系列检错纠错译码。
具体应用时,可将实施例1和实施例2的思路集成到具体的二维码解码算法中,例如Data Matrix、QR等,然后利用手机摄像头采集图片,将图片扔进解码器进行识别,也可将解码器烧入pda、扫描枪中。
以上所述实施例仅表达了本发明的几种实施方式,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。