How can I separate objects with one pixel connected after bwlabel

2 visualizaciones (últimos 30 días)
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.
Appriciate a lot if any suggestions are provided.

Respuesta aceptada

DGM
DGM el 22 de Abr. de 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)
  1 comentario
Zuhui Wang
Zuhui Wang el 23 de Abr. de 2022
Thank you DGM, that's a very nice solution for this problem. Good to learn how to use bwmorph :D

Iniciar sesión para comentar.

Más respuestas (2)

Matt J
Matt J el 23 de Abr. de 2022
load BW
L=watershed(-bwdist(~BW));
BW=BW&L~=0;
imshow(BW)

Image Analyst
Image Analyst el 23 de Abr. de 2022
  2 comentarios
Matt J
Matt J el 23 de Abr. de 2022
Seems hard to find a strel that will make imopen work well here.

Iniciar sesión para comentar.

Productos


Versión

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by