名称
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 测量世界坐标中的倾斜物体