Vericode图像定位技术研究

2021-09-22 06:13康三顺
电子技术与软件工程 2021年15期
关键词:角点二维码均值

康三顺

(北京大学 北京市 100090)

1 引言

共享单车、无人超市、智慧医疗等各式各样的科技产品应用出现在了人们的视野中,现代社会的各个方面已经被物联网所覆盖,典型的应用包括智能家居、智能安防监控、智能楼宇、智能变电站、智能冷链物流、智慧旅游等,物联网的各个应用中,经常少不了条码技术的应用,条码技术包括一维条形码技术和二维条形码技术,二维码克服了一维码表示数据少的缺点,近些年,二维码技术的发展非常迅速,目前为止,世界上已经有数十种以上的种类,针对各个种类的二维码,各个类似又相异的技术不断向前发展着。

不同于其他可免费使用用的二维码,美国Veritec公司拥有该码的专利,因此要使用该码的话需要向该公司购买授权。其在使用成本上的因素成为了其成为小众二维码的部分原因,即使如此,Vericode却还是常见于LCD行业。

目前针对Vericode码的研究资料还比较少,不过由于二维码之间或多或少的共通性,用于其他码的研究也可以借鉴来用于Vericode的研究,虽然这些方法也可用于Vericode的定位分割等方面,不过Vericode比较规则的正方形边界对于其分割定位的成功是其相对于其他二维码来说最大的优势,所以本文提出了一套特有的适用于Vericode的分割方法。整体流程分为:

(1)灰度化;

(2)图像去噪;

(3)形态学处理;

(4)轮廓检测;

(5)非码区轮廓删除;

(6)Vericode码候选区确认。

2 定位过程

2.1 灰度化

现实环境中我们经常获取到的图像都是彩色图,先将彩色图灰度化。在灰度图中,RGB三通道是相等的,这个统一值即为灰度值,

2.2 图像去噪

图像质量较好的情况下可以省略这一步,图像去噪的主要方式是图像的平滑,平滑方式常见以下方式:

2.2.1 高斯滤波

高斯滤波用来消除高斯噪声。

一维零均值高斯函数用公式表示为:

二维零均值高斯函数用公式表示为:

二维高斯分布用矩阵表示为(以3*3的掩膜为例):

1/16 2/16 1/16 2/16 4/16 2/16 1/16 2/16 1/16

2.2.2 均值滤波

均值滤波是一种典型的线性滤波算法,是一种低通滤波器,高频信号会被滤除掉,这样子均值滤波就可消除图像中的尖锐噪声。用公式表示为:

其中,f(i,j)表示计算得到的均值;g(i,j)表示矩阵中的原像素值;i表示行;j表示列;k表示矩阵中的数值;n表示像素点的总共个数。

均值滤波的3*3卷积算子一般为:

1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9

2.2.3 中值滤波

中值滤波是以领域内像素点的中间值代替原来的像素值。中值滤波使用矩阵里的数据进行大小排序,然后取中间值,公式如下:

其中,xi表示矩阵里面的数值;Med表示取数据的中值。

2.2.4 多图像均值

多图像均值是通过在相同条件下采集同一目标的多张图像,然后对多张图像的对应点像素求平均值,来确定图像在该点的灰度值,公式表示为:

其中,n表示总共采集的图像数目;k表示其中一个图像;x表示行坐标;y表示列坐标;g(x,y)表示进行多张图像平均之后的图像。

2.3 形态学处理

当二维码是dark_on_light时,用开运算,当二维码是light_on_dark时,用闭运算。

开运算与闭运算依据腐蚀和膨胀演变而来。

图像膨胀会扩大一幅图像的组成部分,而图像腐蚀会缩小一幅图像的组成部分。

开运算:先腐蚀后膨胀,能够消除图像区域外的小白点(噪声)。闭运算:先膨胀后腐蚀,能够消除图像区域内的小黑点(噪声)。

开闭运算可以在保持物体原有大小基本不变的情况下达到算法运算目的,开闭运算的主要目的是:

(1)断开不必要的连接;

(2)连接希望连接的地方;

(3)去除干扰点。

2.4 轮廓查找

用合适的二值化方法处理后再进行轮廓查找。

图像二值化( Image Binarization)就是将图像上每个点的像素值最终用两个极值(0和255)表示,也就是图像中的每个点是非黑即白的。在数字图像处理中,二值图像占有非常重要的地位,图像的二值化不光使图像中数据量大为减少,而且从视觉效果及运算上突出了目标轮廓信息。

