石鑫华视觉论坛微信公众号:石鑫华视觉

 找回密码
 注册会员
查看: 2465|回复: 0

[原创] LabVIEW Vision图像处理开发宝典-第四章 图像处理实例-第三节 模式匹配-3.5 添加匹配边框

[复制链接]
  • TA的每日心情
    开心
    昨天 09:18
  • 签到天数: 3184 天

    连续签到: 54 天

    [LV.Master]2000FPS

    发表于 2020-7-28 15:37:38 | 显示全部楼层 |阅读模式 来自:广东省东莞市 电信

    注册登陆后可查看附件和大图,以及购买相关内容

    您需要 登录 才可以下载或查看,没有账号?注册会员

    x
    LabVIEW Vision图像处理开发宝典-第四章 图像处理实例-第三节 模式匹配

    3.5 添加匹配边框
    对于这个处理,其实可以跟二维码中的处理方法一样。在匹配结果中,也可以看到Bounding Box,可以使用这几个点调用覆盖多线段覆盖Overlay,就可以将匹配的结果显示出来了。方法可以参考第二节的二维码识别中的QR码识别子函数进行处理。在本程序,我们将加载一个LabVIEW范例中自带的函数-Overlay Pattern Matching Results.vi

    图37 Overlay Pattern Matching Results函数

    图37 Overlay Pattern Matching Results函数
    图37Overlay Pattern Matching Results函数
    这个函数在..\NationalInstruments\LabVIEW 2013\examples\Vision\Overlay Utilities目录下:

    图38 Overlay Pattern Matching Results函数路径

    图38 Overlay Pattern Matching Results函数路径
    图38Overlay Pattern Matching Results函数路径

    图39 图像处理中加载Overlay Pattern Matching Results函数

    图39 图像处理中加载Overlay Pattern Matching Results函数
    图39 图像处理中加载Overlay Pattern Matching Results函数

    图40 自动运行图像处理中加载Overlay Pattern Matching Results函数

    图40 自动运行图像处理中加载Overlay Pattern Matching Results函数
    图40 自动运行图像处理中加载Overlay Pattern Matching Results函数

    图41 运行效果

    图41 运行效果
    图41 运行效果

    图42 覆盖细节

    图42 覆盖细节
    图42 覆盖细节
    从图42中看到,使用Overlay Pattern Matching Results函数时,不仅覆盖了边框,同时还在中心点处覆盖了一个圆和一个十字。这个我们可以看一下Overlay Pattern Matching Results函数的内部结构,就可以明白其原理了:

    图43 Overlay Pattern Matching Results函数程序框图

    图43 Overlay Pattern Matching Results函数程序框图
    图43Overlay Pattern Matching Results函数程序框图
    Overlay PatternMatching Results函数使用了一个For循环,以Matches匹配的结果数量为索引,如果有多个匹配结果时,将执行多次覆盖,这个比直接使用多线段覆盖要智能一些。For循环内部使用了按名称解除捆绑函数,提取了Position(中心位置)、Bounding Box外接边框两个参数。然后调用了Overlay Landmark函数,这个函数与Overlay Pattern Matching Results函数在同一路径下。

    图44 Overlay Landmark函数程序框图

    图44 Overlay Landmark函数程序框图
    图44Overlay Landmark函数程序框图
    函数程序框图比较好理解,调用了一次覆盖椭圆函数Overlay Oval、调用了两次覆盖线函数Overlay Line、调用了一次覆盖多线函数Overlay Multiple Lines。Position和Bounding Box参数都使用了一次数据类型转换

    数据类型转换

    数据类型转换
    ,将SGL数据类型转换成了I32数据类型。多线段覆盖与第二节中的方法一样,直接连接即可。而覆盖椭圆、覆盖直线,则还使用一些简单的计算,从而获得椭圆的外接矩形、直线的两个端点。这些只是使用了一些简单的加减算法,自行理解一下即可。从图44中也可以了解到,覆盖的直线的两个点为是是直接对Position的X、Y进行了平移,并没有加入角度旋转,因此在图42中可以看到,其覆盖的直线是水平或垂直的,而覆盖的边框则有可能是倾斜的。
    对于实际应用来讲,可能并不需要这么多的覆盖,因为覆盖是比较占时间的,当采集图像、处理图像速度过快时,可能覆盖根本就来不及显示:

    图45 没有及时覆盖

    图45 没有及时覆盖
    图45 没有及时覆盖
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    LabVIEW HALCON图像处理入门教程(第二版)
    石鑫华机器视觉与LabVIEW Vision图像处理PDF+视频教程11种全套
    《LabVIEW Vision函数实例详解》教程-NI Vision所有函数使用方法介绍,基于NI VISION2020,兼容VDM21/22/23
    LabVIEW图像处理教程
    机器视觉商城淘宝店铺
    视觉论坛充值赞助方法

    QQ|石鑫华视觉论坛 |网站地图

    GMT+8, 2024-4-27 02:40

    Powered by Discuz! X3.4

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表