←Select platform

FourierTransformInformation Class

Summary
The FourierTransformInformation class contains information about the complex 2D array that will hold the frequency components of the image.
Syntax
C#
Objective-C
C++/CLI
Java
Python
public class FourierTransformInformation : IDisposable 
@interface LTFourierTransformInformation : NSObject 
public class FourierTransformInformation 
public ref class FourierTransformInformation : public System.IDisposable   
class FourierTransformInformation(IDisposable): 
Remarks

The Fourier Transform commands return an instance of FourierTransformInformation. This object holds all the frequency domain information (harmonics information). Each Data element holds the information about the harmonic frequency at its location. This information is an instance of the Complex structure, which contains the real and imaginary values of the harmonic.

To obtain the magnitude, take the square root of the sum of the squared real and imaginary values.

To calculate the phase, find the arctan of (imaginary/real).

To get/set the value of a harmonic at a specific location, use the GetDataOf / SetData methods. (0,0) is the first element.

The frequency harmonics are sorted as follows:

LowX LowY---------HighXLowY----------LowXLowY 
|                     |                  | 
|                     |                  | 
|                     |                  | 
|                     |                  | 
|                     |                  | 
|                     |                  | 
LowXHighY---------HighXHighY---------LowXHighY 
 
|                     |                  | 
|                     |                  | 
|                     |                  | 
|                     |                  | 
|                     |                  | 
LowXLowY----------HighXLowY----------LowXLowY 

This structure is used only by the Fourier Transform methods:

This command does not support 32-bit grayscale images.

Example
C#
Java
using Leadtools; 
using Leadtools.ImageProcessing; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
public void FastFourierTransformCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, @"ImageProcessingDemo\FourierTransform.jpg")); 
 
   // Prepare the command 
   // Resize the image to make sure the image's dimensions are power of two. 
   SizeCommand sizecommand = new SizeCommand(256, 256, Leadtools.RasterSizeFlags.Bicubic); 
 
   sizecommand.Run(image); 
 
   FourierTransformInformation FTArray = new FourierTransformInformation(image); 
   // Apply FFT. 
   FastFourierTransformCommand command = new FastFourierTransformCommand(FTArray, FastFourierTransformCommandFlags.FastFourierTransform | FastFourierTransformCommandFlags.Gray); 
   command.Run(image); 
   LeadRect rcRect = new LeadRect(0, 0, image.Width / 2, image.Height / 2); 
   FrequencyFilterCommand FreqCommand = new FrequencyFilterCommand(FTArray, rcRect, FrequencyFilterCommandFlags.InsideX | FrequencyFilterCommandFlags.OutsideY); 
 
   FastFourierTransformCommand InvCommand = new FastFourierTransformCommand(FTArray, FastFourierTransformCommandFlags.InverseFastFourierTransform | FastFourierTransformCommandFlags.Gray | FastFourierTransformCommandFlags.Scale | 
         FastFourierTransformCommandFlags.Both); 
   InvCommand.Run(image); 
 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
 
import java.io.File; 
import java.io.IOException; 
 
import org.junit.*; 
import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 
import static org.junit.Assert.assertTrue; 
 
import leadtools.*; 
import leadtools.codecs.*; 
import leadtools.imageprocessing.*; 
import leadtools.imageprocessing.core.*; 
 
 
public void fastFourierTransformCommandExample() { 
    final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images"; 
 
    // Load an image 
    RasterCodecs codecs = new RasterCodecs(); 
    codecs.setThrowExceptionsOnInvalidImages(true); 
 
    RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "FourierTransform.jpg")); 
 
    // Prepare the command 
    // Resize the image to make sure the image's dimensions are power of two. 
    SizeCommand sizeCommand = new SizeCommand(256, 256, RasterSizeFlags.BICUBIC.getValue()); 
    sizeCommand.run(image); 
 
    FourierTransformInformation ftArray = new FourierTransformInformation(image); 
 
    // Apply FFT. 
    FastFourierTransformCommand command = new FastFourierTransformCommand(); 
    command.setFourierTransformInformation(ftArray); 
    command.setFlags(FastFourierTransformCommandFlags.FAST_FOURIER_TRANSFORM.getValue() 
            | FastFourierTransformCommandFlags.GRAY.getValue()); 
    command.run(image); 
 
    FastFourierTransformCommand invCommand = new FastFourierTransformCommand(ftArray, 
            FastFourierTransformCommandFlags.INVERSE_FAST_FOURIER_TRANSFORM.getValue() 
                    | FastFourierTransformCommandFlags.GRAY.getValue() 
                    | FastFourierTransformCommandFlags.SCALE.getValue() 
                    | FastFourierTransformCommandFlags.BOTH.getValue()); 
    invCommand.run(image); 
 
    // Save the image 
    String outputFileName = combine(LEAD_VARS_IMAGES_DIR, "FourierTransform_constructorResult.jpg"); 
    codecs.save(image, outputFileName, RasterImageFormat.JPEG, 0); 
 
    System.out.println("Command run and image saved to " + outputFileName); 
    assertTrue(new File(outputFileName).exists()); 
} 
Requirements

Target Platforms

Help Version 23.0.2024.3.3
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Core Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.