Remove single pixel width connecting lines between objects
Afficher commentaires plus anciens
Hi all,
How can I remove/disconnect the connecting lines between objects while keeping the boundaries of my objects intact?

6 commentaires
KALYAN ACHARJYA
le 21 Oct 2019
As per previous discussion, have you tried with Morphological operations?
Haider Ali
le 21 Oct 2019
Matt J
le 21 Oct 2019
I recommend that you attach your image in a .mat file to speed things up.
Haider Ali
le 21 Oct 2019
Matt J
le 21 Oct 2019
An intriguing problem.
darova
le 22 Oct 2019
=)
Réponses (1)
darova
le 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;
end
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(II)
figure
imshow(I1 | ~I6)
The result: Green lines/walls removed, Yellow areas detected

2 commentaires
Haider Ali
le 22 Oct 2019
darova
le 23 Oct 2019
I'm afraid that i can't help. All i can advise is binarizing image and manipulating with graythersh
Catégories
En savoir plus sur Image Thresholding dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!