0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RZ/A2M DRP实现二维码编码格式的快速检测

星星科技指导员 来源:瑞萨电子 作者:h1654155168.4858 2022-04-29 15:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在上一篇文章中我们介绍了如何使用RZ/A2M和它独有的DRP技术实现工业自动化中的目标物体检测与追踪。现在让我们看一下RZ/A2M的DRP如何实现在8ms时间内检测5中不同编码格式的二维码。

二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上非常流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。除了这种常见的QR Code之外,还有一些其它编码格式的二维码,例如Micro QR Code, DataMatrix, AZTec和汉信码等等,因此要求扫码枪能够识别多种不同编码的二维码。 常规的操作是循环调用不同解码器,逐一用不同的解码器进行检测和解码,但导致的问题是解码时间不稳定性与解码时间偏长,如果能够在解码之前快速识别出二维码的编码格式,然后有针对性的调用对应的解码器,则会大大提高解码效率。

瑞萨的RZ/A2M微处理器可以利用其独特的动态可配置处理器(DRP)完美解决这一问题,实现了1280x720(1百万)摄像头输入时,在8ms时间内完成QR ,Micro QR, DataMatrix, AZTec 和汉信码5种编码格式的快速识别,下面让我们看一下DRP是如何实现的。

以下是示例中用到的5种二维码的图例,我们将利用DRP的图像处理加速功能识别每种编码格式的特征

pYYBAGJrkQCAAWawAACMsGJFYzg202.png

我们将通过9个步骤的数据处理,逐步从MIPI接口输入的图像数据中提取出我们希望得到的特征标识。

在这9个数据处理环节中,大部分由DRP硬件加速模块处理(蓝色),少量过程由CPU进行处理(绿色),在此期间我们可以看到硬件DRP处理和软件CPU处理之间的灵活搭配与无缝对接。

poYBAGJrkQCAS5DwAACet7EeZR0508.png

步骤1

为了加快图像的处理速度,我们会先载入一个Bayer2GrayThinning的DRP加速库将图像的分辨率降采样为原始大小的1/4,同时完成图像格式从Bayer到灰度图的转换并统计每帧图像的亮度值,我们会将这个亮度的统计结果反馈给CMOS传感器用于调整自动曝光参数。

pYYBAGJrkQCAT6GmAAAmZMfpQ0Y009.png

由于Bayer2GrayThinning库只占用1个Tile的DRP硬件资源,在此步骤中利用DRP的多Tile并行处理特性将每一帧1280x768的图像分成6个1280x128的区域,由6个DRP处理单元进行并行化处理,这样处理速度可增加为原来的6倍,而且每个处理单元内部的像素级处理也是并行化的。

poYBAGJrkQCAR3ajAABZOyFuqWs995.png

利用DRP的这两个并行化特性,我们可以在0.6ms的时间内完成1帧1280x768分辨率图像的处理,包含0.2ms的DRP库载入时间和0.4ms的图像数据处理时间。经过步骤1的处理我们得到一个320x192的灰度图。

步骤2

得到灰度图后我们加载一个binarization_adaptive的DRP库,将图像转换为只有0x00和0xFF两种颜色的黑白图像。这个DRP库可以根据每个8x8像素区域的灰度值平均值动态计算二值化的阈值,这样可以有效解决不同亮度的场景中二值化阈值该如何选择的问题。

pYYBAGJrkQCAIVMMAAB2RzTH6kE553.png

我们可以设置二值化转换的参数,控制输出图像以反转方式输出,即二维码图像中黑色部分输出为白色,这样方便下一步对白色部分提取轮廓信息。步骤2的总处理时间是0.9ms左右,包含0.6ms的DRP库载入时间和0.3ms的图像数据处理时间。

poYBAGJrkQGAZ2VlAAGJx8uX8Xs183.png

步骤3

得到二值化图像后我们再载入一个Dialte的DRP库实现膨胀功能,其基本实现原理如下;

pYYBAGJrkQGAE58FAAAXrOy-ZWQ537.png

用3x3区块以步长为1像素扫描输入图像

扫描窗口中心点的新数据输出值为3x3范围内的最大值

实现效果:将白色扩展,吞并被包围的黑色区域

 可配置迭代次数,次数越多,白色扩展范围越大

经过膨胀处理后的图像中,包含二维码数据的区域基本被联通,形成一个包含整个二维码的大区域。总处理时间是0.4ms左右,包含0.2ms的DRP库载入时间和0.2ms的图像数据处理时间。

poYBAGJrkQGAUahpAAGmk0GIGyk594.png

步骤4

此时我们对膨胀之后的图像调用openCV的FindContour方法,它将得到这一帧图像中所有高亮部分的外轮廓以及每个轮廓的最小外接矩形。我们会逐一判断轮廓的宽高比,面积,位置等信息,筛选出最有可能包含二维码的轮廓。如果条件不匹配则采集下一帧图像。此步骤由CPU实现,时间约为4ms。

