Matlab 查找labelmap的多边形边界

Matlab 查找labelmap的多边形边界,matlab,svg,polygon,Matlab,Svg,Polygon,我有一个描述图像的labelmap矩阵。如图所示,在Matlab中通过 imshow(im,[]) 如何提取描述每个标签区域的多边形边界?对于所有标签,我将有一组多边形边界。提取所有这些多边形边界的最有效方法是什么?只需使用imcontour或bwbounders即可。以下是一个例子: % Get the values in your image val = unique(im); % Pre-allocate output C = cell(numel(val),1); % Here w

我有一个描述图像的labelmap矩阵。如图所示,在Matlab中通过

imshow(im,[])

如何提取描述每个标签区域的多边形边界?对于所有标签,我将有一组多边形边界。提取所有这些多边形边界的最有效方法是什么?

只需使用
imcontour
bwbounders
即可。以下是一个例子:

% Get the values in your image
val = unique(im);

% Pre-allocate output
C = cell(numel(val),1);

% Here we go
for i = 1:numel(val)
    C{i} = bwboundaries(im==val(i));
end
输出
C
将是一个单元格单元格,包含轮廓

注意:您的原始图像看起来像是对几个级别的原始图像的转换 灰色为了减少边界处的噪声,您可能需要考虑 使用
imfilter
filter
应用中值滤波器

“[B,L]=BW边界(BW,'noholes');”,这可能会对您有所帮助。“B”包含所有组件的边界值。