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?
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:
Find image x in image y (use phase correlation in cartesian coordinates)
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.
Find FFT of x and y, say F(X) and F(y)
Find phase correlation of F(x) and F(y), call it R
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:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With