历史上的今天
返回首页

历史上的今天

今天是:2024年09月04日(星期三)

正在发生

2019年09月04日 | 二维码识别技术深入解析

2019-09-04 来源:ZLG立功科技·致远电子

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


基于二维码识别相关的应用迅速进入人们的生活,扫二维码已成为连接线上线下成本最低的网络接入口之一。二维码识别技术原理是什么,又因何种优势能够改变我们的生活方式?本文将以二维码使用最广的QR码(Quick Response Code)为例,从QR码的优势、识别过程、算法、和应用方向等方面阐述二维码得以广泛使用的原因。


目前,二维码在中国的最大应用领域就是移动支付。不少人已经习惯了出门不带现金,手机扫码走天下。根据第40次《中国互联网络发展状况统计报告》显示,截至2017年6月,我国手机网民规模达7.24亿,移动支付用户规模达5.02亿,4.63亿网民在线下消费时使用手机进行支付,而这其中很多都是通过扫二维码实现的。


image.png?imageView2/2/w/550 

资料来源:CNNIC 前瞻产业研究院整理


接下来将对二维码识别技术及应用进行介绍,为了便于整体理解,首先阐述QR码的特点及优势,接着介绍QR码识别过程,并重点介绍图像预处理算法。然后讲述当前二维码识别技术的应用领域,最后演示ZLG QR码识别demo。


1. QR码的特点及优势

QR码是由日本Denso公司于1994年9月研制的一种矩阵式二维条码,它除了具有二维条码所具有的信息容量大、可靠性高、可表示汉字及图像多种信息、保密防伪性强等特点外,还具有能高速全方位识读、能有效表达汉字等主要特点。


2. QR码的识别过程

QR符合由编码区域和包括寻像图形、分隔符、定位图形和校正图形在内的功能图形组成。QR码结构图如下所示。


image.png?imageView2/2/w/550 

QR码结构图


QR码识别常见的方法过程主要有图像预处理,定位位置探测图形、定位校正图形、透视变换、译码和纠错。


图像预处理:灰度化、去噪、畸变矫正以及二值化等;


定位位置探测图形:通过位置探测图形1:1:3:1:1的特征查找,允许容差0.5,水平和垂直方向扫描该特征,多次穿透即为候选位置探测图像,通过一些筛选策略剔除假位置探测图形确定真图形,再根据3个该图形之间的距离和旋转角度,确定它们的方位,分别为左上角,右上角和左下角。


image.png?imageView2/2/w/550 

位置探测图形特征


定位校正图形:根据3个位置探测图像估计右下角校正符,类似定位位置探测图形定位该图形。


透视变换:根据3个定位中心点和校正符中心点,和理想4个点的坐标,获取单应性矩阵,再通过透视变换获取标准正方形图像。透视变换公式如下:


image.png?imageView2/2/w/550

 

透视变换效果图如下:


image.png?imageView2/2/w/550

 

译码和纠错:译码是对二维码版本信息、格式信息、数据和纠错码进行解码和对比。将数据区转为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码是用某种特定的几何图形,按一定规律来记录数据符号信息。主要用途如下表


image.png?imageView2/2/w/550 

image.png?imageView2/2/w/550

 

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码识别功能如下视频所示:


image.png?imageView2/2/w/550 

A8_快速扫描、A8_碎屏识别demo.mp4


    视频中主要展示了微信支付操作,可以看到剧烈晃动手机的情况下依旧能够识别。对于单次支付操作,观察串口打印的信息可以看出,基本实现了无需等待的“闪付”体验。并且,从视频中可以看到,针对于手机碎屏问题,ZLG的QR码算法可以较好的支持。


此外,考虑到个性化QR码使用场景,我司QR码识别算法同样支持,以微信二维码名片样式为例,效果如以下视频所示:


image.png?imageView2/2/w/550

 

A8_多样式demo.mp4

