Halcon一维测量1D Measuring解析

摘要:
通过算子radiometric_self_calibration,可以确定相机的反响应函数(离线),然后在执行测量前使用lut_trans将此函数应用于图像。创建测量对象你可以用像draw_rectangle2这样的操作符交互式地测量线或弧线,或者从文件中读取它的参数。这个规则的一个例外是只有位置改变而没有方向改变,可以保留测量对象,并通过translate_measure调整其位置。这些函数通过create_funct_1d_pairs创建,并通过set_fuzzy_measure传递给工具。灰度值的评估要完全控制沿测量线或弧线的灰度值的评估,可以使用measure_projection。

一维测量(也叫一维计量或卡尺)的概念非常直观。沿着一个预定的区域(主要是垂直于RIO感兴趣区域的方向) 边缘的位置。这里的边缘为从暗到亮或从亮到暗的过渡。
基于提取的边缘,可以测量零件的尺寸。例如,可以测量 ROI内零件的宽度,并将边缘定位在其左右两侧。

除了这些简单的矩形ROI外,圆弧也可以用来测量,例如,齿轮上的齿轮宽度。
这种测量方法的优点是使用方便,执行时间短,而且有很高的的精度。只需几个操作符,就可以实现高性能的应用。
另外,也可以使用HDevelop的测量助手,只需点击几下鼠标就可以进行测量。

基本概念

测量包括以下几个主要步骤:

获取图像

创建测量对象

在获取图像后,可以指定测量的位置,即描述要测量的线或弧的位置、方向等。
可以通过使用句柄handle来访问测量对象。类似于文件句柄,在使用该工具时需要这个句柄。每次执行测量时,这个句柄都会作为参数传递。
在像C++这样的面向对象的语言中,可以使用measure类来代替使用句柄的低级方法。在这里,用标准的面向对象方法实现创建和销毁。

测量

然后,可以通过指定测量对象和一些视觉参数,如最小对比度来应用测量。

扩展概念

在许多情况下,测量应用会比上面描述的更复杂,例如杂乱或不均匀的照明。此外,还可能要将特征转化为现实世界的单位,或将结果可视化。

衍射校准图像

为了进行高精度的测量,摄像机应该具有线性响应函数,即图像中的灰度值应该线性地取决于输入的量。

由于某些相机没有线性响应函数,因此 HALCON 提供了所谓的衍射校准(灰度值校准)。通过算子radiometric_self_calibration,可以确定相机的反响应函数(离线),然后在执行测量前使用lut_trans将此函数应用于图像。

对准ROI或图像

在某些应用中,要测量的直线或弧线必须相对于另一个对象对齐以方便测量。

矫正图像

与对准类似,可能需要对图像进行修正,例如,消除镜头变形。
Halcon一维测量1D Measuring解析第1张

创建测量对象

你可以用像draw_rectangle2这样的操作符交互式地测量线或弧线,或者从文件中读取它的参数(read_string)。作为另一种选择,它的坐标可以基于其他视觉工具如Blob Analysis的结果生成 。特别是在测量线或弧线可能需要对准某个对象的时候。

如果总是沿着同一条线或弧线进行测量,可以离线创建测量对象,然后多次使用它。 如果要对齐测量,每个图像的线或弧的位置和方向将有所不同,在这种情况下,必须为每个图像创建一个新的测量对象。这个规则的一个例外是只有位置改变而没有方向改变,可以保留测量对象,并通过 translate_measure 调整其位置。

将结果转化为世界坐标

如果已经校准了视觉系统,可以直接用image_points_to_world_plane将测量结果转化为世界坐标。

结果可视化

可视化边缘位置的最好方法是使用gen_contour_polygon_xld等运算符创建(短)XLD线段。

涉及算子

获取图像

衍射校准图像

基础:radiometric_self_calibration(校验径向畸变), lut_trans(用灰度值查找表变换图像)

对准ROI或图像

矫正图像

创建测量对象

基础:gen_measure_rectangle2(提取垂直于矩形的直边), gen_measure_arc(提取垂直于环形弧线的直边), translate_measure(转换测量对象)

测量

基础:measure_pos(测量垂直于矩形或圆弧的直边), measure_pairs(测量垂直于矩形或圆弧的直边对)

