如果我有任何m x n
白色区域的逻辑图像,如下所示:
如何获取白色和黑色区域之间的边界线的索引?
答案 0 :(得分:2)
这简单地归结为检测给定图像的边缘。 MATLAB已经在edge
命令中具有内置实现。以下是使用Canny过滤器检测图像I
边界的示例:
A = edge(I, 'canny');
结果图像A
中的非零元素就是您所追求的。然后,您可以使用find
获取其索引。
答案 1 :(得分:1)
由于您的输入是清晰的二进制图像,因此无需使用@EitanT建议的edge
。
使用形态学操作imdilate
,imerode
和regionprops
获取周界:
% let input image be bw
we = bw & ~imerode( bw, strel('disk', 1) ); % get a binary image with only the boundary pixels set
st = regionprops(we, 'PixelIdxList'); % get the linear indices of the boundary
% get a binary image with pixels on the outer side of the shape set
be = ~bw & imdilate( bw, strel('disk', 1) );
st = regionprops(be, 'PixelList'); % get the row-col indices of the boundary