# Name

ccfpl - calculate the cross-correlation function between two images using padding with zeroes, multiplication in Fourier space, and normalization of the result by the actual number of pixels used for calculating the ccf coefficients.

# Usage

output = ccfpl(image, ref, center=True)

## Input

- image
- input image (real)
- ref
- second input image (real) (in the alignment problems, it should be the reference image).
- center
- if set to True (default), the origin of the result is at the center; if set to False, the origin is at (0,0), the option is much faster, but the result is difficult to use

## Output

- output
- cross-correlation function between image and ref. Real. The origin of the cross-correlation function (term ccf(0,0,0)) is located at (int[n/2], int[n/2], int[n/2]) in 3D, (int[n/2], int[n/2]) in 2D, and at int[n/2] in 1D.

# Method

In order to calculate the lag-normalized cross-correlation function between image

*f*and reference image*g*, first both image are padded with zeroes to twice the size. Next, Fourier transforms of both images are calculated, then their product in Fourier space as``hat(f)hat(g)^**``, then the inverse Fourier transform, the*ccf*is windowed out using the size of original images, and the resulting cross-correlation function is normalized by the lag, i.e., the actual number of pixels in image that entered the calculation.- In real space, this corresponds to:
``c\cfpl(n)=(nx)/(nx-|n|)sum_(k=0)^(nx-1)f(k+n)g(k)````n = -(nx)/2, ..., (nx)/2``with the assumption that

``g(k)=0 fo\r k<0 or kgenx``Note:

*ccfpl*is free from "wrap around" artifacts.

# Reference

Pratt, W. K., 1992. Digital image processing. Wiley, New York.

# Author / Maintainer

Pawel A. Penczek

# Keywords

- category 1
- FUNDAMENTALS
- category 2
- FOURIER

# Files

fundamentals.cpp

# Maturity

- stable
- works for most people, has been tested; test cases/examples available.

# Bugs

None. It is perfect.