←Select platform

FastFourierTransformCommand Class

Summary
Computes the Fast Fourier Transform of an image or the Inverse Fast Fourier Transform as specified by flags.
Syntax
C#
VB
Objective-C
C++
Java
public class FastFourierTransformCommand : RasterCommand 
Public Class FastFourierTransformCommand  
   Inherits RasterCommand 
@interface LTFastFourierTransformCommand : LTRasterCommand 
public class FastFourierTransformCommand extends RasterCommand 
public ref class FastFourierTransformCommand : public RasterCommand   
Remarks

This command is available in the Imaging Pro and above toolkits.

  • This function converts the image from the time domain to the frequency domain and vice versa using a Fast Fourier Transform algorithm. Fast Fourier Transform algorithms are a simplification of a Discrete Fourier Transform and require that the image dimensions must be power of two (i.e. 2, 4, 8, 16, 32, etc). The number of computations needed are reduced from 2N2 to 2N LgN. Use the DiscreteFourierTransformCommand to use a Discrete Fourier Transform algorithm on an image. If you try to use this method with an image with dimensions that are not a power of two, the method will return an ERROR_INV_PARAMETER error, unless you use the padding flags as explained below.
  • Before using this command, you must create an instance of FourierTransformInformation
  • When using this command with an image where at least one of its dimensions is not a power of two, you must specify an extra flag when creating the FourierTransformInformation instance to pad the dimension(s) to the nearest power of two. If you try to use this method with an image whose dimensions are not a power of two and without specifying a padding flag, this method will return an ERROR_INV_PARAMETER error.
  • The image can be transformed back into the original image minus the noise using the InverseFastFourierTransform
  • This command does not work on regions. If the image has a region the method ignores it and processes the entire image.
  • This command does not support 12 and 16-bit grayscale and 48 and 64-bit color images. If the image is 12 and 16-bit grayscale and 48 and 64-bit color, the command will not threw an exception.
  • This command does not support 32-bit grayscale images.

For more information, refer to Removing Noise.

Example

Run the FastFourierTransformCommand on an image to apply a FFT transformation.

C#
VB
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:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.ImageProcessing 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
Public Sub FastFourierTransformCommandExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   Dim leadImage As RasterImage = 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. 
   Dim sizecommand As SizeCommand = New SizeCommand(256, 256, RasterSizeFlags.Bicubic) 
 
   sizecommand.Run(leadImage) 
 
   Dim FTArray As FourierTransformInformation = New FourierTransformInformation(leadImage) 
   ' Apply FFT. 
   Dim command As FastFourierTransformCommand = New FastFourierTransformCommand(FTArray, 
                                                                                FastFourierTransformCommandFlags.FastFourierTransform Or 
                                                                                FastFourierTransformCommandFlags.Gray) 
 
   command.Run(leadImage) 
   Dim rcRect As LeadRect = New LeadRect(0, 0, leadImage.Width \ 2, leadImage.Height \ 2) 
   Dim FreqCommand As FrequencyFilterCommand = New FrequencyFilterCommand(FTArray, rcRect, 
                                                                          FrequencyFilterCommandFlags.InsideX Or 
                                                                          FrequencyFilterCommandFlags.OutsideY) 
 
   Dim InvCommand As FastFourierTransformCommand = New FastFourierTransformCommand(FTArray, 
                                                                                   FastFourierTransformCommandFlags.InverseFastFourierTransform Or 
                                                                                   FastFourierTransformCommandFlags.Gray Or 
                                                                                   FastFourierTransformCommandFlags.Scale Or 
                                                                                   FastFourierTransformCommandFlags.Both) 
 
   InvCommand.Run(leadImage) 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

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

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