From: Mark on
I am having trouble aligning two 3d point clouds representing a patella. They are not exactly the same shape or size. One is much smoother and more refined than the other. Each mesh is a 3xN and 3xM matrix, where M and N are different lengths, generally 6000-20000 points. I have already matched the centroids of the point clouds to get a rough alignment. Now I need to rotate on the x-axis to align them as close as possible. Currently, I am finding an angle on the x-axis that I can rotate one of the meshes to align to the 2nd mesh. I obtain a line from the maximum and minimum z values and that point's corresponding y values on each point cloud to create a line. I then find the angle between these two lines, and rotate one of the meshes about the origin and translate back to match centroids, attempting to match the other point cloud orientation. The goal is to have the point clouds aligned
about the x-axis, but this is yielding inconsistent results. Is there another method that perhaps I should try that I am unaware of? Any advice is appreciated.
From: Alan B on
"Mark " <mdlambach(a)gmail.com> wrote in message <i0b55g$6p7$1(a)fred.mathworks.com>...
> I am having trouble aligning two 3d point clouds representing a patella. They are not exactly the same shape or size. One is much smoother and more refined than the other. Each mesh is a 3xN and 3xM matrix, where M and N are different lengths, generally 6000-20000 points. I have already matched the centroids of the point clouds to get a rough alignment. Now I need to rotate on the x-axis to align them as close as possible. Currently, I am finding an angle on the x-axis that I can rotate one of the meshes to align to the 2nd mesh. I obtain a line from the maximum and minimum z values and that point's corresponding y values on each point cloud to create a line. I then find the angle between these two lines, and rotate one of the meshes about the origin and translate back to match centroids, attempting to match the other point cloud orientation. The goal is to have the point clouds
aligned
> about the x-axis, but this is yielding inconsistent results. Is there another method that perhaps I should try that I am unaware of? Any advice is appreciated.

I recently did something similar using principal component analysis to identify the "calibration axes" (or whatever you want to call it), and then align both clouds to the coordinate axes in the same sense. It worked well, but I had two point clouds that were the same size, and otherwise very similar to each other, so I don't know how well it would work for your problem.
From: ImageAnalyst on
There are lots of methods. Far too many to review here even if I did
know them. But they're all listed here:

http://iris.usc.edu/Vision-Notes/bibliography/contentsmatch-pl.html#Registration,%20Matching%20and%20Recognition%20Using%20Points,%20Lines,%20Regions,%20Areas,%20Surfaces

(Of course each author thinks their method is the best.)