Remove single pixel width connecting lines between objects
6 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
回答 (1 件)
darova
2019 年 10 月 22 日
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 件のコメント
darova
2019 年 10 月 23 日
I'm afraid that i can't help. All i can advise is binarizing image and manipulating with graythersh
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!