halcon算子翻译——fuzzy_measure_pos

名称

fuzzy_measure_pos - 提取垂直于矩形或环形弧的直边。

用法

  fuzzy_measure_pos(Image : : MeasureHandle, Sigma, AmpThresh, FuzzyThresh, Transition : RowEdge, ColumnEdge, Amplitude, FuzzyScore, Distance)

描述

  fuzzy_measure_pos提取垂直于矩形长轴或环形弧的直边。 与measure_pos有所区别,它还使用模糊函数(fuzzy functions)来判断和选择边缘。

  该算法通过平均垂直于矩形或环形弧的长轴的“切片”中的灰度值来工作,以获得一维边缘轮廓。(The algorithm works by averaging the gray values in “slices” perpendicular to the major axis of the rectangle or annular arc in order to obtain a one-dimensional edge profile.)采样是在矩形中心的整数行和列距离(在矩形的坐标系中)图像Image中的亚像素位置完成的。由于这涉及一些可以在多次测量中重复使用的计算,所以仅使用算子gen_measure_rectangle2执行一次这些计算,从而显著提高了fuzzy_measure_pos的速度。由于在灰度值的亚像素计算中存在精度和速度之间的折衷,并且因此在所提取的边缘位置的准确度中,可以在gen_measure_rectangle2中选择不同的插值方案。 (插值仅影响矩形轴和圆弧不与图像对齐的measure。)使用gen_measure_rectangle2生成的measure对象在MeasureHandle中传递。

  在计算出一维边缘轮廓之后,通过将轮廓与标准偏差Sigma的高斯平滑核的导数进行卷积来计算亚像素边缘位置。 可以用构成振幅阈值的参数AmpThresh,即边缘的一阶导数的绝对值来选择显著边缘。 另外,可以仅选择positive边缘,即构成矩形长轴方向上的暗到亮的过渡的边缘(Transition = 'positive'),或者negative边缘即亮到暗 (Transition = 'negative')或两种类型的边缘(Transition = 'all')。 最后,可以选择返回哪个边缘点。

  在提取了亚像素边缘位置之后,通过相应的模糊函数来评估这些边缘的特征,这可以通过set_fuzzy_measure来设置。 可以用参数FuzzyThresh确定选择哪些边缘,该参数构成了所有模糊集合上权重的阈值,即定义集合的权重的几何平均值。

  选定的边将作为位于矩形或圆弧长轴上的点返回,这些点存储在(RowEdge,ColumnEdge)中。 Amplitude中返回相应的边缘振幅,模糊分数在FuzzyScore中。 另外,连续的边缘点之间的距离以Distance返回。 这里,Distance[i]对应于Edge[i]和Edge[i + 1]之间的距离,即元组Distance包含(ColumnEdge或RowEdge -1)个元素。

注意

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

  应该记住,为了效率的原因,fuzzy_measure_pos忽略了Image的ROI(domain)。 如果要从测量中排除图像中的特定区域,则应该生成具有适当修改的参数的新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
  限制: Sigma >= 0.4


AmpThresh (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 ≤ AmpThresh ≤ 255 (lin)
  Minimum increment: 0.5
  Recommended increment: 2


FuzzyThresh (input_control)    number → (real)
  最小模糊值
  Default value: 0.5
  Suggested values: 0.1, 0.3, 0.5, 0.6, 0.7, 0.9
  Typical range of values: 0.0 ≤ FuzzyThresh ≤ 1.0 (lin)
  Recommended increment: 0.1


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


RowEdge (output_control)    point.y-array → (real)
  Edge点的Row坐标。


ColumnEdge (output_control)    point.x-array → (real)

  Edge点的Column坐标。


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


FuzzyScore (output_control)    real-array → (real)
  边缘模糊评估的分数。


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

结果

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

Possible Predecessors

gen_measure_rectangle2, gen_measure_arc, set_fuzzy_measure

Possible Successors

close_measure

备选算子

edges_sub_pix, measure_pos

See also

fuzzy_measure_pairing, fuzzy_measure_pairs, measure_pairs

模块

1D Metrology

posted @ 2017-11-21 21:37  水行  阅读(863)  评论(0编辑  收藏  举报