POCShift

Estimates the translation between two noisy images with phase-only correlation.

You are now following this Submission

Phase-only correlation is broadly used to correct pure translation shift between two images. This code uses a frequency domain-filtering to handle noise.
Usage:
shift=POCShift(fixed, moving); % for a max cut-off of 60%
shift=POCShift(fixed, moving, C); % with 0<C<1 for a max cut-off of 100*C%
shift=POCShift(fixed, moving, 0); % to disable filtering

'fixed' and 'moving' must be of consistent size.
The algorithm works as follows:

1. The FFT of both images is calculated as well as the normalized cross spectrum R.
2. The inverse Fourier transform r of a low-pass filtered R is computed with a cut-off frequency varying from 5% to 'cutoff' (default is 60%). Use cutoff=0 to disable filtering.
3. The translation is computed from the position of the peak in r
Ref: Takita et al. High-accuracy subpixel image registration based on phase-only correlation IEICE transactions on fundamentals of electronics, communications and computer sciences 86(8), 1925-1934, 2003.

Cite As

Jérémie Guignard (2026). POCShift (https://nl.mathworks.com/matlabcentral/fileexchange/46978-pocshift), MATLAB Central File Exchange. Retrieved .

Acknowledgements

Inspired by: ExtPhaseCorrelation

General Information

MATLAB Release Compatibility

  • Compatible with any release

Platform Compatibility

  • Windows
  • macOS
  • Linux
Version Published Release Notes Action
1.2.0.0

Input parser added for robustness.

1.1.0.0

Fixed description formatting, added to watch list.

1.0.0.0