phase_correlation_fftphase_correlation_fftPhaseCorrelationFftPhaseCorrelationFftphase_correlation_fft (Operator)

Name

phase_correlation_fftphase_correlation_fftPhaseCorrelationFftPhaseCorrelationFftphase_correlation_fft — Compute the phase correlation of two images in the frequency domain.

Signature

phase_correlation_fft(ImageFFT1, ImageFFT2 : ImagePhaseCorrelation : : )

Herror phase_correlation_fft(const Hobject ImageFFT1, const Hobject ImageFFT2, Hobject* ImagePhaseCorrelation)

Herror T_phase_correlation_fft(const Hobject ImageFFT1, const Hobject ImageFFT2, Hobject* ImagePhaseCorrelation)

void PhaseCorrelationFft(const HObject& ImageFFT1, const HObject& ImageFFT2, HObject* ImagePhaseCorrelation)

HImage HImage::PhaseCorrelationFft(const HImage& ImageFFT2) const

static void HOperatorSet.PhaseCorrelationFft(HObject imageFFT1, HObject imageFFT2, out HObject imagePhaseCorrelation)

HImage HImage.PhaseCorrelationFft(HImage imageFFT2)

def phase_correlation_fft(image_fft1: HObject, image_fft2: HObject) -> HObject

Description

phase_correlation_fftphase_correlation_fftPhaseCorrelationFftPhaseCorrelationFftPhaseCorrelationFftphase_correlation_fft calculates the phase correlation of the Fourier-transformed input images in the frequency domain. The phase correlation is calculated by multiplying ImageFFT1ImageFFT1ImageFFT1ImageFFT1imageFFT1image_fft1 with the complex conjugate of ImageFFT2ImageFFT2ImageFFT2ImageFFT2imageFFT2image_fft2 and dividing by the absolute value of this product. It should be noted that in order to achieve a correct scaling of the phase correlation in the spatial domain, the operators fft_genericfft_genericFftGenericFftGenericFftGenericfft_generic or rft_genericrft_genericRftGenericRftGenericRftGenericrft_generic with NormNormNormNormnormnorm = 'none'"none""none""none""none""none" must be used for the forward transform and fft_genericfft_genericFftGenericFftGenericFftGenericfft_generic or rft_genericrft_genericRftGenericRftGenericRftGenericrft_generic with NormNormNormNormnormnorm = 'n'"n""n""n""n""n" for the reverse transform. If ImageFFT1ImageFFT1ImageFFT1ImageFFT1imageFFT1image_fft1 and ImageFFT2ImageFFT2ImageFFT2ImageFFT2imageFFT2image_fft2 contain the same number of images, the corresponding images are phase-correlated pairwise. Otherwise, ImageFFT2ImageFFT2ImageFFT2ImageFFT2imageFFT2image_fft2 must contain only one single image. In this case, the phase correlation is performed for each image of ImageFFT1ImageFFT1ImageFFT1ImageFFT1imageFFT1image_fft1 with ImageFFT2ImageFFT2ImageFFT2ImageFFT2imageFFT2image_fft2 .

Attention

The filtering is always performed on the entire image, i.e., the domain of the image is ignored.

Execution Information

Parameters

ImageFFT1ImageFFT1ImageFFT1ImageFFT1imageFFT1image_fft1 (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (complex)

Fourier-transformed input image 1.

ImageFFT2ImageFFT2ImageFFT2ImageFFT2imageFFT2image_fft2 (input_object)  (multichannel-)image(-array) objectHImageHObjectHImageHobject (complex)

Fourier-transformed input image 2.

Number of elements: ImageFFT2 == ImageFFT1 || ImageFFT2 == 1

ImagePhaseCorrelationImagePhaseCorrelationImagePhaseCorrelationImagePhaseCorrelationimagePhaseCorrelationimage_phase_correlation (output_object)  image(-array) objectHImageHObjectHImageHobject * (complex)

Phase correlation of the input images in the frequency domain.

Example (HDevelop)

* Compute the phase correlation of two images.
get_image_size(Image1,Width,Height)
rft_generic(Image1,ImageFFT1,'to_freq','none','complex',Width)
rft_generic(Image2,ImageFFT2,'to_freq','none','complex',Width)
phase_correlation_fft(ImageFFT1,ImageFFT2,PhaseCorrelationFFT)
rft_generic(PhaseCorrelationFFT,PhaseCorrelation,'from_freq','n', \
            'real',Width)
* Determine the translation between the two images.
local_max_sub_pix (PhaseCorrelation, 'facet', 1, 0.02, Row, Column)

Result

phase_correlation_fftphase_correlation_fftPhaseCorrelationFftPhaseCorrelationFftPhaseCorrelationFftphase_correlation_fft returns TRUE if all parameters are correct. If the input is empty the behavior can be set via set_system(::'no_object_result',<Result>:)set_system("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)SetSystem("no_object_result",<Result>)set_system("no_object_result",<Result>). If necessary, an exception is raised.

Possible Predecessors

fft_genericfft_genericFftGenericFftGenericFftGenericfft_generic, fft_imagefft_imageFftImageFftImageFftImagefft_image, rft_genericrft_genericRftGenericRftGenericRftGenericrft_generic

Possible Successors

fft_genericfft_genericFftGenericFftGenericFftGenericfft_generic, fft_image_invfft_image_invFftImageInvFftImageInvFftImageInvfft_image_inv, rft_genericrft_genericRftGenericRftGenericRftGenericrft_generic

Alternatives

correlation_fftcorrelation_fftCorrelationFftCorrelationFftCorrelationFftcorrelation_fft

References

C. D. Kuglin, D. C. Hines: “The Phase Correlation Image Alignment Method”; IEEE International Conference on Cybernetics and Society; pp. 163-165; 1975.

Module

Foundation