halcon算子翻译——measure_pos

浪子不回头ぞ 提交于 2020-03-08 06:50:56

名称

measure_pos - 提取垂直于矩形或环形弧的直线边缘。

用法

measure_pos(Image : : MeasureHandle, Sigma, Threshold, Transition, Select : RowEdge, ColumnEdge, Amplitude, Distance)

描述

  measure_pos提取垂直于矩形或环形弧长轴的直边。

  该算法通过计算垂直于矩形或环形弧的长轴的“切片”中的灰度值的均值以获得一维边缘轮廓。采样是在矩形中心的整数行和列位置(在矩形的坐标系中)的图像Image中的亚像素位置完成的。由于这含有可以在多次测量中重复使用的一些计算,所以使用算子gen_measure_rectangle2或gen_measure_arc来执行一次这些计算,从而显著提高了measure_pos的速度。由于在灰度值的亚像素计算中存在精度和速度之间的折衷,并且因此在所提取的边缘位置的准确度中,可以在gen_measure_rectangle2中选择不同的插值方案。 (插值仅影响与图像轴不对齐的矩形。)使用gen_measure_rectangle2生成的measure对象在MeasureHandle中传递。

  在计算出一维边缘轮廓之后,通过将轮廓与标准偏差Sigma的高斯平滑核的导数进行卷积来计算亚像素边缘位置。可以用构成振幅阈值的参数Threshold(即边缘的一阶导数的绝对值)来选择显著边缘。请注意,幅度值按Sigma*sqrt(2*pi)比例缩放。另外,可以仅选择正边缘,即在矩形或弧的长轴方向上构成暗到亮的过渡的边缘(Transition = 'positive'),或者只有负边缘,即,亮到暗过渡(Transition ='negative')或两种类型的边缘(Transition ='all')。最后,可以选择返回哪个边缘点。如果Select设置为'all',则返回所有边缘点。如果设置为'first',则只返回第一个提取的边缘点,而设置为'last',则只返回最后一个。

  提取的边缘将把位于矩形或圆弧长轴上的单个点(RowEdge,ColumnEdge)作为提取的边缘返回。 Amplitude返回相应的边缘振幅。 另外,连续的边缘点之间的距离以Distance返回。 这里, Distance[i]对应于Edge[i]和Edge[i+1]之间的距离,即,元组Distance 含有比(RowEdge 和ColumnEdge)的长度-1个元素

注意

  只有边缘是直的并垂直于矩形或弧的长轴,measure_pos返回的结果才有意义。 因此它不应该用于从曲面对象中提取边缘。 此外用户应确保矩形或弧线尽可能接近垂直于图像中的边缘。 此外,西格玛不能大于约0.5 * Length1(对于Lenth1请参见gen_measure_rectangle2)。

  应该记住,为了效率的原因,measure_pos会忽略Image的ROI域。 如果图像中的特定区域应该从measurement中排除,则应该生成具有适当修改的参数的新measure对象。

并行

●  多线程类型:可重入(与非独占算子并行运行)。

●  多线程范围:全局(可以从任何线程调用)。

●  不并行处理。

参数

Image (input_object) 单通道图像→ object (byte / uint2 / real)
  输入图像。


MeasureHandle (input_control) measure_id → (integer)
  Measure对象句柄。


Sigma (input_control) number → (real)
  高斯模糊的Sigma值
  Default value: 1.0
  Suggested values: 0.4, 0.6, 0.8, 1.0, 1.5, 2.0, 3.0, 4.0, 5.0, 7.0, 10.0
  Typical range of values: 0.4 ≤ Sigma ≤ 100 (lin)
  Minimum increment: 0.01
  Recommended increment: 0.1
  Restriction: Sigma >= 0.4


Threshold (input_control) number → (real)
  最小边缘幅度。
  Default value: 30.0
  Suggested values: 5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0
  Typical range of values: 1 ≤ Threshold ≤ 255 (lin)
  Minimum increment: 0.5
  Recommended increment: 2


Transition (input_control) string → (string)
  亮到暗或者暗到亮的边缘。
  Default value: 'all'
  List of values: 'all', 'negative', 'positive'


Select (input_control) string → (string)
  要选择返回的点。
  Default value: 'all'
  List of values: 'all', 'first', 'last'


RowEdge (output_control) point.y-array → (real)
  边缘中心的Row坐标。


ColumnEdge (output_control) point.x-array → (real)
  边缘中心的Column坐标。


Amplitude (output_control) real-array → (real)
  边缘的边缘幅度(带符号)。


Distance (output_control) real-array → (real)
  连续边之间的距离。

结果

如果参数值正确,则算子measure_pos返回值2(H_MSG_TRUE)。 否则会引发异常。

Possible Predecessors

gen_measure_rectangle2

Possible Successors

close_measure

备选算子

edges_sub_pix, fuzzy_measure_pos

See also

measure_pairs, fuzzy_measure_pairs, fuzzy_measure_pairing

模块

1D Metrology

HDevelop例程

measure_pin.hdev             测量IC的引脚

 measure_ic_leads.hdev           测量IC的引线

measure_fill_level.hdev       检查细颈瓶的液位

measure_arc.hdev               测量金属部件沿着圆弧的的宽度

gen_measure_rectangle2.hdev        测量垂直于给定线的边缘
gen_measure_arc.hdev            测量垂直于给定弧的边

create_drawing_object_rectangle2.hdev 使用绘图对象在矩形内交互测量直边
3d_coordinates.hdev          测量世界坐标中的倾斜物体

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!