图像的二值化处理就是按照一定的运算遵从一定的规则将符合一定条件的像素点设置为0(或255)并将其余的点设置为255(或0)的过程,也就是将整个图像呈现出明显的黑白效果。最简单也最直观的二值化方法是通过某个灰度值做为阈值,将图像中所有大于该阈值的像素值全更新为0(或255),将其余像素值更新为255(或0),按照这种方法实现的二值化可称为固定阈值二值化。这种二值化方法在实际应用中会面临很多问题,有着更多更好的方法做为替代,比如双峰法、P参数法、迭代法和OTSU法等。根据Vericode的图像特性及分割流程,选取ostu做为二值化的方法,Ostu是通过统计图像的直方图来计算阈值的,Vericode本身是由黑白模块组成,用最大类间差的方式得到的阈值更好适合其设计特性。

2.5 非码区轮廓删除

(1)判断所得到的区域边界的极性是否和Vericode码的一致,如果不一致,删除该区域。

(2)对剩下的区域进行角点检测,如果该区域内没有检测到角点,则知该区域不是Vericode区域。

角点检测(Corner Detection)是图像处理中对特征点进行检测方法。角点就是不同方向的线的拐点,在角点的实际检测之中,出于性能和效果的综合考虑,往往检测的并不只是严格意义上的“角点”,而是具有局部最大最小灰度值或者梯度特征等的点。从Vericode码区结构和性能考虑,选择FAST角点检测算法作为角点检测算法,其他的常用角点检测方法还有Moravec、Harris、shi_tomas。

2.6 码区确认

将经过轮廓区域删除后剩余的轮廓区域按坐标在原灰度图上进行轮廓截取,并在灰度轮廓图上进行以下操作:

2.6.1 对待处理轮廓区域进行边缘梯度幅值及梯度方向计算

梯度幅值和梯度方向的计算采用Scharr算子进行,Scharr算子是获取图像一阶梯度的常见方法,其对像素的四领域灰度值进行加权计算,在边缘极值处得到检测边缘。

Scharr的内核大小为3,其内核为:

梯度计算:(在两个方向求导,假设被作用图像为I)

水平变化:水平方向上进行卷积运算得到结果为:

垂直变化:垂直方向上进行卷积运算得到结果为:

在图像的每一像素上,结合以上两个结果求出近似梯度:

2.6.2 角度直方图峰值计算

为了消除噪音,只对梯度幅值强度较大的边缘点进行角度直方图统计,对梯度幅值太小的点不做处理。

直方图(Histogram)是一种统计报告图,由一系列高度不等的纵向条纹表示数据分布的情况。用横轴表示数据类型,纵轴表示角度分布情况。

2.6.3 Vericode候选码区确认

对所有满足峰值阈值的角度按峰值递减排序,峰值最大的角度为该分块主方向的可能性大,判断所有峰值主角度是否满足垂直性,如果满足,则认为该分块为Vericode候选码区域。

得到候选码之后,就可以进入之后的解码等过程,完成Vericode码的读取。

3 实验分析

用包含Vericode的图像做为测试图像,对本文所实现的分割定位方法进行实验测试,可知本文所提到的Vericode图像定位技术能比较好地定位到Vericode码区域。

4 总结

本文通过对包含有Vericode码的图像进行深入研究,结合Vericode的码区特征和一些图像处理技术,提出了一套完整的基于图像灰度化、二值化、形态学、区域提取、边缘检测、直方图统计、角点检测的用于定位图像中Vericode码的方法,经过实验验证,本文所提方法能较好地用于Vericode的定位。图像处理、自动识别等技术都在日新月异飞速发展之中,必然会带来相关应用技术的进化。本文是基于规则的方式对Vericode进行定位,随着深度学习等技术的发展,如果在收集数据量比较充足的情况下深度学习用于Vericode的定位也会有不俗的表现。

猜你喜欢
角点二维码均值
二维码
让严肃的二维码呆萌起来
基于边缘的角点分类和描述算法
基于圆环模板的改进Harris角点检测算法
均值不等式失效时的解决方法
均值与方差在生活中的应用
二维码,别想一扫了之
关于均值有界变差函数的重要不等式
对偶均值积分的Marcus-Lopes不等式
基于Harris角点和质量评价的图像篡改检测