注册登陆后可查看附件和大图,以及购买相关内容
您需要 登录 才可以下载或查看,没有账号?注册会员
x
LabVIEW Vision图像处理开发宝典-第四章 图像处理实例-第三节 模式匹配
3.5 添加匹配边框对于这个处理,其实可以跟二维码中的处理方法一样。在匹配结果中,也可以看到Bounding Box,可以使用这几个点调用覆盖多线段覆盖Overlay,就可以将匹配的结果显示出来了。方法可以参考第二节的二维码识别中的QR码识别子函数进行处理。在本程序,我们将加载一个LabVIEW范例中自带的函数-Overlay Pattern Matching Results.vi
图37 Overlay Pattern Matching Results函数
图37Overlay Pattern Matching Results函数 这个函数在..\NationalInstruments\LabVIEW 2013\examples\Vision\Overlay Utilities目录下:
图38 Overlay Pattern Matching Results函数路径
图38Overlay Pattern Matching Results函数路径
图39 图像处理中加载Overlay Pattern Matching Results函数
图39 图像处理中加载Overlay Pattern Matching Results函数
图40 自动运行图像处理中加载Overlay Pattern Matching Results函数
图40 自动运行图像处理中加载Overlay Pattern Matching Results函数
图41 运行效果
图41 运行效果
图42 覆盖细节
图42 覆盖细节 从图42中看到,使用Overlay Pattern Matching Results函数时,不仅覆盖了边框,同时还在中心点处覆盖了一个圆和一个十字。这个我们可以看一下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函数程序框图
图44Overlay Landmark函数程序框图 函数程序框图比较好理解,调用了一次覆盖椭圆函数Overlay Oval、调用了两次覆盖线函数Overlay Line、调用了一次覆盖多线函数Overlay Multiple Lines。Position和Bounding Box参数都使用了一次数据类型转换
数据类型转换
,将SGL数据类型转换成了I32数据类型。多线段覆盖与第二节中的方法一样,直接连接即可。而覆盖椭圆、覆盖直线,则还使用一些简单的计算,从而获得椭圆的外接矩形、直线的两个端点。这些只是使用了一些简单的加减算法,自行理解一下即可。从图44中也可以了解到,覆盖的直线的两个点为是是直接对Position的X、Y进行了平移,并没有加入角度旋转,因此在图42中可以看到,其覆盖的直线是水平或垂直的,而覆盖的边框则有可能是倾斜的。 对于实际应用来讲,可能并不需要这么多的覆盖,因为覆盖是比较占时间的,当采集图像、处理图像速度过快时,可能覆盖根本就来不及显示:
图45 没有及时覆盖
图45 没有及时覆盖 |