Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Thread Subject:
Aligning Point Clouds

Subject: Aligning Point Clouds

From: Mark

Date: 28 Jun, 2010 21:45:20

Message: 1 of 4

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.

Subject: Aligning Point Clouds

From: Alan B

Date: 28 Jun, 2010 21:58:04

Message: 2 of 4

"Mark " <mdlambach@gmail.com> wrote in message <i0b55g$6p7$1@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.

Subject: Aligning Point Clouds

From: ImageAnalyst

Date: 29 Jun, 2010 01:13:43

Message: 3 of 4

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.)

Subject: Aligning Point Clouds

From: Anusha

Date: 15 Dec, 2012 15:57:07

Message: 4 of 4

"Alan B" <monguin61REM@OVETHIS.yahoo.com> wrote in message <i0b5tc$o81$1@fred.mathworks.com>...
> "Mark " <mdlambach@gmail.com> wrote in message <i0b55g$6p7$1@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.

I have similar problem of aligning two point sets to a common principal axis. Hope to get more detailed explanations how to do it. Thnanks.

Tags for this Thread

No tags are associated with this thread.

What are tags?

A tag is like a keyword or category label associated with each thread. Tags make it easier for you to find threads of interest.

Anyone can tag a thread. Tags are public and visible to everyone.

Contact us