Remove single pixel width connecting lines between objects

7 views (last 30 days)
Hi all,
How can I remove/disconnect the connecting lines between objects while keeping the boundaries of my objects intact?

Sign in to comment.

Answers (1)

darova on 22 Oct 2019
Here is an idea: find large areas and merge them to remove walls
I = imread('image.png');
I1 = im2bw(I);
% I2 = bwmorph(~I1,'thin',3);
[I3,n] = bwlabel(I1,8); % label image
p = regionprops(I3,'Area'); % find area of each region
ar = cat(1,p.Area);
ind = find( 400 < ar & ar < 5000); % find interested areas
I4 = I3*0;
for i = 1:length(ind)
ix = find( I3==ind(i) ); % find pixels of interested areas
I4(ix) = 1;
I5 = imdilate(I4,ones(3)); % merge neigbouring areas
I6 = imdilate(~I5,ones(3)); % return original size of areas
II = cat(3,I1,~I6,I1*0);
imshow(I1 | ~I6)
The result: Green lines/walls removed, Yellow areas detected
darova on 23 Oct 2019
I'm afraid that i can't help. All i can advise is binarizing image and manipulating with graythersh

Sign in to comment.


Find more on Image Processing and Computer Vision 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!