Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Phase correlation

How can rotation angle be determined by phase correlation(using fft) of 2 images? The algorithm given in http://en.wikipedia.org/wiki/Phase_correlation returns linear shift, not angular. It also mentions images have to be converted to log-polar coordinates to compute rotation. How is this conversion achieved in python? And post conversion do the same steps of the algorithm hold?

like image 429
user340865 Avatar asked May 14 '10 02:05

user340865


1 Answers

Log polar transformation is actually rotation and scale invariant.. Rotation corresponds to shift in y axis and scaling corresponds to shift in x axis in log polar transformation

So simple steps are as follows for finding an image x in image y:

  1. Find image x in image y (use phase correlation in cartesian coordinates)

  2. Compute log polar transforms of both x and y (this is a whole other problem, see references below), make sure to center on the same feature in both images.

  3. Find FFT of x and y, say F(X) and F(y)

  4. Find phase correlation of F(x) and F(y), call it R

  5. Find the IFFT (inverse FFT) of R. The peak value of R corresponds to the rotation deviation in the Y Axis and to the Scaling deviation in the X Axis from the original Image.

References:

  1. http://etd.lsu.edu/docs/available/etd-07072005-113808/unrestricted/Thunuguntla_thesis.pdf
like image 74
S.Amar Nath Avatar answered Sep 22 '22 04:09

S.Amar Nath