Jump to content


- - - - -

Finding Affine Transformations


7 replies to this topic

#1 nomad421

    Member

  • Members
  • PipPip
  • 46 posts

Posted 01 August 2008 - 10:10 PM

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!

#2 Reedbeta

    DevMaster Staff

  • Administrators
  • 5340 posts
  • LocationSanta Clara, CA

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 nomad421

    Member

  • Members
  • PipPip
  • 46 posts

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 Reedbeta

    DevMaster Staff

  • Administrators
  • 5340 posts
  • LocationSanta Clara, CA

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 roel

    Senior Member

  • Members
  • PipPipPipPip
  • 698 posts

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 nomad421

    Member

  • Members
  • PipPip
  • 46 posts

Posted 02 August 2008 - 02:40 PM

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

#7 roel

    Senior Member

  • Members
  • PipPipPipPip
  • 698 posts

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.


#8 MrFrankly

    New Member

  • Members
  • Pip
  • 3 posts

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