close_edgesclose_edgesCloseEdgesCloseEdgesclose_edges闭合边缘(算子)
名称
close_edgesclose_edgesCloseEdgesCloseEdgesclose_edges — 使用边缘振幅图像闭合边缘间隙。
签名
描述
close_edgesclose_edgesCloseEdgesCloseEdgesCloseEdgesclose_edges 用于闭合边缘检测器输出中的间隙,从而试图生成完整的对象轮廓。该操作通过检查每个边缘点的邻域来确定振幅最大(即梯度最大)的点,若该点的振幅大于传递的最小振幅参数 MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitudemin_amplitude,则将其添加到边缘中。该算子期望输入由典型边缘算子(如 edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image 或 sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp)返回的边缘(EdgesEdgesEdgesEdgesedgesedges)和幅度图像(EdgeImageEdgeImageEdgeImageEdgeImageedgeImageedge_image)。close_edgesclose_edgesCloseEdgesCloseEdgesCloseEdgesclose_edges 不会考虑边缘算子可能返回的边缘方向。因此,在梯度几乎恒定的区域,边缘可能会变得相当“扭曲(wiggly)”。
注意
请注意,若使用域缩减后的图像作为输入,滤波器算子可能会返回意外结果。请参阅 滤波器 一章
执行信息
- 多线程类型:可重入(与非独占算子并行运行)。
- 多线程作用域:全局(可从任何线程调用)。
- 在元组级别上自动并行化。
参数
EdgesEdgesEdgesEdgesedgesedges (输入对象) region(-array) → objectHRegionHObjectHRegionHobject
包含单像素厚边缘的区域。
EdgeImageEdgeImageEdgeImageEdgeImageedgeImageedge_image (输入对象) singlechannelimage → objectHImageHObjectHImageHobject (byte / uint2 / int4)
边缘幅度(梯度)图像。
RegionResultRegionResultRegionResultRegionResultregionResultregion_result (输出对象) region(-array) → objectHRegionHObjectHRegionHobject *
包含闭合边缘的区域。
MinAmplitudeMinAmplitudeMinAmplitudeMinAmplitudeminAmplitudemin_amplitude (输入控制) integer → HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)
最小边缘振幅。
默认值:
16
建议值:
5, 8, 10, 12, 16, 20, 25, 30, 40, 50
值范围:
1
≤
MinAmplitude
MinAmplitude
MinAmplitude
MinAmplitude
minAmplitude
min_amplitude
最小增量:
1
建议增量:
1
示例(C)
sobel_amp(Image,&EdgeAmp,"sum_abs",5);
threshold(EdgeAmp,&EdgeRegion,40.0,255.0);
skeleton(EdgeRegion,&ThinEdge);
close_edges(ThinEdge,EdgeAmp,&CloseEdges,15);
skeleton(CloseEdges,&ThinCloseEdges);
结果
close_edgesclose_edgesCloseEdgesCloseEdgesCloseEdgesclose_edges 在所有参数正确时返回 2 (H_MSG_TRUE)。当输入为空时,可设置行为通过算子 set_system('no_object_result',<Result>)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>)。如有必要,则抛出异常。
可能的前趋
edges_imageedges_imageEdgesImageEdgesImageEdgesImageedges_image,
sobel_ampsobel_ampSobelAmpSobelAmpSobelAmpsobel_amp,
thresholdthresholdThresholdThresholdThresholdthreshold,
skeletonskeletonSkeletonSkeletonSkeletonskeleton
可能的后继
skeletonskeletonSkeletonSkeletonSkeletonskeleton
替代
close_edges_lengthclose_edges_lengthCloseEdgesLengthCloseEdgesLengthCloseEdgesLengthclose_edges_length,
dilation1dilation1Dilation1Dilation1Dilation1dilation1,
closingclosingClosingClosingClosingclosing
另见
gray_skeletongray_skeletonGraySkeletonGraySkeletonGraySkeletongray_skeleton
模块
基础