歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Matlab 二值圖像label regions

Matlab 二值圖像label regions

日期:2017/3/1 9:10:11   编辑:Linux編程

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]))

[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)));

Copyright © Linux教程網 All Rights Reserved