How can I separate objects with one pixel connected after bwlabel
23 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I am using bwlabel to label the objects with defined connectivity after edge detection algorithm. But sometimes I encountered the objects are connected with only one pixel. How could I efficiently separate them?
Below is one example of a binary image I want to detect objects. I chose connectivity 4 to detect the objects when using bwlabel
obj_label = bwlabel(BW, 4);
Actually these two are seperate objects that I want, but the one pixel between make them difficult to label when using bwlabel.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/974265/image.png)
Appriciate a lot if any suggestions are provided.
0 commentaires
Réponse acceptée
DGM
le 22 Avr 2022
Depending on what the rest of the blobs look like, this may be one way.
% fix the image and return it to what I assume the original size was
[A,map,~] = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/974265/image.png');
A = rgb2gray(ind2rgb(A,map))>0.5;
A = imresize(A,[30 30],'nearest');
imshow(A)
% remove foreground pixels which have at least two
% unconnected BG pixels in their 8-neighborhood
B = ~bwmorph(~A,'bridge');
imshow(B)
Plus de réponses (2)
Image Analyst
le 23 Avr 2022
You could try imopen() or watershed().
For a thorough discussion, see Steve's blog:
2 commentaires
Voir également
Catégories
En savoir plus sur Image Segmentation and Analysis dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!