通过前两期对扫码设备及扫码引擎的介绍,相信大家对扫码硬件的组成有了较为深入了解。然而完整的扫码识读过程除了需要扫码硬件作为载体,还需要软件算法支撑才能发挥其功能和作用。本期我们以常见的二维码:QR码为例,对扫码识读过程中的软件处理环节进行简要介绍。
本文引用地址:
一、图像预处理和解码是扫码识读的核心
扫码设备工作时,通过图像传感器(摄像头模块)扫描采集图像,并通过光电、模数等电路的转换,将采集的图像信息传送到处理器进行图像处理、解码,最终输出到显示设备。
▲扫码设备的工作原理
在整个扫码识读过程中,图像处理和解码是核心。以系列应用扫码设备为例,主控处理器芯片通过DVP或MIPI接口从图像传感器接收到采集的图像信息后,经过软件算法的图像预处理和解码过程实现图
像识别。
▲7UL系列作为高端扫码设备的主控处理器芯片
二、图像预处理必要性及过程
由于采集图像时的外部环境限制(如光线明暗、图像远近、图像角度、图像平整度不同、图像洁净度、图像完整度、图像扭曲度等,图像传感器分辨率不同,光电转换电路不同等),导致采集到的图像往往并非解码所需的理想图像。要使采集到的图像可被解码模块所识别,需对采集的原始图像进行必要的处理,这部分工作我们称之为图像预处理。解码前的图像预处理过程,是扫码设备软件处理中必不可少的环节。
常见的解码图像预处理流程包括图像灰度化、降噪滤波、二值化、图像定位、图像剪切、图像旋转、几何校正、网格建立等内容,这些过程均通过软件算法来实现,且算法的优劣决定着处理速度的快慢。通常在完成图像网格建立后,便可进行图像的识别与解码。
▲图像预处理流程图
1、灰度化
图像传感器采集到的图像多是彩色的,而在扫码设备的解码应用中,实际只需亮度信息即可。对图像进行灰度化处理,将彩色图像变为灰度图像,不仅可节省存储空间也可提高后期的图像处理速度。
彩色转亮度的计算方式常用 Y = 0.30R+ 0.59G+0.11B来实现,对于使用7UL系列处理器而言,其ISP模块在接收到图像数据后可通过硬件方式直接输出Y图格式,方便后续处理。
▲图像灰度化
2、降噪滤波
在用图像传感器和中间电路获取图像信息的过程中不可避免的会引入噪声,噪声种类很多,如高斯噪声、脉冲噪声,均匀分布噪声等,针对不同噪声需做不同的去噪处理,常涉及空域滤波、频域滤波等。空载滤波常用中值滤波、频域滤波常用高斯滤波,其中中值滤波的算法复杂度低,而且具有良好的去噪和边缘保持效果。
3、二值化
图像进行二值化时,充分考虑了图像中可能存在光照不均的情况,如采用大津算法完成图像分割中阈值选取,达到不受图像亮度和对比度影响的效果,解决光照不均对图像的影响。
▲二值化前后对比
4、定位剪切
通过使用索贝尔竺算法进行边缘检测,对二维条码区域进行初步定位,确定图码坐标位置,并对该区进行剪切,去除大部分无关背景信息,提高后续流程中的处理速度和识别率。
▲像定位剪切
5、图像旋转与几何校正
若采集到的图像存在变形和角度不符合处理预期的情况,在程序中可根据寻像定位点之间距离和角度,通过计算获得图像位置,之后对图像进行必要的角度旋转,再通过检测判断畸变情况,选择适当算法进行几何校正即可得到规整的符合预处理的图样。
▲位置探测图形的结构
上图所示为位置探测图形结构,通过QR码的右上、左上、左下三个角的位置,可以计算出该QR码的位置坐标。
▲图像翻转校正
6、建立网格
在获取规整图像区域后,参考寻像图中的宽度信息可对图像进行网格划分。网格建立后,便可对图形中包含的位信息进行获取,为后续根据编码协议提取有效信息和解码做好准备。
▲对图像进行网格化
三、图像解码过程
扫码得到的图像经过预处理的网格化后,便可对图像中的内容进行位信息的提取,我们仍以QR码为例进行说明。
▲QR码符号的结构
上图所示为QR符号的图形结构(摘自国标GBT-18284 20000)。从图中可以看出QR码信息所包含的内容块,通过对不同块的解析即可获取各部分的详细信息。
下图所示为QR码的基本译码步骤:
▲QR码译码步骤
以上所述的图像预处理与译码过程是扫码设备实现识读的共有流程,有较强的代表性。不同的设备厂商由于其技术水平不同,特别是在预处理环节,优秀的处理算法在同样硬件和外部环境条件下,其扫码解码过程所用时间可能仅为普通算法的几十分之一,可见软件处理算法对解码速度具有明显的影响。
文中主要以QR码识读过程为例进行介绍,其它码制的处理过程与其基本一致,并有相应的标准文件可进行参考。
四、开源解码软件
为方便业余爱好者学习解码方面软件,目前网上也有不少相关的开源算法,这里给大家推荐的一款是zbar开源解码算法。zbar算法是现在网上针对条形码,二维码检测的开源算法,可识别大部分种类的一维码(条形码)和二维码,比如I25,CODE39,CODE128,QR等,可从http://zbar.sourceforge.net/获取相关源码包,并可方便的移植到嵌入系统设备上。
通过本期和前两期的介绍,相信大家对系列在高端扫码设备中的应用有了较为全面的了解,后续我们将结合更多的应用场景与大家进行交流,我们下期见!
本期作者:陈绍景、梁梦雷、谢耀华、刘悦臻、谢剑杰