名称
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