pYYBAGJrkQGAFZuQAACApnwCbyQ448.png

图中带有旋转角度的矩形为二维码区域的轮廓,后面我们会将这个旋转的矩形调整为倾角为0度的图形,用于更精细的特征检测。而最小外接矩形的四个顶点坐标将被换算成原始输入图像的坐标,用于从原始图像中裁剪包含二维码的区域。

poYBAGJrkQKAc0vaAAFVasfIbyk758.png

步骤5

为了保证二维码标识特征提取的精度,我们会从MIPI输入buffer中裁剪Bayer格式的原始二维码图像。此时我们载入一个bayer2gray_cropping的DRP库从MIPI buffer进行图像裁剪,裁剪的位置就是步骤4中最小外接矩形4个顶点在MIPI buffer中对应的坐标。

这个bayer2gray_cropping只占用1个Tile的硬件资源,它具备6个tile并行运行的能力,因此我们会用6个Tile的DRP并行处理。

此步骤的执行时间约为0.6ms,DRP的载入时间为0.25ms,执行时间约为0.35ms

pYYBAGJrkQKAd70NAAFFusP9QV4977.png

步骤6

下图左侧为裁剪出的带有旋转角度的灰度图,其中4个绿色顶点可以从步骤4的轮廓信息得到。在此步骤中我们由CPU实现一个简易的Keystone和缩放功能,将4个绿色顶点中的有效图像映射到右侧的buffer中,这里的梯形校正只是简单抽取或重复原有像素点,不生成新的点,因此属于有损但快速的算法。更精确的算法可用使用DRP的仿射变换(affine)功能,但会消耗更多的时间。

poYBAGJrkQKABepkAAM3xKUJ7hI342.png

步骤7

得到一个无旋转的图像后,我们重复步骤2中的binarization_adaptive处理,得到一个无旋转角度的二值化图像。这一步耗时约0.5ms

pYYBAGJrkQKAGpgBAADQHpIV1yA018.png

步骤8

此时载入FindContour DRP库,检测二值化后的二维码图像中所有高丽部分的轮廓,检测结果为图像中蓝色的矩形区域。

poYBAGJrkQOAHax9AAHNRflCzsI605.png

FindContour DRP库会输出每个轮廓的位置,大小信息。所有的轮廓信息将被保存起来用于下一步的二维码标识检测。此过程总耗时约1.4ms,包含0.4ms的DRP库载入时间及1.0ms的处理时间。

pYYBAGJrkQOAO2vIAABwRPt3lCo195.png

步骤9

此时我们已经得到二维码图像中所有轮廓的坐标信息,我们可以很容易的通过轮廓相对于二维码的对应位置,是否是正方形轮廓,是否包含对称的子轮廓,是否包含偏心的子轮廓等信息来判断出QR code, Micro QR code, 汉信码,Aztec code。

对于DataMatrix的检测,我们可以利用DRP运行时不消耗CPU负载的特性,在步骤8的DRP处理过程中(1ms的DRP执行期间)同时由CPU计算图像每行和每列的求和统计,这样可以让DRP和CPU的处理也并行起来。

让我们回顾以下以上9个步骤的处理:

poYBAGJrkQOAPephAAJBIBlxJio895.png

我们可以在8ms的时间内完成5种不同编码的二维码类型的检测主要得益于:

加载具有并行化处理能力的DRP库

同时加载多个DRP库对一帧图像的多个区域同时进行处理

DRP处理期间,并行运行CPU运算

硬件DRP加速处理与openCV软件处理无缝对接

