ZLG 解析 —— 二维码识别技术

时间:2019-09-05 14:07来源:ZLG致远电子

摘要:移动互联网迅速发展,二维码应用已经渗透到生活的各个角落,二维码的魅力在哪?本文将从二维码识别技术的原理和识别过程出发,结合ZLG二维码识别算法,解析二维码被广泛应用的原因。

基于二维码识别相关的应用迅速进入人们的生活,扫二维码已成为连接线上线下成本最低的网络接入口之一。二维码识别技术原理是什么,又因何种优势能够改变我们的生活方式?本文将以二维码使用最广的QR码(Quick Response Code)为例,从QR码的优势、识别过程、算法、和应用方向等方面阐述二维码得以广泛使用的原因。
 
目前,二维码在中国的最大应用领域就是移动支付。不少人已经习惯了出门不带现金,手机扫码走天下。根据第40次《中国互联网络发展状况统计报告》显示,截至2017年6月,我国手机网民规模达7.24亿,移动支付用户规模达5.02亿,4.63亿网民在线下消费时使用手机进行支付,而这其中很多都是通过扫二维码实现的。
 
资料来源:CNNIC 前瞻产业研究院整理
 
接下来将对二维码识别技术及应用进行介绍,为了便于整体理解,首先阐述QR码的特点及优势,接着介绍QR码识别过程,并重点介绍图像预处理算法。然后讲述当前二维码识别技术的应用领域,最后演示ZLG QR码识别demo。
 
1.QR码的特点及优势
QR码是由日本Denso公司于1994年9月研制的一种矩阵式二维条码,它除了具有二维条码所具有的信息容量大、可靠性高、可表示汉字及图像多种信息、保密防伪性强等特点外,还具有能高速全方位识读、能有效表达汉字等主要特点。
 
2.QR码的识别过程
QR符合由编码区域和包括寻像图形、分隔符、定位图形和校正图形在内的功能图形组成。QR码结构图如下所示。
 
QR码结构图
 
QR码识别常见的方法过程主要有图像预处理,定位位置探测图形、定位校正图形、透视变换、译码和纠错。
 
图像预处理:灰度化、去噪、畸变矫正以及二值化等;

定位位置探测图形:通过位置探测图形1:1:3:1:1的特征查找,允许容差0.5,水平和垂直方向扫描该特征,多次穿透即为候选位置探测图像,通过一些筛选策略剔除假位置探测图形确定真图形,再根据3个该图形之间的距离和旋转角度,确定它们的方位,分别为左上角,右上角和左下角。
 
位置探测图形特征
 
定位校正图形:根据3个位置探测图像估计右下角校正符,类似定位位置探测图形定位该图形。
透视变换:根据3个定位中心点和校正符中心点,和理想4个点的坐标,获取单应性矩阵,再通过透视变换获取标准正方形图像。透视变换公式如下:
 
 
透视变换效果图如下:
 
 
译码和纠错:译码是对二维码版本信息、格式信息、数据和纠错码进行解码和对比。将数据区转为0和1的比特流,并用 Reed-Solomon 纠错算法对比特流校验和纠错。判断QR码编码格式后译码,这样我们便得到了二维码包含的数据。
 
3.QR码图像预处理
常规的QR码识别过程容易受到环境影响而难以识别,往往需要一些预处理改善图像质量和识别环境。
 
图像灰度化:摄像头输出的数据格式很多,黑白摄像头直接输出灰度图,而彩色摄像头输出格式有YUV422,YUV410,RGB565, RGB888等,二维码识别只需要单通道的灰度图,
因此需要转化,以RGB888为例,转换公式如下:
 

 
去噪:噪声的影响会使1:1:3:1:1的特征定位不准,以及数据阶段译码错误,常见的噪声主要是高斯噪声和椒盐噪声,可以采用高斯滤波,中值滤波或均值滤波来改善图像质量。
 
畸变矫正:广角摄像头或鱼眼摄像头带有较大的畸变,越靠近视角边缘图像形变越大,对于畸变较大的图像而言,不仅1:1:3:1:1的特征的比例关系失调,数据区的数据没有标准的模块大小,会造成无法准确译码。对于这种情况,需通过畸变模型矫正,矫正成无畸变的图像。
 
二值化:正常情况下背景和QR码目标区分明显,光照均匀,只需要简单使用全局二值化方法即可,常见的方法有固定阈值法、Otsu法,直方图双峰阈值化方法等。对于光照不均匀的情况,则不适用,会造成全局亮度失衡而无法正常识码,因此需要自适应局部阈值化方法处理,可以采用分块求阈值再均衡化的方法实现。
 
4.QR码应用领域
QR码是用某种特定的几何图形,按一定规律来记录数据符号信息。主要用途如下表
 

 
5.QR码识别效果展示
ZLG研发的QR码识别算法目前支持的平台有:基于AWorks系统的cortex-m7系列M1052-M16F128AWI -T平台、基于Linux的cortex-a7系列M6Y2C-256F256LI-T平台和基于Linux的cortex-a8系列M3354-512LI-F1GT平台。
 
基于cortex-a8系列M3354-512LI-F1GT平台的QR码识别功能如下视频所示:
 
A8_快速扫描、A8_碎屏识别demo.mp4

视频中主要展示了微信支付操作,可以看到剧烈晃动手机的情况下依旧能够识别。对于单次支付操作,观察串口打印的信息可以看出,基本实现了无需等待的“闪付”体验。并且,从视频中可以看到,针对于手机碎屏问题,ZLG的QR码算法可以较好的支持。
 
此外,考虑到个性化QR码使用场景,我司QR码识别算法同样支持,以微信二维码名片样式为例,效果如以下视频所示:
 
A8_多样式demo.mp4
 
基于cortex-m7系列M1052-M16F128AWI -T平台的二维码识别demo配有4.3寸液晶显示屏, 以类似于手机扫码的体验,快速识别二维码,显示识别的结果。效果如下所示:
 
M7_快速扫描demo.mp4
 
ZLG QR码算法调用方式简单,仅需要算法初始化、解码和内存释放三个步骤,QR码算法头文件“aw_qrcode.h”接口如下
 

 
调用我司的QR码算法demo程序“QRScanner.c”如下所示
 


 
最后附上M3354-512LI-F1GT产品图片:
 
 
M1052-M16F128AWI-T产品图片:
 
 
6.关于算法库获取
关于算法库可以联系ZLG立功科技获取。
免责声明:本文若是转载新闻稿,转载此文目的是在于传递更多的信息,版权归原作者所有。文章所用文字、图片、视频等素材如涉及作品版权问题,请联系本网编辑予以删除。
我要投稿
近期活动
帖子推荐更多

Copyright 2008-2024 21dianyuan.com All Rights Reserved 备案许可证号为:津ICP备10002348号-2