轮廓(Contour)是指可以在图像中勾勒出目标外形的一组相互连接的曲线(Curve)这些曲线由一系列目标物的边缘点组成。由曲线构成的轮廓通常会勾勒出被测目标的外形(Shape)。因此,基于提取的目标轮廓,不仅可实现图像分割,还能实现尺寸测量、缺陷检测以及目标的轮廓分析、匹配和轮廓分类等机器视觉应用。
例如,可以将观测目标的轮廓与轮廓模板或拟合的曲线进行对比,以判断目标是否存在或对其质量进行检测。也可以通过检测目标轮廓的周长、半径、曲率和角度等关键尺寸信息来判定其是否合格。此类应用的实现过程常涉及目标的轮廓提取、轮廓匹配以及分类等技术。
Nl Vision为轮廓提取、轮廓比较和轮廓分析分类提供了专门的函数集,这些VI位于LabVIEW的视觉与运动→Machine Vision→Contour Analysis函数选板中,如下图所示:
函数说明及使用可参见帮助手册:
IMAQ Extract Contour封装了轮廓提取过程,包括种子点搜索、曲线追踪、曲线连接和轮廓选择几个步骤。经IMAQ Extract Contour可选出离搜索起点最近、长度最长或平均梯度最强的3类目标轮廓,被提取出的轮廓信息会被附加在内存中的图像之后供后续处理过程使用。
轮廓可以参与两种比较运算,一种是与基于轮廓像素点拟合得到的理想曲线进行比较,另一种是与轮廓模板进行比较。无论何种情况下进行轮廓比较,都逐点比较轮廓与曲线或模板上对应点之间的距离,并根据设定的距离范围来判断被测目标轮廓的偏离。
通过比较易拉罐的轮廓与基于轮廓像素拟合得到的圆形曲线,并根据它们之间的最大距离来判断易拉罐的质量的案例,了解NI Vision自带的轮廓与拟合曲线比较的使用方法,程序设计思路如下所示:
程序一开始先从指定的文件夹中读取待测图像文件,然后使用IMAQ ExtractContour提取出环形ROI中最长的易拉罐轮廓;
IMAQ Fit Contour则从文件中读取出轮廓信息,并基于这些点拟合出圆形曲线。该圆形曲线作为判断合格易拉罐的参照标准被保存在内存中的图像之后,供后续过程使用;
IMAQ Compute Contour Distances可以从内存图像数据中提取出轮廓和曲线信息,并计算它们之间的距离;
For循环检查各个对应点之间的距离是否超出设定的最大限度,并显示距离曲线。若有任何两点之间的距离超限,就将测试结果设置为Fail;
IMAQ Overlay Contour和Overlay Point withUser Specified Size.vi在图像中通过无损图层的形式显示出轮廓,并标出距离超限的轮廓点。
程序设计如下所示:
通过运行程序,调整While循环的延时,可以观察程序的运行结果,效果如下所示:
项目资源下载:https://download.csdn.net/download/m0_38106923/19854388
目标的轮廓也可以与轮廓模板进行比较。与拟合曲线比较的过程不同,在与轮廓模板进行比较之前,需要先收集标准参考图像中的轮廓模式特征信息,生成轮廓模板,并将其添加在标准参考图像之后以备后用。该过程称为轮廓的学习(Learning)过程。实际检测的目标并不都与标准参考图像中的目标相同,而是可能进行了缩放(Scale)、旋转(Rotate)或交叠(Occlusion),如下图所示:
因此在轮廓学习过程中,除了要收集标准位置的轮廓信息,还要基于标准的参考目标,计算缩放或旋转情况目标的轮廓信息,以支持视场中目标轮廓的各种姿态。默认情况下,Nl Vision可支持缩放量为原目标的±25%,且在视场中360°旋转的目标。程序支持的旋转角度和缩放比例越大,其执行时间就会越长。设计过程中,要根据实际情况尽可能限制旋转角度和缩放比例,必要的时候还要与算法的速度进行权衡取舍。