Matlab提供了现成的函数,可以快速实现二值图像的闭合区域标记,这里介绍三种常见情形:
- 连通区域(connected components):如下图所示的,包含几个联通的闭合区域
方法1:
bwlabelim = imread("label.png");im_bin = im2bw(im, 0.5);lab = bwlabel(im_bin);imagesc(wcodemat(lab));方法2:
bwboundariesim = 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 +
bwlabelim = imread("label2.png");im_bin = im2bw(im, 0.5);fill = imfill(im_bin, "holes");lab = bwlabel(fill);imagesc(wcodemat(lab));方法2:
bwboundariesim = 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]))[B,L] = bwboundaries(im_bin,"noholes");imshow(label2rgb(L, @jet, [.5 .5 .5]))fill = imfill(im_bin, "holes");imagesc(wcodemat(bwlabel(fill)));imagesc(wcodemat(bwlabel(im_bin)));本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/136770.htm<!-- Baidu Button BEGIN -->