基于cortex-m7系列M1052-M16F128AWI -T平台的二维码识别demo配有4.3寸液晶显示屏, 以类似于手机扫码的体验,快速识别二维码,显示识别的结果。效果如下所示:


image.png?imageView2/2/w/550 

M7_快速扫描demo.mp4

ZLG QR码算法调用方式简单,仅需要算法初始化、解码和内存释放三个步骤,QR码算法头文件“aw_qrcode.h”接口如下


image.png?imageView2/2/w/550

 

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


 image.png?imageView2/2/w/550

 

 

最后附上M3354-512LI-F1GT产品图片:

image.png?imageView2/2/w/550 

M1052-M16F128AWI-T产品图片:

image.png?imageView2/2/w/550 

6. 关于算法库获取

关于算法库可以联系ZLG立功科技获取。

 


推荐阅读

史海拾趣

问答坊 | AI 解惑

Protel 2007

Altium Designer6.7 PROTEL2007版.电脑要装有电驴程序!!! 先顶一下再下载!!! http://58.61.39.221/down?cid=345146603&t=14&fmt=-…

查看全部问答>

便携式应用中的有源电源管理

移动电话、智能电话、PDA以及媒体播放器等当今便携式消费类电子产品均拥有非常丰富的特性与功能。这些产品高、中、低端一应俱全,其性能水平和体积大小也各不相同。总体说来,便携式应用的尺寸越来越小、功能越来越丰富、性能也越来越高,但功耗却 ...…

查看全部问答>

XDS510 DSP仿真器

XDS510   DSP仿真器 主要特点: 1、体积更小 2、接口更加安全 3、性能更加卓越 4、速度较其他仿真器快一倍 · 采用高速版本USB2.0标准接口,即插即用,传输速度可达480MBS,向下兼容    USB1.1主机; · 标准Jtag仿真 ...…

查看全部问答>

quartus2视频教程 链接地址 已经上传

我留了个链接网址,有需要的可以去看看! 这是我上传视频的链接地址,需要的可以去看看!! \"http://player.youku.com/player.php/sid/XMTMxMzk1ODY0/v.swf\" http://player.youku.com/player.php/sid/XMTMxMzk1OTA0/v.swf\" …

查看全部问答>

PID算法和控制知识简介

PID控制的概念介绍 概述  当今的自动控制技术都是基于反馈的概念。反馈理论的要素包括三个部分:测量、比较和执行。测量关心的变量,与期望值相比较,用这个误差纠正调节控制系统的响应。   这个理论和应用自动控制的关键是,做出 ...…

查看全部问答>

CE6 中如何获得其他程序使用的内存空间

要做一个CE6的任务管理器 遇到这么一个问题。。 可以使用流驱动。。 在问一个:怎么获得程序的CPU占用率  是不是和CE5 一样把thread伪装成process??(附加题)…

查看全部问答>

Uboot启动问题

目前我的板子是NOR FLASH和NAND FLASH并存,NOR FLASH里烧的是UBOOT,用来更新NAND里的stepldr和Eboot,现在我的问题是如果我板子上的网卡(DM9000)不焊接的话不能从NOR启动,我感觉是UBOOT初始化网卡失败就死在那了,请问各位我如何编译我的UBOOT ...…

查看全部问答>

寻高手 帮我做下题目 今天晚上要考试 !(夜大混文凭的 别骂我,我知道错了)

微处理器原理试题                                      一:选择题(70分) 1.冯?诺依曼机的基本特征是  &n ...…

查看全部问答>

STC片子利用PCA模块做16bit timer产生方波输出问题

/*STC利用PCA产生timer产生方波输出*/ #include sfr CCON=0xD8; sfr CMOD=0xD9; sfr CL=0xE9; sfr CH=0xF9; sfr CCAP0L=0xEA;        //COMPARE sfr CCAP0H=0xFA;        //COMPARE sfr CCAPM0=0xDA;&n ...…

查看全部问答>