石鑫华视觉 发表于 2020-7-28 15:37:38

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


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

3.5 添加匹配边框对于这个处理,其实可以跟二维码中的处理方法一样。在匹配结果中,也可以看到Bounding Box,可以使用这几个点调用覆盖多线段覆盖Overlay,就可以将匹配的结果显示出来了。方法可以参考第二节的二维码识别中的QR码识别子函数进行处理。在本程序,我们将加载一个LabVIEW范例中自带的函数-Overlay Pattern Matching Results.vi图37Overlay Pattern Matching Results函数
这个函数在..\NationalInstruments\LabVIEW 2013\examples\Vision\Overlay Utilities目录下:图38Overlay Pattern Matching Results函数路径图39 图像处理中加载Overlay Pattern Matching Results函数图40 自动运行图像处理中加载Overlay Pattern Matching Results函数图41 运行效果图42 覆盖细节从图42中看到,使用Overlay Pattern Matching Results函数时,不仅覆盖了边框,同时还在中心点处覆盖了一个圆和一个十字。这个我们可以看一下Overlay Pattern Matching Results函数的内部结构,就可以明白其原理了:图43Overlay Pattern Matching Results函数程序框图Overlay PatternMatching Results函数使用了一个For循环,以Matches匹配的结果数量为索引,如果有多个匹配结果时,将执行多次覆盖,这个比直接使用多线段覆盖要智能一些。For循环内部使用了按名称解除捆绑函数,提取了Position(中心位置)、Bounding Box外接边框两个参数。然后调用了Overlay Landmark函数,这个函数与Overlay Pattern Matching Results函数在同一路径下。图44Overlay Landmark函数程序框图函数程序框图比较好理解,调用了一次覆盖椭圆函数Overlay Oval、调用了两次覆盖线函数Overlay Line、调用了一次覆盖多线函数Overlay Multiple Lines。Position和Bounding Box参数都使用了一次数据类型转换,将SGL数据类型转换成了I32数据类型。多线段覆盖与第二节中的方法一样,直接连接即可。而覆盖椭圆、覆盖直线,则还使用一些简单的计算,从而获得椭圆的外接矩形、直线的两个端点。这些只是使用了一些简单的加减算法,自行理解一下即可。从图44中也可以了解到,覆盖的直线的两个点为是是直接对Position的X、Y进行了平移,并没有加入角度旋转,因此在图42中可以看到,其覆盖的直线是水平或垂直的,而覆盖的边框则有可能是倾斜的。对于实际应用来讲,可能并不需要这么多的覆盖,因为覆盖是比较占时间的,当采集图像、处理图像速度过快时,可能覆盖根本就来不及显示:图45 没有及时覆盖
页: [1]
查看完整版本: LabVIEW Vision图像处理开发宝典-第四章 图像处理实例-第三节 模式匹配-3.5 添加匹配边框

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