Tracing one line image

9 views (last 30 days)
anouar atmn
anouar atmn on 22 Dec 2021
Edited: Image Analyst on 22 Dec 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!!

Answers (2)

Matt J
Matt J on 22 Dec 2021
Edited: Matt J on 22 Dec 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 Comments
Matt J
Matt J on 22 Dec 2021
Edited: Matt J on 22 Dec 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 on 22 Dec 2021
This is an example of what im trying to trace

Sign in to comment.


Image Analyst
Image Analyst on 22 Dec 2021
Edited: Image Analyst on 22 Dec 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!