Phase correlation

From Wikipedia, the free encyclopedia

In image processing, phase correlation is a fast frequency-domain approach to estimate the relative translative movement between two images.

Contents

[edit] Method

Given two input images \ g_a and \ g_b:

Apply a window function (e.g., a Hamming window) on both images to reduce edge effects. Then, calculate the discrete 2D Fourier transform of both images.

\ \mathbf{G}_a = \mathcal{F}\{g_a\}, \; \mathbf{G}_b = \mathcal{F}\{g_b\}

Calculate the cross-power spectrum by taking the complex conjugate of the second result, multiplying the Fourier transforms together elementwise, and normalizing this product elementwise.

\ R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}

Obtain the normalized cross-correlation by applying the inverse Fourier transform.

\ r = \mathcal{F}^{-1}\{R\}

Determine the location of the peak in \ r (possibly using sub-pixel edge detection).

\ (\Delta x, \Delta y) = \arg \max_{(x, y)}\{r\}

[edit] Rationale

The method is based on the Fourier shift theorem. Let the two images \ g_a and \ g_b be circularly-shifted versions of each other:

\ g_b(x,y) \ \stackrel{\mathrm{def}}{=}\   g_a((x - \Delta x) \bmod M, (y - \Delta y) \bmod N)

(where the images are \ M \times N in size).

Then, the discrete Fourier transforms of the images will be shifted relatively in phase:

\mathbf{G}_b(u,v) = \mathbf{G}_a(u,v) e^{-2 \pi i (\frac{u \Delta x}{M} + \frac{v \Delta y}{N}) }

One can then calculate the normalized cross-power spectrum to factor out the phase difference:


\begin{align}
  R(u,v) &= \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|} \\
         &= \frac{ \mathbf{G}_a \mathbf{G}_a^* e^{2 \pi i (\frac{u \Delta x}{M} + \frac{v \Delta y}{N}) }}{|\mathbf{G}_a \mathbf{G}_a^* e^{2 \pi i (\frac{u \Delta x}{M} + \frac{v \Delta y}{N}) }|} \\
         &= \frac{ \mathbf{G}_a \mathbf{G}_a^* e^{2 \pi i (\frac{u \Delta x}{M} + \frac{v \Delta y}{N}) }}{|\mathbf{G}_a \mathbf{G}_a^*|} \\
         &= e^{2 \pi i (\frac{u \Delta x}{M} + \frac{v \Delta y}{N}) }
\end{align}

since the magnitude of a complex exponential always is one, and the phase of \ \mathbf{G}_a \mathbf{G}_a^* always is zero.

The inverse Fourier transform of a complex exponential is a Kronecker delta, i.e. a single peak:

\ r(x,y) = \delta(x + \Delta x, y + \Delta y)

This result could have been obtained by calculating the cross correlation directly. The advantage of this method is that the discrete Fourier transform and its inverse can be performed using the fast Fourier transform, which is much faster than correlation for large images.

[edit] Limitations

In practice, it is more likely that \ g_b will be a simple linear shift of \ g_a, rather than a circular shift as required by the explanation above. In such cases, \ r will not be a simple delta function, which will reduce the performance of the method. In such cases, a window function should be employed during the Fourier transform to reduce edge effects. However, if the images consist of a flat background, with all detail situated away from the edges, then a linear shift will be equivalent to a circular shift, and the above derivation will hold exactly.

For periodic images (such as a chessboard), phase correlation may yield ambiguous results with several peaks in the resulting spectrum.

[edit] Example

The following image demonstrates the usage of phase correlation to determine relative translative movement between two images corrupted by independent Gaussian noise. One can clearly see a peak in the phase-correlation image approximately at (30,33). Image:Phase correlation.png

[edit] See also

[edit] References