Clear Filters
Clear Filters

Get inidces for specific conditions from binary mask

1 view (last 30 days)
Dear MATLAB-Community,
I have a binary mask M (attached).
I would like to get the indices that match the following condition: Find all "1" that have at least one "0" as a neighboring entry.
I have tried a lot the last days but did not find a solution. It would be great if someone could help me with that.
Best regards!

Accepted Answer

Walter Roberson
Walter Roberson on 31 Oct 2021
NC = conv2(M, [1 1 1; 1 0 1; 1 1 1], 'same');
mask = M & (NC < 8);
%now you can find() on mask

More Answers (1)

Image Analyst
Image Analyst on 31 Oct 2021
There is a built-in function for this in the Image Processing Toolbox. It's called bwperim(). Full demo:
s = load('m.mat')
M = s.M;
subplot(2, 1, 1);
imshow(M, [])
axis('on', 'image')
% Find all 1 that have a zero as a neighbor.
% We can use bwperim() for this
perimImage = bwperim(M);
subplot(2, 1, 2);
imshow(perimImage, [])
axis('on', 'image')

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!