detect the centerline of 3D data points
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hello, everyone. I am trying to detect the centerline of a set of 3D points. These 3D points are plotted and the figure is attached.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/167466/image.jpeg)
Does anybody know how to detect the centerline of these 3D data points. The equation of this centerline may be z = k1*x+k2*y+b; The coordinates of the 3D points are stored in X, Y, Z.
3 commentaires
Matt J
le 8 Déc 2017
Do the points lie on the surface of a circular cylinder, or some more general surface?
Réponse acceptée
Matt J
le 8 Déc 2017
Modifié(e) : Matt J
le 8 Déc 2017
If the parametric equations for the line is L(t)=m+t*d, the following should give a good estimate of m and d, as long as the sampling of the surface is uniformly distributed,
A=[X(:),Y(:),Z(:)];
m=mean(A,1).';
A=A-m.';
[~,~,V]=svd(A,0);
d=V(:,1);
8 commentaires
Matt J
le 20 Août 2019
Modifié(e) : Matt J
le 20 Août 2019
I am beginning to think it could be because the top and bottom edges of the cylinder are not perpendicular to the expected axis which is why there is the slight angle.
That would definitely contribute, but even more generally than that, we don't expect exact results when fitting noisy data.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Point Cloud Processing 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!