Matlab 二值图像label regions

Matlab提供了现成的函数,可以快速实现二值图像的闭合区域标记,这里介绍三种常见情形:

连通区域(connected components):如下图所示的,包含几个联通的闭合区域

1

方法1:bwlabel

im = imread('label.png'); im_bin = im2bw(im, 0.5); lab = bwlabel(im_bin); imagesc(wcodemat(lab));

2

方法2:bwboundaries

im = imread('label.png'); im_bin = im2bw(im, 0.5); [B,L] = bwboundaries(im_bin,'holes'); imshow(label2rgb(L, @jet, [.5 .5 .5]));

3

边界闭合区域(holes):如下图所示的,包含几个边界闭合的区域或称孔洞

4

方法1:imfill + bwlabel

im = imread('label2.png'); im_bin = im2bw(im, 0.5); fill = imfill(im_bin, 'holes'); lab = bwlabel(fill); imagesc(wcodemat(lab));

5

方法2:bwboundaries

im = imread('label2.png'); im_bin = im2bw(im, 0.5); [B,L] = bwboundaries(im_bin,'holes'); imshow(label2rgb(L, @jet, [.5 .5 .5]))

6

7

对于孔中有其他闭合区域的情形,分别使用以下四种方法,结果分别为:

[B,L] = bwboundaries(im_bin,'holes'); imshow(label2rgb(L, @jet, [.5 .5 .5]))

11

[B,L] = bwboundaries(im_bin,'noholes'); imshow(label2rgb(L, @jet, [.5 .5 .5]))

8

fill = imfill(im_bin, 'holes'); imagesc(wcodemat(bwlabel(fill)));

9

imagesc(wcodemat(bwlabel(im_bin)));

10

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8989b4b754906cdb626d8c08db4dfbd8.html