How to rotate or align point cloud ?
Show older comments
Excuse me everyone! I have point cloud as shown in the figure. I want to rotate to the horizontal plane. The rotation point is the middle. How can I do it ? Thank you very much.

Accepted Answer
More Answers (1)
Image Analyst
on 25 Dec 2021
You forgot to attach your data, which would have made it easier.
So I'd guess at something like
% Fit a line through the data.
coefficients = polyfit(x, y, 1);
% Then get the mean y
meany = mean(y);
% Get a fitted y
fittedy = polyval(coefficients, x);
% Then subtract the fitted values and add the vertical offset.
rotatedy = y - fittedy + meany;
plot(x, rotatedy, '.', 'MarkerSize', 10);
9 Comments
Lyhour Chhay
on 25 Dec 2021
Edited: Lyhour Chhay
on 25 Dec 2021
Image Analyst
on 25 Dec 2021
I'm not going to type all that in. Did you try my code? If not, why not?
You can attach the variable in a .mat file
save('answers.mat', 'plyRoi');
if you still need help.
Lyhour Chhay
on 25 Dec 2021
Image Analyst
on 25 Dec 2021
Edited: Image Analyst
on 25 Dec 2021
In that data, which N-by-3 matrix is actually the xyz data? Location? Normal?

Lyhour Chhay
on 25 Dec 2021
Image Analyst
on 25 Dec 2021
Once all the data is plotted, I can see it's more like a plane. I think you're best off fitting it to a plane like Matt says, then find the normal to the fitted plane values and use that to rotate the point cloud to flatten/level it.
Lyhour Chhay
on 25 Dec 2021
Image Analyst
on 25 Dec 2021
Well give him time - it is Christmas Day after all. 🎅
Lyhour Chhay
on 26 Dec 2021
Categories
Find more on Data Distribution Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!





