FourierFiltering

Support

Required licenses

EasyImage

Recommended images

Samples Images/EasyImage/dirty_switch.tif and Samples Images/EasyImage/mask.tif

Location

Image Processing/FourierFiltering

Purpose

This sample program demonstrates how to:

  • Compute the direct Fourier transform.

  • Compute the inverse Fourier transform.

The process steps are:

  1. Load a grayscale image and a mask.

  2. Compute the direct Fourier transform on the grayscale image.

  3. Apply the mask on the frequency domain of the image using the method Mask of the EFourierImage.

  4. Compute the inverse Fourier transform of this masked frequency image.

Code highlights

  1. Compute the direct Fourier transform.

    EImageBW8 grayscale; // should be already loaded
    
    EFourierImage frequencyImage(grayscale.GetWidth() * 2, grayscale.GetHeight());
    frequency.SetFrequentialDomainFormat(EFrequentialDomainFormat_ComplexExtended);
     
    EFourierTransformer fourier;
    fourier.DirectTransform(grayscale, frequency);
    frequencyImage.Shift(); // optional, depends on your mask
    
  2. Mask the image.

    EImageBW8 mask; // should be already loaded
    
    EFourierImage maskedFrequency;
    frequencyImage.Mask(maskedFrequency, mask);
    maskedFrequency.InverseShift(); // optional, depends on your mask
    
  3. Compute the inverse Fourier transform.

    EImageBW8 filtered;
    
    filtered.SetSize(grayscale.GetWidth(),grayscale.GetHeight());
    EFourierTransformer fourier;
    Fourier.InverseTransform(maskedFrequency, filtered);
    
  4. (Optional) Visualize the frequency image.

    EImageBW8 magnitude(grayscale.GetWidth(), grayscale.GetHeight());
    EImageBW8 phase(grayscale.GetWidth(), grayscale.GetHeight());
    
    frequencyImage.ComputeMagnitude(magnitude); // magnitude can now be saved or drawn using a draw adapter
    frequencyImage.ComputePhase(phase); // phase can now be saved or drawn using a draw adapter