中国电子技术网

设为首页 网站地图 加入收藏

 
 

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

关键词:二维码识别技术 网络接入口 移动支付

时间:2019-09-05 09:37:27      来源:致远电子

移动互联网迅速发展,二维码应用已经渗透到生活的各个角落,二维码的魅力在哪?本文将从二维码识别技术的原理和识别过程出发,结合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立功科技获取。

  • 分享到:

 

猜你喜欢

  • 主 题:自主移动机器人(AMR)平台方案介绍
  • 时 间:2024.11.19
  • 公 司:安森美

  • 主 题:PIC®和AVR®单片机如何在常见应用中尽展所长
  • 时 间:2024.11.26
  • 公 司:DigiKey & Microchip

  • 主 题:盛思锐新型传感器发布:引领环境监测新纪元
  • 时 间:2024.12.12
  • 公 司:sensirion