Plotting lines in an efficient way.
2 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hi,
I'm detecting lines on an image by the Hough transform, when I use the function houghlines, it return me a struct that I called lines, containing the start and the end point of the lines detected, I'm plotting it by a foor loop:
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','red');
end
In this manner I obtain this result:

But plotting all the lines with the foor loop takes a lots of time.
In order to speed up, the process I have written the following code:
xy = [];
for k = 1:length(lines)
point1 = lines(k).point1;
point2 = lines(k).point2;
xy = [xy; lines(k).point1; lines(k).point2];
end
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','red');
But the result is:

How I have to modify the script in order to obtain, the same result of the first image?
0 commentaires
Réponse acceptée
Jan
le 8 Mar 2017
Modifié(e) : Jan
le 8 Mar 2017
It works without loops:
% Abbreviation of: [lines(:).point1; lines(:).point2] :
data = [lines.point1; lines.point2];
x = data(:, 1:2:end);
y = data(:, 2:2:end);
plot(x, y, 'LineWidth', 2, 'Color', 'r');
3 commentaires
Jan
le 8 Mar 2017
Modifié(e) : Jan
le 8 Mar 2017
@KSSV: Thanks. Writing "+1" usually means, that one has voted for an answer. Currently my answer has 0 votes, so I assume, it is a general compliment. Thanks. I really appreciate the atmosphere of mutual cooperation in this forum.
I had tried 8 different versions, some contained reshape, transpose and cat, and NaNs also. Actually it would be interesting to see my worse approaches also as a tutorial, but this might look confusing in the forum.
Plus de réponses (1)
KSSV
le 8 Mar 2017
xy = [];
for k = 1:length(lines)
point1 = [lines(k).point1 NaN]; % if throws error try point1 = [lines(k).point1 ; NaN];
point2 = [lines(k).point2 NaN]; % if throws error try point1 = [lines(k).point2 ; NaN];
xy = [xy; point1; point2];
end
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','red');
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!