LEADTOOLS Image Processing (Leadtools.ImageProcessing.Core assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.29
FastFourierTransformCommand Class
See Also  Members  
Leadtools.ImageProcessing.Core Namespace : FastFourierTransformCommand Class



Computes the Fast Fourier transform of an image or the Inverse Fast Fourier transform as specified by flags. This command is available in the Raster Pro and above toolkits.

Object Model

FastFourierTransformCommand ClassFourierTransformInformation Class

Syntax

Visual Basic (Declaration) 
Public Class FastFourierTransformCommand 
   Inherits Leadtools.ImageProcessing.RasterCommand
   Implements IRasterCommand 
Visual Basic (Usage)Copy Code
Dim instance As FastFourierTransformCommand
C# 
public class FastFourierTransformCommand : Leadtools.ImageProcessing.RasterCommand, IRasterCommand  
C++/CLI 
public ref class FastFourierTransformCommand : public Leadtools.ImageProcessing.RasterCommand, IRasterCommand  

Example

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

Visual BasicCopy Code
Public Sub FastFourierTransformCommandExample()
   Dim codecs As New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.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:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
public void FastFourierTransformCommandExample()
   {
      // Load an image
      RasterCodecs codecs = new RasterCodecs();
      codecs.ThrowExceptionsOnInvalidImages = true;

      RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.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:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
SilverlightVBCopy Code

Remarks

  • This command 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.
  • Before using this command, you must create an instance of FourierTransformInformation
  • 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.

Inheritance Hierarchy

System.Object
   Leadtools.ImageProcessing.RasterCommand
      Leadtools.ImageProcessing.Core.FastFourierTransformCommand

Requirements

Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)

See Also