Remove single pixel width connecting lines between objects
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi all,
How can I remove/disconnect the connecting lines between objects while keeping the boundaries of my objects intact?
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243824/image.png)
6 Kommentare
Antworten (1)
darova
am 22 Okt. 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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/243953/image.png)
2 Kommentare
darova
am 23 Okt. 2019
I'm afraid that i can't help. All i can advise is binarizing image and manipulating with graythersh
Siehe auch
Kategorien
Mehr zu Computer Vision with Simulink finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!