Leadtools.ImageProcessing.Core Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
FastFourierTransformCommand Class
See Also  Members   Example 
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


Syntax

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

Example

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

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

   Dim leadImage As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "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 Rectangle = New Rectangle(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)

   RasterCodecs.Shutdown()
End Sub
C#Copy Code
public void FastFourierTransformCommandExample() 

   // Load an image 
   RasterCodecs.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "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); 
   Rectangle rcRect = new Rectangle(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); 
 
   RasterCodecs.Shutdown(); 
}

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: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also