Borrar filtros
Borrar filtros

How to Close an Open Contour

14 visualizaciones (últimos 30 días)
Ashkan Javadzadegan
Ashkan Javadzadegan el 18 de Abr. de 2015
Comentada: Image Analyst el 25 de Jun. de 2020
Dear all, Attached image consists of two open contours. I would like to close these two contours. Please let me know if this is doable in Matlab.
Thanks Ashkan

Respuesta aceptada

Image Analyst
Image Analyst el 18 de Abr. de 2015
Skeletonize the blob with bwmorph(), then use bwmorph() again to find the endpoints. Use regionprops() to get coordinates of the skeleton so you know which endpoints belong to the same blob. Then use imline() to draw a line connecting the endpoints of each blob. Demo of imline used to burn a line into an image is attached. Please try these steps yourself first and come back with your code if you can't do it. Again, the rough steps are
bwmorph(binaryImage, 'skel', inf);
bwmorph(binaryImage, 'endpoints');
[labeledImage, numBlobs] = bwlabel(binaryImage);
measurements = regionprops(labeledImage, 'PixelList');
for k = 1 : numBlobs
% find endpoints of this blob, then
imline();
% etc
end
Finish it up (it shouldn't be too hard) and let me know of any problems.
  5 comentarios
Image Analyst
Image Analyst el 9 de Ag. de 2019
Didn't I outline the solution : use imline() to join the endpoints of each skeleton. Can't you find the endpoints of each blob? Hint: use ismember() or a for loop to find out which endpoints belong to regionprops(k).PixelList().
darova
darova el 25 de Jun. de 2020
i accepted the answer

Iniciar sesión para comentar.

Más respuestas (1)

Daniel Thomas
Daniel Thomas el 25 de Jun. de 2020
Don't "burn lines" with imline. Use insertShape instead to draw a line on an image. Additional trouble with insertShape is that it always produces RGB instead of grayscale. So you need to convert it to grayscale. Other than that, it works a lot better than "burning the lines."
  1 comentario
Image Analyst
Image Analyst el 25 de Jun. de 2020
It also requires the Computer Vision Toolbox.

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by