<div id="content_views" class="markdown_views prism-atom-one-dark">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p><a href="https://so.csdn.net/so/search?q=%E6%9C%BA%E5%99%A8%E8%A7%86%E8%A7%89&spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-click="{"spm":"1001.2101.3001.7020","dest":"https://so.csdn.net/so/search?q=%E6%9C%BA%E5%99%A8%E8%A7%86%E8%A7%89&spm=1001.2101.3001.7020","extra":"{\"searchword\":\"机器视觉\"}"}" data-tit="机器视觉" data-pretit="机器视觉">机器视觉</a>测量拟合中级篇,halcon实战测量助手<br> 个人学习笔记<br> 第一:快速使用measure测量助手进行识别:<br> measure测量助手打开位置<br> <img src="https://img-blog.csdnimg.cn/2f5fb87a6f904e44be59c41654c5e2ff.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA54ix54K46Jav5p2h55qE5bCP5pyL5Y-L,size_19,color_FFFFFF,t_70,g_se,x_16" alt="在这里插入图片描述"></p>
进入measure测量助手的首页,第一使用对图像进行读取。
第二:图像源选取
1.按照要求选取图像源,可以直接对图像窗口进行选取(在实现写好读图程序)。
2.图像文件,我们可以直接选取图像文件,在插入代码即可直接使用。
3.图像采集助手,这个是需要先使用采集助手进行连接相机,然后使用相机进行实时读取。
/****/
期望的灰度值范围:一般采取默认值0-255。如果出现我需要选取某一部分的图像的时候,我们可以先使用灰度直方图的阀值选择,选择合适的灰度值放入其中。
标定来源:如果不设置标定来源,实际的测量结果将由像素的形式显示出来。例如距离为100pix。使用标定来源,实际结果将直接转化为国际单位mm。
//
第三:绘制ROI区域。
直接使用绘制线段或者绘制弧线,对所需要的区域进行绘制,由于为手工绘制,所以线段往往不能达到所需要的角度,但是我们可以在插入代码中进行修调角度即可,所以在绘制的时候只需要尽可能的绘制完好即可。
第四:调节边缘
调节边缘主要用于选取所需要的边缘和显示图像。
可以通过调节,最小边缘幅度和平滑度旋转边缘。对于最小边缘幅度,值约小所得到的边缘越多,值越大所得到的边缘越少,一般选取默认值即可。对于平滑度而言,平滑度越大则选取的边缘会约靠近外部,平滑度越小则选取边缘会越靠近黑色部分,当平滑度小于0.6之后,线段会消失,意味值平滑度过小影响到边缘的选取,一般取默认值为1.
ROI宽度:为你绘制的轮廓线的大小,如果对于表面不是特别平整的区域,过大的ROI区域会影响测量边缘的识别。
显示轮廓线:
在这个图表中,纵坐标为图像的灰度值,我们可以打开导数,对图像进行一阶导数求导
我们可以直观的看到每一条轮廓必然在灰度一阶导数的转折点(中间绿和红色线为手动选取线)
注意:我们打开一定要处于激活状态,不然无法观察到线段
/****************************************/
边缘选择:我们可以直接打开将边缘这次边缘对方便我们观察。
变换:变换包含常用的三种方法。
- all:测量所有的线段
- positive:测量正边缘
- negative:测量负边缘
位置可以设定,我们需要测量的组别,有all:所有组别。First:第一组。Last:最后一组三个参数。
/***************/
显示参数,我们可以打开显示区域,方便我们查看。
模糊部分另外介绍。
/**************************/
结果部分
在这里我们可以选择特征。
是否选择位置,幅度,距离,边缘宽度,这些在代码中都会有不同的显示。
特征处理:变化为世界坐标系。由于我们并没有使用标定文件,所以我们所得到的是像素距离,只有我们输入标定文件后才能转化为世界坐标系(即为直角坐标系,单位为mm)
我们可以同时绘制多个ROI区域用于测量,在结果窗口选择激活的ROI区域即可。
/***************/
结果:
Row1st:为第一组第一边的中心横坐标(row2st则为第二边)
Column1st:为第一组第二边的中心纵坐标(Column2st则为第二边)
幅度:在上面的显示轮廓中,灰度的一阶导数为负值的边缘,幅度也是负值。如果灰度的一阶导数为正值的边缘,幅度也为正值。
距离:里面的2条边缘所得到的距离单位为像素点。
/******************************/
我们在插入代码后。
因为我们画的ROI区域可能不是垂直的,所以我们直接找到存放ROI区域角度的变量
TmpCtrl_Phi := atan2(TmpCtrl_Dr, TmpCtrl_Dc)
修改为垂直即可
TmpCtrl_Phi := rad(90)
变量窗口的interdistance 则为我们需要的结果。
/*************************************************/
对于快速测量来说,我们可以直接使用measure测量助手进行快速测量像素,然后插入代码,修改ROI区域角度,得出interdistance变量的值即可。
在我们不会如何处理处理的时候,也可以使用助手插入代码,复制粘贴即可