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

    文章

    19281

    浏览量

    229791
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10860

    浏览量

    211726
  • 微处理器
    +关注

    关注

    11

    文章

    2262

    浏览量

    82441
收藏 人收藏

    评论

    相关推荐

    RS232接口的二维影像扫描引擎,广泛用在医疗设备上扫一二维码

    其稳定可靠的性能,成为连接医疗设备与二维码之间的桥梁。在医疗设备上,二维影像扫描引擎通过RS232接口与设备主体相连,实现了对一二维码
    的头像 发表于 12-23 16:02 89次阅读
    RS232接口的<b class='flag-5'>二维</b>影像扫描引擎,广泛用在医疗设备上扫一<b class='flag-5'>维</b><b class='flag-5'>二维码</b>

    工业级二维码扫描模组有哪些特点?

    工业级二维码扫描模组是用于各种工业环境中,快速、准确地识别和解码二维码的关键设备。随着工业4.0和物联网的快速发展,工业级二维码扫描模组的应
    的头像 发表于 12-02 15:02 105次阅读
    工业级<b class='flag-5'>二维码</b>扫描模组有哪些特点?

    工业视觉在条码/二维码识别领域的应用

    工业视觉技术在条码和二维码识别领域的应用日益广泛,它通过高精度的图像处理和识别算法,实现了对条码和二维码快速、准确识别。这项技术不仅提高了生产效率,还降低了人工错误的可能性,确保了产
    的头像 发表于 11-18 16:28 255次阅读
    工业视觉在条码/<b class='flag-5'>二维码</b>识别领域的应用

    工业二维码器在电子制造业中的应用

    工业二维码器在电子制造业中的应用主要体现在以下几个方面:▲生产追溯管理工业二维码器通过对电子产品上的二维码进行
    的头像 发表于 11-13 16:19 195次阅读
    工业<b class='flag-5'>二维码</b>读<b class='flag-5'>码</b>器在电子制造业中的应用

    二维码识读设备有哪些类型

    随着二维码应用的日益普及,各类二维码识读设备也应运而生。这些设备不仅极大地方便了我们的日常生活,也为企业提供了更加高效便捷的服务。那么,你知道二维码识读设备都有哪些类型吗?让我们一起来了解一下。据
    的头像 发表于 11-05 16:10 185次阅读
    <b class='flag-5'>二维码</b>识读设备有哪些类型

    二维码扫描头设备嵌入到闸机上,实现扫手机屏幕完成签到签退

    如何嵌入到闸机上,实现扫手机屏幕完成签到签退的过程及其优势。一、二维码扫描头设备的嵌入技术二维码扫描头设备作为一种高效的信息采集工具,其核心技术在于
    的头像 发表于 09-18 15:45 282次阅读
    <b class='flag-5'>二维码</b>扫描头设备嵌入到闸机上,<b class='flag-5'>实现</b>扫手机屏幕<b class='flag-5'>码</b>完成签到签退

    如何为柜式终端设备选配(集成)二维码模块?

    随着二维码技术在各行各业的广泛应用,柜式终端设备如何高效集成二维码模块成为行业关注焦点。针对这一需求,本文将深入探讨选择与集成二维码模块的关键要素,助力企业精准匹配,提升终端设备性能。在柜式终端设备
    的头像 发表于 08-05 15:48 276次阅读
    如何为柜式终端设备选配(集成)<b class='flag-5'>二维码</b>模块?

    Labview生成二维码

     Labview 的一个Demo,生成二维码
    发表于 08-01 17:12 7次下载

    Atomic QRCode2 Base | ATOM系列新宠!一/二维码神器

    NEWAtomicQRCode2BaseAtomicQRCode2Base是一款专为ATOM系列主机精心打造的一/二维码扫描设备,兼容市场上主流的3类二维码和8类一
    的头像 发表于 06-22 08:29 315次阅读
    Atomic QRCode<b class='flag-5'>2</b> Base | ATOM系列新宠!一<b class='flag-5'>维</b>/<b class='flag-5'>二维码</b>扫<b class='flag-5'>码</b>神器

    二维码器/二维码读取设备嵌入园区闸机系统中的应用

    二维码阅读设备集成至闸机系统中,主要功能是通过扫描用户的二维码通行证来实施园区出入口的自动收费。此技术凭借二维码的便利性及扫描设备的高效性,极大地提高了收费效率和精确度,减少了由于人为错误
    的头像 发表于 06-05 14:46 355次阅读
    <b class='flag-5'>二维码</b>扫<b class='flag-5'>码</b>器/<b class='flag-5'>二维码</b>读取设备嵌入园区闸机系统中的应用

    飞凌嵌入式ElfBoard ELF 1板卡-在线二维码生成器

    在线二维码生成器允许用户将文本、网址、图片或其他数据转换为二维码形式。二维码是一种特殊类型的条形码,它可以通过扫描来快速识别和读取信息。在线二维码
    发表于 04-24 17:00

    怎么在Framewin里显示二维码

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

    远距离二维码扫描器如何选择?看看以下三款远距离二维码模块

    随着二维码相关技术及硬件的普及与低成本化,二维条码扫描设备的应用被人们广为熟知,应用的行业也众多。然而,在某些场景中,由于需要远距离扫描二维码(条码远距离识别),传统的扫设备已经无法
    的头像 发表于 03-21 15:41 702次阅读
    远距离<b class='flag-5'>二维码</b>扫描器如何选择?看看以下三款远距离<b class='flag-5'>二维码</b>扫<b class='flag-5'>码</b>模块

    Labview调用Halcon识别二维码

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

    怎样快速选择二维码扫描仪模组

    扫描仪模组来快速、准确采集各种二维码、屏幕以外,其他只要涉及到扫解决方案的行业领域都需要使用到这些嵌入式二维码扫描模组。作为专业
    的头像 发表于 01-11 14:30 457次阅读
    怎样<b class='flag-5'>快速</b>选择<b class='flag-5'>二维码</b>扫描仪模组