1

如果我有任何m x n白色区域的逻辑图像,如下所示:

区域的逻辑图像

如何获得白色和黑色区域之间边界线的索引?

4

2 回答 2

2

这简单地归结为检测给定图像的边缘。edgeMATLAB 在命令中已经有一个内置的实现。I这是使用 Canny 过滤器检测图像边界的示例:

A = edge(I, 'canny');

结果图像中的非零元素A就是您所追求的。然后,您可以使用find来获取它们的索引。

于 2013-01-13T15:01:32.523 回答
1

由于您的输入是清晰的二进制图像,因此无需edge按照@EitanT 的建议使用。

使用形态学运算获得周长imdilateimerode并且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
于 2013-01-13T18:52:38.670 回答