Tracing one line image

9 visualizaciones (últimos 30 días)
anouar atmn
anouar atmn el 22 de Dic. de 2021
Editada: Image Analyst el 22 de Dic. de 2021
Hi,
I need to trace a oneline image for a project. A one line image is an drawing/image made with just one line. Im trying to write a code that traces the line and exports this to x y coordinates, (an array). Does anyone have a clue how to do this?
Thank you!!

Respuestas (2)

Matt J
Matt J el 22 de Dic. de 2021
Editada: Matt J el 22 de Dic. de 2021
One way would be to use bwconvhull.
[x1,y1, x2,y2]=deal(5,6, 13,14); %the two end points
BW=false(20);
BW(y1,x1)=1;
BW(y2,x2)=1;
BW=bwconvhull(BW);
imshow(BW)
  3 comentarios
Matt J
Matt J el 22 de Dic. de 2021
Editada: Matt J el 22 de Dic. de 2021
I don't know what you mean by a complicated line. A line is a line (or rather a line segment) if and only if it is the convex hull of two points.
anouar atmn
anouar atmn el 22 de Dic. de 2021
This is an example of what im trying to trace

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 22 de Dic. de 2021
Editada: Image Analyst el 22 de Dic. de 2021
I'd first call edge with 'Canny' to get your edges. Then I'd label the edges so that you draw each edge one at a time
[labeledEdges, numCurves] = bwlabel(edgeImage);
Then for each one, get the coordinates and put them in a loop to draw them
hold on; % Don't let plotting blow away image.
for k = 1 : numCurves
thisCurve = ismember(labeledEdges, k);
[rows, columns] = find(thisCurve);
for k2 = 1 : length(rows)
plot(columns(k2), rows(k2), 'r.', 'MarkerSize', 10)
drawnow;
pause(0.2);
end
end
hold off;

Community Treasure Hunt

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

Start Hunting!

Translated by