此时如果将裁剪出来的二维码图像交给后续对应的解码器进行解码,将极大的缩短多类型二维码解码的处理时间。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20377

    浏览量

    255600
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11370

    浏览量

    226391
  • 微处理器
    +关注

    关注

    11

    文章

    2440

    浏览量

    86272
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    二维码扫描识别模组可集成到闸机,助力二维码/NFC识别

    随着移动支付的普及和应用场景的不断扩大,二维码/NFC识别技术在各种门禁系统和闸机中的应用也日益广泛。为了提供更便捷的通行体验和更高效的门禁管理,闸机制造商通常会选择集成二维码扫描识别模组,以便实现
    的头像 发表于 05-20 14:45 66次阅读
    <b class='flag-5'>二维码</b>扫描识别模组可集成到闸机,助力<b class='flag-5'>二维码</b>/NFC识别

    瑞芯微(EASY EAI)RV1126B 二维码生成

    1.二维码简介二维码又称二维条码,常见的二维码为QRCode,QR全称QuickResponse,是一个近几年来移动设备上超流行的一种编码
    的头像 发表于 04-08 10:48 223次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>二维码</b>生成

    有哪些常见的二维码模组类型?

    二维码模组是集成了扫描引擎、解码芯片、光学组件的核心模块(也叫二维码模块),可直接嵌入自助终端、工业PDA、智能闸机等设备,实现二维码快速
    的头像 发表于 01-24 00:00 1036次阅读
    有哪些常见的<b class='flag-5'>二维码</b>模组类型?

    二维影像扫描引擎在门禁二维码刷卡梯控行业中的应用

    在当今科技日新月异的时代,二维影像扫描引擎以其卓越的识别性能和广泛的应用领域,成为了门禁系统中不可或缺的重要组成部分,尤其在二维码刷卡梯控行业中展现出了非凡的价值。本文将深入探讨二维影像扫描引擎在
    的头像 发表于 12-17 15:42 576次阅读
    <b class='flag-5'>二维</b>影像扫描引擎在门禁<b class='flag-5'>二维码</b>刷卡梯控行业中的应用

    二维码模块是什么?它和普通条码识别设备有什么不同

    在物联网技术飞速发展的今天,条码与二维码已成为信息传递的重要载体,从超市结账到工业生产溯源,从移动支付到医疗耗材管理,相关识别设备无处不在。其中,二维码模块作为核心识别部件,正凭借其灵活适配性
    的头像 发表于 11-06 15:54 802次阅读
    <b class='flag-5'>二维码</b>扫<b class='flag-5'>码</b>模块是什么?它和普通条码识别设备有什么不同

    门禁二维码扫描模块使用哪个产品合适?

    ,从扫描性能来看,FM25-Std搭载了新大陆自主研发的第六代核心解码技术,能够快速、精准地识读各种纸质和屏幕。无论是清晰的二维码还是有些模糊的条码,它都能在极
    的头像 发表于 09-16 15:30 938次阅读
    门禁<b class='flag-5'>二维码</b>扫描模块使用哪个产品合适?

    哪款二维码模组适合嵌入户外取餐柜,用于扫二维码

    在智能取餐柜普及的当下,二维码模组作为核心交互组件,其性能直接影响用户体验与设备稳定性。针对户外场景的特殊需求,深圳远景达物联网推出的LV4300Pro系列二维码模组,凭借工业级设计与场景化技术优化
    的头像 发表于 09-10 15:00 794次阅读
    哪款<b class='flag-5'>二维码</b>模组适合嵌入户外取餐柜,用于扫<b class='flag-5'>二维码</b>

    【嘉楠堪智K230开发板试用体验】+二维码识别

    通过K230开发板快速实现二维码识别。 实现 import time, os, gc from media.sensor import Sensor from media.displa
    发表于 08-22 20:16

    扫描条码模块、二维码模块,广泛应用于定制的手持设备

    模块为核心,凭借出色的一二维码识别、解码及传输能力,结合安卓系统的实时通讯优势,让条码扫描在更多领域实现了高效落地。扫描条码模块(也称条码识别模块、条码扫描模
    的头像 发表于 08-18 15:18 861次阅读
    扫描条码模块、<b class='flag-5'>二维码</b>模块,广泛应用于定制的手持设备

    二维码扫描读器在工厂流水线的应用

    在制造业自动化升级的浪潮中,二维码扫描读器凭借其信息密度高、抗污损能力强的特性,逐渐成为工厂流水线数据采集的核心设备。它通过精准识别产品表面的二维码实现生产全流程的数字化追踪,为智
    的头像 发表于 08-07 14:48 1100次阅读
    <b class='flag-5'>二维码</b>扫描读<b class='flag-5'>码</b>器在工厂流水线的应用

    二维码条码识读器的主要功能有哪些

    在信息化快速发展的当下,一二维码条码识读器已成为各行各业高效处理信息的重要工具。从超市收银到物流追踪,它凭借快速准确的信息识别能力,大幅提升了工作效率。那么,一
    的头像 发表于 08-01 15:59 1279次阅读
    一<b class='flag-5'>维</b><b class='flag-5'>二维码</b>条码识读器的主要功能有哪些

    GM861条二维码识别模块用户手册

    GM861条二维码识别模块用户手册
    发表于 07-09 14:56 1次下载

    基于STM32的二维码识别源码+二维码解码库lib

    基于STM32的二维码识别源码+二维码解码库lib,推荐下载!
    发表于 05-28 22:04

    基于LockAI视觉识别模块:C++二维码识别

    ZXing和OpenCV支持快速集成到应用中,使用户能轻松扫描并获取二维码信息。 2. C++ API文档 2.1 QRCodeDetector类 2.1.1 头文件 #include <
    发表于 05-26 09:57

    基于LockAI视觉识别模块:C++二维码识别

    二维码识别是视觉模块经常使用到的功能之一。我们将演示如何使用基于瑞芯微RV1106的LockAI视觉识别模块进行二维码识别。
    的头像 发表于 05-26 09:42 1228次阅读
    基于LockAI视觉识别模块:C++<b class='flag-5'>二维码</b>识别