Matlab提供了现成的函数,可以快速实现二值图像的闭合区域标记,这里介绍三种常见情形:
连通区域(connected components):如下图所示的,包含几个联通的闭合区域
方法1:bwlabel
im = imread('label.png'); im_bin = im2bw(im, 0.5); lab = bwlabel(im_bin); imagesc(wcodemat(lab));方法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]));边界闭合区域(holes):如下图所示的,包含几个边界闭合的区域或称孔洞
方法1:imfill + bwlabel
im = imread('label2.png'); im_bin = im2bw(im, 0.5); fill = imfill(im_bin, 'holes'); lab = bwlabel(fill); imagesc(wcodemat(lab));方法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]))对于孔中有其他闭合区域的情形,分别使用以下四种方法,结果分别为:
[B,L] = bwboundaries(im_bin,'holes'); imshow(label2rgb(L, @jet, [.5 .5 .5]))