Preserve the label information when extracing boundaries from label matrix
Show older comments
Hello, I would like to get the boundary labels when extracting boundaries from label matrix.
Right now, I understand that I can generate boundary masks from the following function:
bm = boundarymask(labelmatrix), however, the generated masks are binary, that is to say, I wouldn't know which mask correspond to what label. I am wondering if there is a way to preserve such information, so that I can know which boundary is for label 1, 2, 3..., etc.
Thanks in advance!
Answers (2)
You can do something like this:
A = imread('blobs.png');
L = bwlabel(A);
B = L.*boundarymask(L); % multiply
[min(L(:)) max(L(:))] % label array has 28 blobs
[min(B(:)) max(B(:))] % boundary array also has 28 labeled blob boundaries
clc; clear all; close all;
A = imread('kobi.png');
L = superpixels(A,100);
% label id
inds = sort(unique(L(:)));
% for every label id
mask = boundarymask(L);
figure
imshow(mask)
hold on;
for i = 1:length(inds)
maski = boundarymask(L==inds(i));
% display every label by different color
[ri,ci] = find(maski);
plot(ci,ri,'.','Color',rand(1,3))
end
Categories
Find more on Image Segmentation and Analysis in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!