point cloud rot in matlab
古いコメントを表示
Hello Matlab,
want to ask regarding 3D Point cloud. we have points with X, Y, Z. We are totally new at this work. With MatLab we want to have few references for point cloud rot.
Any one have reference or solution etc?
2 件のコメント
madhan ravi
2018 年 12 月 11 日
編集済み: madhan ravi
2018 年 12 月 11 日
It's truly impolite of you to close the question after someone has answered. If you keep closing the question it is sure that you won't get any help in the future.
madhan ravi
2018 年 12 月 12 日
In case if the OP removes the original question below is the original question:
Hello Matlab,
want to ask regarding 3D Point cloud. we have points with X, Y, Z. We are totally new at this work. With MatLab we want to have few references for point cloud rot.
Any one have reference or solution etc?
回答 (1 件)
Bruno Luong
2018 年 12 月 11 日
編集済み: Bruno Luong
2018 年 12 月 11 日

xyz=xlsread('PointClouds.xlsx',3);
% Find the rotation axis
xyzc = mean(xyz,1);
xyzr = xyz-xyzc;
[~,S,V] = svd(xyzr,0);
s = diag(S);
if abs(diff(s(1:2))) < abs(diff(s(2:3)))
k = 3;
else
k = 1;
end
V = V(:,circshift(1:3,3-k));
xyzr = xyzr*V;
% Same as in this thread
% https://fr.mathworks.com/matlabcentral/answers/435031-best-fit-rotation-axis-for-the-point-cloud?s_tid=prof_contriblnk
r=sqrt(sum(xyzr(:,1:2).^2,2));
z=xyzr(:,3);
P = polyfit(z,r,5);
zi = linspace(min(z),max(z),50);
ri = polyval(P,zi);
theta = linspace(0,2*pi,100);
[THETA,Z] = meshgrid(theta,zi);
R = polyval(P,Z);
[X,Y,Z] = pol2cart(THETA,R,Z);
% Rotate/shift back
[XYZ] = xyzc + [X(:),Y(:),Z(:)]*V';
X = reshape(XYZ(:,1),size(R));
Y = reshape(XYZ(:,2),size(R));
Z = reshape(XYZ(:,3),size(R));
close all
subplot(2,1,1);
plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.');
axis equal
subplot(2,1,2);
surf(X,Y,Z);
axis equal
2 件のコメント
Stephan
2018 年 12 月 11 日
+1
Bruno Luong
2018 年 12 月 12 日
Add here the data that OP has been removed
カテゴリ
ヘルプ センター および File Exchange で Process Point Clouds についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!