How to remove unconnected pixels or objects from an image

16 visualizaciones (últimos 30 días)
vidya
vidya el 21 de En. de 2014
Editada: DGM el 14 de Feb. de 2023
good day all.. i have an image with many unconnected vessels..of pixels i want to remove those pixels how an i do it?

Respuesta aceptada

Walter Roberson
Walter Roberson el 21 de En. de 2014
bwareaopen()
See also bwmorph
  5 comentarios
Shri.s
Shri.s el 6 de Dic. de 2022
use bwareaopen(BW); to remove unexpected things...
Image Analyst
Image Analyst el 6 de Dic. de 2022
@Shri.s, yes this was mentioned by @Walter Roberson and tried by @vidya. Did you click the link to show the hidden comments? The original poster said "even after using bwareaopen there are still some unconnected pixels in my image".
Now, since then, we don't need the code I attached above, we can use bwareafilt. For example to extract the 3 largest blobs we can do
bw = bwareafilt(bw, 3);

Iniciar sesión para comentar.

Más respuestas (1)

Image Analyst
Image Analyst el 5 de Feb. de 2014
OK, attached (below in blue text) is code that will get the largest network of vessels.
  19 comentarios
Quoc Anh Vu
Quoc Anh Vu el 29 de Nov. de 2022
Editada: DGM el 14 de Feb. de 2023
Dear sir Image Analyst,
im working on extracting blood vessels on colposcopic image, but after segmentation, the result still has many unexpected objects, i want to keep structures i circled in below image, could you please help me to remove others , i've tried bwareafilt(), bwareaopen, but it didn't work. Thank you so much!
Image Analyst
Image Analyst el 29 de Nov. de 2022
Movida: DGM el 14 de Feb. de 2023
I'm not sure what about the 30 or so blobs you want to keep is unique about them. Evidently you say it's not their size, or at least not their size alone.
If you want all blobs within a certain distance of the large blobs, perhaps you can use bwareafilt to extract the largest blobs and then dilate the large blobs to get a larger region around them, then erase use imreconstruct to extract those blobs inside or connected to the large blob. Something like
se = strel('disk', 200, 8);
bigMask = imdilate(mask, se);
newMask = imreconstruct(bigMask, mask);

Iniciar sesión para comentar.

Categorías

Más información sobre Retinal Imaging en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by