←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
Java
Objective-C
WinRT C#
C++
public sealed class FastFourierTransformCommand : Leadtools.Imageprocessing.Leadtools.ImageProcessing.IRasterCommand
@interface LTFastFourierTransformCommand : LTRasterCommand
public class FastFourierTransformCommand extends RasterCommand
function Leadtools.ImageProcessing.Core.FastFourierTransformCommand()

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
WinRT C#
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:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
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:\Users\Public\Documents\LEADTOOLS Images"; 
} 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Core; 
using Leadtools.ImageProcessing; 
 
       
public async Task FastFourierTransformCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
   // Load the image 
   string srcFileName = @"Assets\Image1.cmp"; 
   StorageFile loadFile = await Tools.AppInstallFolder.GetFileAsync(srcFileName); 
   RasterImage image = await codecs.LoadAsync(LeadStreamFactory.Create(loadFile)); 
 
   // 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 = LeadRectHelper.Create(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); 
 
} 

Requirements

Target Platforms

Products | Support | Contact Us | Copyright Notices
© 1991-2017 LEAD Technologies, Inc. All Rights Reserved.
Leadtools.ImageProcessing.Core Assembly
Click or drag to resize