进阶:set_fuzzy_measure(指定模糊函数), fuzzy_measure_pos((通过指定模糊函数测量垂直于矩形或圆弧的直边), fuzzy_measure_pairs, fuzzy_measure_pairing(可以使用参数Pairing来测量交错对和包含对)

把结果转化为世界坐标

基础:image_points_to_world_plane

进阶:gen_contour_region_xld, contour_to_world_plane_xld

结果可视化

进阶:gen_contour_polygon_xld

一维测量的替代方法

边缘提取(亚像素精度)

测量边缘参数的一个非常好的方法是用edges_sub_pix提取边缘轮廓。这种方法的优点是它可以处理任意形状。此外,它可以确定每个边缘点的属性,如边缘方向。

小技巧

抑制杂物或噪音

在许多应用中,一些杂物或噪音必须被抑制。测量运算符提供了多种方法来实现。最好的是提高边缘提取的阈值,以消除模糊的边缘。此外,平滑参数的值可以增加,以平滑不相关的边缘。
当将边缘分组为对时,如果噪声边缘在 "真实 "边缘的附近并且具有相同的极性,则可能导致不正确的分组。在这种情况下,可以通过只选择连续上升和下降边缘序列中最强的边缘来抑制噪声边缘。

重用测量对象

因为创建一个测量对象需要一些时间,所以建议在有可能的情况下重复使用它们。例如,如果不需要对齐,可以离线创建测量对象,并重复使用该对象。如果对齐只涉及到转换,那么 translate_measure 可以用来修正位置。

使用绝对灰度值阈值

作为边缘提取的替代方法,可以使用操作符 measure_thresh 根据绝对灰度值阈值进行测量,可以使所有灰度值超过给定阈值的位置都会被选中。

高阶

模糊测量

如果存在不属于测量范围的额外边缘,HALCON提供了一个扩展版本的测量:模糊测量。 这个工具允许定义所谓的模糊规则,它描述了更好的边缘特征。可能的特征有位置、距离、灰度值或边缘的振幅。这些函数通过create_funct_1d_pairs创建,并通过set_fuzzy_measure传递给工具。基于这些规则,工具将选择最合适的边缘。

这种方法的优点是即使使用很低的最小阈值或平滑,也能灵活处理额外的边缘。

灰度值的评估

要完全控制沿测量线或弧线的灰度值的评估,可以使用 measure_projection。该操作符以数字数组的形式返回投影的灰度值,然后可以使用 HALCON 操作符进一步处理元组或函数。

具体项目案例下次再为大家讲解

免责声明:文章转载自《Halcon一维测量1D Measuring解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Winform开发框架之介绍Java 嵌套解析 json下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

图像处理常用边缘检测算子总结(转)

  不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分...

CNN网络的基本介绍(二)

四、激活函数 激活函数又称非线性映射,顾名思义,激活函数的引入是为了增加整个网络的表达能力(即非线性)。若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数。常用的函数有sigmoid、双曲正切、线性修正单元函数等等。 使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上。    比如,在神经网路的前向传播中,这两步会使...

【试题汇总】图像处理职位面试题汇总(1)

Matlab编程部分 1. Matlab 中读、写及显示一幅图像的命令各是什么? 解:第一、Matlab中读图像函数是imread( )。imread 函数用于读入各种图像文件,其一般的用法为:[X,MAP]=imread(‘filename’,‘fmt’) 其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的...

边缘计算的发展现状与边缘计算的智能发展

摘 要 随着万物互联时代的到来,网络中的设备变得复杂多样,并且数量急剧增加。不可避免的,在网络中传输的数据量也在急剧增加。在云计算时代,所有的数据存储与计算均在云端服务器执行,这带来便利的同时也产生了很多需求,比如在面对大数据量的传输时,网络的带宽不足;在处理时效性较高的任务时,数据在网络的传输和云端的计算存在一定的延迟,实时性不足;存在云端的数据的安全性...

用FPGA实现视频中物体边缘二值化

       对于高速视频图像中的物体轮廓提取中,图像的二值化,采用软件方式,速度无法满足需要,因此要采用FPGA方案,这样可以实现二值化速度和帧率一样,完全和视频同步。 一、算法原理:  边缘二值化的算法很多,象sobel法,roberts法,拉普拉斯法,导数法。为了简单化,采用导数法。        视频图像每帧扫描顺序如下图的黑色箭头所示     ...

Halcon学习之边缘检测函数

sobel_amp( Image: EdgeAmplitude: FilterType, Size:)根据图像的一次导数计算图像的边缘 close_edges( Edges, EdgeImage: RegionResult: MinAmplitude:) close_edges_length( Edges, Gradient: ClosedEdges: M...