VisionMaster 学习笔记(线线测量)

VisionMaster 学习笔记(线线测量)

直线到直线间的距离测量是一个比较常见的应用场景。利用海康的 VisionMaster 可以很方便的实现这个功能。下面就简单的介绍一下用法。

我们的测试图如下:

在这里插入图片描述
这个是一个手机的 Cover Glass,我们要测量白色区域的宽度。还有中间麦克风条形孔的宽度。

程序的基本框架如下,两个直线查找,然后就是线线测量。

在这里插入图片描述
直线查找首先要设置个 ROI 区域。当然对于查找白色区域的上下边线即使不设置ROI 也能找到。但是设了 ROI 可以加快查找速度。下面的图只给出了第一个直线查找的 ROI 区域。第二个直线查找的 ROI 区域类似,只不过在下面。ROI 区域的大小要根据我们项目中的实际情况。比如CG 每次取放的精度来合理的设置。太小了虽然速度快,但是有可能我们要找的线段在 ROI 之外,这时就会查找失败。
在这里插入图片描述
对于上面的直线查找。参数要设置为从黑到白。下面的直线自然就是从白到黑。查找方向有从上到下和从左到右两种,我们全都选择从上到下。

边缘类型:共有三种模式,分别是“最强”、“第一条”、“最后一条”。最强是指查找梯度阈值最大的边缘点集合,然后拟合成直线;

滤波尺寸:对噪点起到过滤作用,数值越大抗噪能力越强,得到的边缘数量越少,同时也可能导致目标边缘被筛除。

卡尺数量:边缘点由多个卡尺卡出,定义卡尺的数量。卡尺数量最少是2,因为2点确定一个直线。卡出的点在上图中用绿色的 “+” 表示。一般来说一条直线有那么10来个点就足够精确了。这些点会均匀分布在 ROI 区域内。

剔除点数:误差过大而被排除不参与拟合的最小点数量。一般情况下,离群点越多,该值应设置越大,为获取更佳查找效果,建议与剔除距离结合使用

剔除距离:允许离群点到拟合圆的最大像素距离,值越小,排除点越多

拟合方式:拟合方式有最小二乘、huber和tukey三种。三种拟合方式只是权重的计算方式有些差异。随着离群点数量增多以及离群距离增大,可逐次使用最小二乘、huber、tukey。

在这里插入图片描述

基本上知道这些就够了。前几天有人问我直线查找输出的结果包含哪些数据呢。在 VM 的帮助上并没有写,一般来说直线查找返回的直线段两个端点的坐标,还有直线拟合的好坏程度,也就是拟合误差。有些可能还会返回个直线的角度。但是这个角度其实是可以用端点数据算出来的。属于可有可无的项目。

最后来讲讲线线测量。线线测量是以直线查找输出的直线为输入的。两条直线一般不会绝对的平行,所以线线测量距离按照线段四个端点到另一条直线的距离取平均值计算。
在这里插入图片描述

线线测量输出的结果包括 两条线的夹角,距离。交点坐标。

至此这个简单的案例就讲完了。VM 的这个测量功能还是很实用的,而且考虑的也很周详,春节假期准备用 opencv 模仿着将这个功能实现一遍。

猜你喜欢

转载自blog.csdn.net/liyuanbhu/article/details/113738342