Tracing one line image

9 ビュー (過去 30 日間)
anouar atmn
anouar atmn 2021 年 12 月 22 日
編集済み: Image Analyst 2021 年 12 月 22 日
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!!

回答 (2 件)

Matt J
Matt J 2021 年 12 月 22 日
編集済み: Matt J 2021 年 12 月 22 日
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 件のコメント
Matt J
Matt J 2021 年 12 月 22 日
編集済み: Matt J 2021 年 12 月 22 日
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 2021 年 12 月 22 日
This is an example of what im trying to trace

サインインしてコメントする。


Image Analyst
Image Analyst 2021 年 12 月 22 日
編集済み: Image Analyst 2021 年 12 月 22 日
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