find out rotation using phase correlation in matla

2019-06-09 16:45发布

问题:

I just want to find out the rotation angle between two images (same images but only different thing is rotation) but I'm stuck in this problem for almost 3 weeks. The algorithm given at http://en.wikipedia.org/wiki/Phase_correlation is only using the radon transform and phase correlation method but it doesn't work. Anyone can help me?

回答1:

Typically, this kind of problem is solved with a Fourier-Mellin algorithm, Matlab implementation here.

A potential approach is the use of a log-polar transform prior to phase correlation. The log-polar sampling maps changes in uniform scaling and rotation into translations along the radial and circumferential axes. See the complete description of the algorithm in this paper:

Reddy, B. S. and Chatterji, B. N., An FFT-Based Technique for Translation, Rotation, and Scale-Invariant Image Registration, IEEE Transactions on Image Processing, Vol. 5, No. 8, August 1996

If you have the image processing toolbox r2014a or later, there is a built-in function that does exactly that, it's called imregcorr

If you don't have the toolbox, you can download the function to map an image in polar coordinates (for pure rotations). For scale and rotation, here is an implementation of the log-polar transform.