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

    文章

    18184

    浏览量

    221894
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10394

    浏览量

    206426
  • 微处理器
    +关注

    关注

    11

    文章

    2103

    浏览量

    81355
收藏 人收藏

    评论

    相关推荐

    怎么在Framewin里显示二维码

    各位前辈好,刚刚开始使用STemWin。现在一个Framewin里显示二维码,在Framewin初始化里调用二维码函数没有反应。请问需要怎么调用?
    发表于 04-16 08:27

    Labview调用Halcon识别二维码

    *附件:Labview调用Halcon识别二维码.zip Labview调用Halcon识别二维码 可一次识别多个二维码 使用Labview 2020编辑,halcon的版本是 19.11,32位
    发表于 02-21 16:31

    使用Arduino可以连接摄像头做二维码识别吗?

    使用Arduino可以连接摄像头做二维码识别吗
    发表于 11-10 07:56

    可以用单片机生成二维码吗?

    可以用单片机生成二维码吗 有没有具体的实例
    发表于 10-27 08:05

    stm32f429zgt6可以使用内部ram解码二维码吗?

    ov7670拍照然后f429识别二维码,内部ram够用吗
    发表于 09-21 06:43

    stm32f103怎么接入usb二维码器?

    stm32f103怎么接入usb二维码器,需要增加芯片吗
    发表于 09-20 07:48

    OpenHarmony应用实现二维码识别

    本文转载自《OpenHarmony应用实现二维码识别》,作者zhushangyuan_ 概念介绍 二维码的应用场景非常广泛,在购物应用中,消费者可以直接扫描商品
    发表于 08-23 17:00

    RZ/A2M 评估板套件快速入门指南

    RZ/A2M 评估板套件快速入门指南
    发表于 07-05 19:47 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 评估板套件<b class='flag-5'>快速</b>入门指南

    RZ/A2M 软件包(Arm Development Studio)快速入门指南

    RZ/A2M 软件包(Arm Development Studio)快速入门指南
    发表于 07-04 20:13 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 软件包(Arm Development Studio)<b class='flag-5'>快速</b>入门指南

    RZ/A2M 集团 DRP 库用户手册

    RZ/A2M 集团 DRP 库用户手册
    发表于 07-04 18:57 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 集团 <b class='flag-5'>DRP</b> 库用户手册

    RZ/A2M 集团 DRP 驱动程序用户手册

    RZ/A2M 集团 DRP 驱动程序用户手册
    发表于 07-04 18:57 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 集团 <b class='flag-5'>DRP</b> 驱动程序用户手册

    GR-MANGO 快速入门指南的 RZ/A2M Azure RTOS 包

    GR-MANGO 快速入门指南的 RZ/A2M Azure RTOS 包
    发表于 07-03 19:50 0次下载
    GR-MANGO <b class='flag-5'>快速</b>入门指南的 <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> Azure RTOS 包

    RZ/A2MRZ/A2M 软件 Package for GR-MANGO 快速入门指南

    RZ/A2MRZ/A2M 软件 Package for GR-MANGO 快速入门指南
    发表于 07-03 19:33 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 组 <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 软件 Package for GR-MANGO <b class='flag-5'>快速</b>入门指南

    RZ/A2MRZ/A2M 软件 Package 快速入门指南

    RZ/A2MRZ/A2M 软件 Package 快速入门指南
    发表于 07-03 19:33 0次下载
    <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 组 <b class='flag-5'>RZ</b>/<b class='flag-5'>A2M</b> 软件 Package <b class='flag-5'>快速</b>入门指南

    【米尔MYD-JX8MMA7开发板-ARM+FPGA架构试用体验】 十、QT二维码生成器

    是什么版本,不同版本二维码大小不一样,比如版本1,是2121的正方形,版本2,是2525的正方形,最大版本是版本40,是177*177的正方形,显然版本越大,能存的信息就越多。(4)格式信息(黄色圈),
    发表于 05-23 09:29