close_edges_length — 使用边缘振幅图像闭合边缘间隙。
close_edges_length(Edges, Gradient : ClosedEdges : MinAmplitude, MaxGapLength : )
close_edges_length 用于闭合边缘检测器输出中的间隙,从而试图生成完整的对象轮廓。该算子期望输入由典型边缘算子(如 edges_image 或 sobel_amp)返回的边缘(Edges)和幅度图像(Gradient)。
轮廓闭合分为两个步骤:首先,闭合输入轮廓中宽度为一个像素的间隙,并消除孤立点。随后,通过添加边缘点将开放轮廓延伸至最多 MaxGapLength
个点,直至轮廓闭合或无法再找到更多显著边缘点为止。若梯度值大于
MinAmplitude ,则该梯度被视为显著。作为潜在新边缘点的邻点包括:轮廓方向上的点及其 8 邻域内的两个相邻点。对于每个点,计算其梯度与该点三个可能邻点的最大梯度之和(前瞻长度为 1)。最终选取和最大的点作为新的边缘点。
请注意,若使用域缩减后的图像作为输入,滤波器算子可能会返回意外结果。请参阅 滤波器 一章
Edges (输入对象) region(-array) → object
包含单像素厚边缘的区域。
Gradient (输入对象) singlechannelimage → object (byte / uint2)
边缘幅度(梯度)图像。
ClosedEdges (输出对象) region(-array) → object
包含闭合边缘的区域。
MinAmplitude (输入控制) integer → (integer)
最小边缘振幅。
默认值: 16
建议值: 5, 8, 10, 12, 16, 20, 25, 30, 40, 50
值范围:
0
≤
MinAmplitude
≤
255
最小增量: 1
建议增量: 1
MaxGapLength (输入控制) integer → (integer)
边缘被延伸的最大点数。
默认值: 3
建议值: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 15, 20, 30, 40, 50, 70, 100
值范围:
1
≤
MaxGapLength
≤
127
最小增量: 1
建议增量: 1
sobel_amp(Image,&EdgeAmp,"sum_abs",5); threshold(EdgeAmp,&EdgeRegion,40.0,255.0); skeleton(EdgeRegion,&ThinEdge); close_edges_length(ThinEdge,EdgeAmp,&CloseEdges,15,3);
close_edges_length 在所有参数正确时返回 2 (H_MSG_TRUE)。当输入为空时,可设置行为通过算子 set_system('no_object_result',<Result>)。如有必要,则抛出异常。
edges_image,
sobel_amp,
threshold,
skeleton
close_edges,
dilation1,
closing
M. Üsbeck: “Untersuchungen zur echtzeitfähigen Segmentierung”; Studienarbeit, Bayerisches Forschungszentrum für Wissensbasierte Systeme (FORWISS), Erlangen, 1993.
基础