Finding Affine Transformations

Ad97db76fd8eae1f8f343a80fb99fde8
0
nomad421 101 Aug 01, 2008 at 22:10

So this is my problem… I have two unstructured point clouds, containing different numbers of points, which have been sampled in a noisy manner. I want to find the “best” affine transformation between these sets of points. I’ve tried ICP, but the points are too noisy and I often fail to find enough pairs of points for the algorithm to succeed. I have a procedure to combine the sets once they are registered as closely as possible, but solving the registration problem in the presence of noise is very difficult. Does anyone have any suggestions, ideas, code? Thanks!

7 Replies

Please log in or register to post a reply.

A8433b04cb41dd57113740b779f61acb
0
Reedbeta 167 Aug 01, 2008 at 23:00

Maybe you could do some kind of PCA of the data and derive the affine transformation that maps one’s principal components into the others. If that’s not good enough, it could be a starting point for some kind of refinement. I’m not sure what ICP is.

Ad97db76fd8eae1f8f343a80fb99fde8
0
nomad421 101 Aug 02, 2008 at 01:42

That’s a good idea, maybe I’ll give it a try. ICP stands for Iterative Closest Point; a Google search will provide a ton of references. Basically, however, you find pairs of points from the different point clouds, and then find a transformation the minimizes the sum of squared distances. If you iterate this process (find close pairs of points, estimate the transformation in a least-squares sense, transform the points and repeat) you will eventually converge on a transformation. The problem is that when the point sets are noisy, as in my case, the independence of the sample noise makes it difficult to find pairs of points that agree on a distance minimizing transformation.

A8433b04cb41dd57113740b779f61acb
0
Reedbeta 167 Aug 02, 2008 at 01:45

Yeah, that sounds like it would be difficult to tune. Perhaps using the PCA approach to provide the initial guess for ICP will yield better results.

6aa952514ff4e5439df1e9e6d337b864
0
roel 101 Aug 02, 2008 at 10:24

I recently read something about obtaining a matrix with noisy data as input, and then creating the best (orthonormal) rotation matrix from it. To behonest, I skipped that part, maybe it is totally unrelated to your problem, but if you care I can try to find the text.

Ad97db76fd8eae1f8f343a80fb99fde8
0
nomad421 101 Aug 02, 2008 at 14:40

That sounds interesting… do you remember the title or the authors ?

6aa952514ff4e5439df1e9e6d337b864
0
roel 101 Aug 02, 2008 at 16:30

Yes, I found it: A Flexible New Technique for Camera Calibration, Appendix C. Now that I re-read it, I’m even less sure that it will be useful, anyway:

The problem considered in this section is to solve the best rotation matrix R to approximate a given
3 x 3 matrix Q. Here, “best” is in the sense of the smallest Frobenius norm of the difference R-Q.

E22976d4a7d2d9b5ad1ccee78f2c40b6
0
MrFrankly 101 Aug 07, 2008 at 13:21

Did you try combining your method with a flexible optimization technique? Algorithms like Levenberg-Marquardt are quite accepting with regard to noise.