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!
Finding Affine Transformations
Started by nomad421, Aug 01 2008 10:10 PM
7 replies to this topic
#1
Posted 01 August 2008 - 10:10 PM
#2
Posted 01 August 2008 - 11:00 PM
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.
reedbeta.com - developer blog, OpenGL demos, and other projects
#3
Posted 02 August 2008 - 01:42 AM
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.
#4
Posted 02 August 2008 - 01:45 AM
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.
reedbeta.com - developer blog, OpenGL demos, and other projects
#5
Posted 02 August 2008 - 10:24 AM
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.
#6
Posted 02 August 2008 - 02:40 PM
That sounds interesting... do you remember the title or the authors ?
#7
Posted 02 August 2008 - 04:30 PM
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:
Quote
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.
3 x 3 matrix Q. Here, “best” is in the sense of the smallest Frobenius norm of the difference R-Q.
#8
Posted 07 August 2008 - 01:21 PM
Did you try combining your method with a flexible optimization technique? Algorithms like Levenberg-Marquardt are quite accepting with regard to noise.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users












