让代码更简单

VisionPro卡尺三种计分函数详解

重要:本文最后更新于2020-12-03 21:26:26,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

VisionPro卡尺使用很频繁,很多工具中都有卡尺的身影,VisionPro卡尺有三种计分函数,通过选定的函数计算出我们需要查找的边。这三种计分函数分别是:对比度、位置、PositionNeg。下面是行业内某位工程师的笔记,虽然这些东西自己测试几张图就能发现规律,但还是要感谢其为新人提供的帮助。

对比度

对比度指所找线条两侧颜色的色差值。VisionPro能处理的图片格式是bmp格式的8位深度图片,图片色值就是0-255,那么两种颜色的差值范围就是0-255(默认大减小)。那么每根线所对应的色差值就是线的特有属性,依次就能找到线所在的位置。在8位深度bmp格式文件里白色对应255,黑色对应0。如果由白到黑或者由黑到白,色差值都是255。而“对比度”的工作原理是沿搜索方向查找第一根色差值大于等于设定值的线。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

上图是找线的模板,设定的条件是搜索方向由下向上且由白到黑。由图可以看出,色差值由下往上是逐渐增加的。默认情况下X0的值是255,X1和的值是0,勾选X0>,我们只需要改变X0就能选择要找的线。例如当X0设为1时,就是找色差大于1的线,所有线条都满足条件,但是系统默认第一条。如果我将X0设为100,前几条的色差值就小于100,系统就抓到第三条。X0设为255,自然就会抓到最上面的一条。下面两幅图是将X0值设为1和255的识别结果。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

如果改变搜索方向,那么第一条线的色差值就是255,这样不管你将X0设成何值,他都会只找第一条线。下面两幅图是反向后的模板和效果图

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

事实上,事实上线条的跳变值并不稳定,加入从一条线跳到另一条线的色差值刚好是240,那么有可能识别时候就有可能出现下面的情况。要获得稳定的线条,就要将X0的值设为比240 大一些或者小一些。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

位置

上面提到的对比度是在色差区分度较大的情况下使用,如果很多条线的色差值差不多,那么识别时就有可能找错。这时候就要用到位置工具。位置工具指的是卡尺线沿搜索方向相反方向的线条到卡尺的距离(单位像素),如下图(图气)红色框所示区域。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

下图是做好的模板,条件是搜索方向由下往上、颜色由黑到白。图八每条黑线宽度20像素,黑线间隙20像素,卡尺与第一条黑线重合。使用位置工具时,系统沿搜索方向从距卡尺线X0距离的地方开始查找,自动选择第一根满足条件的线。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

例如X0输入40(单位像素)以下,就只能选择到最上面的一条线,超过40就选择下面一条线。依次按40递加就能每次向下选择到下一根。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

同样,如果要选择直角,就可以用位置分别选择相应的直角边。下面3个图是选择第三个直角的效果图,图片显示不管图形位置怎么变,都能抓到第三个直角。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

PositionNeg

相对前两个工具,PositionNeg显得功能稍弱。它是沿搜索方向在卡尺框内抓取第一根符合条件的线。如下图,是做好的模板,条件是由下往上找由黑到白的线。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

此时不论X0、X1、怎么设置他都只抓最下面那一条线,下面两图是X0设为0和200的效果图。

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

VisionPro卡尺三种计分函数详解

原作者希望发现其它功能的朋友能完善此文档,若有请联系我更新此文,再次感谢该作者留下的笔记。

感觉很棒!可以赞赏支持我哟~

38 打赏

评论 (2)

登录后评论
博主,还是不太明白位置工具是怎样用的,卡尺线是不是指的是那根垂直搜索方向的蓝色线?在卡尺工具位置不变的情况下,也就是那根蓝线位置不变,X0的设置多少是根据那根蓝线位置放在哪,作为起点算的吧?所以怎么会无论图片显示不管图形位置怎么变,都能抓到第三个直角?
不明觉厉
QQ咨询 邮件咨询 狗哥推荐