←Select platform

DiscreteFourierTransformCommand Class

Summary

Computes the Discrete Fourier transform of an image or the Inverse Discrete Fourier transform as specified by the flags.

Syntax

C#
VB
Objective-C
WinRT C#
C++
public sealed class DiscreteFourierTransformCommand : Leadtools.Imageprocessing.Leadtools.ImageProcessing.IRasterCommand
@interface LTDiscreteFourierTransformCommand : LTRasterCommand
function Leadtools.ImageProcessing.Core.DiscreteFourierTransformCommand()

Remarks

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

  • This command converts the image from the time domain to the frequency domain and vice versa using the Discrete Fourier Transform algorithm. Use the FastFourierTransformCommand to use a Fast Fourier Transform algorithm on an image.
  • Before using this command, you need to construct an instance from FourierTransformInformation.
  • The image can be transformed back into the original image minus the noise using the InverseDiscreteFourierTransform
  • This command does not work on regions. If the image has a region the command 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 method will not threw an exception.
  • This command does not support 32-bit grayscale images.
  • This command does not support signed images.

*Calculating Master Channel Values

In order to speed up widely used image processing filters in LEADTOOLS, the grayscale value (master channel) of a colored image is calculated using the following formulas:

#define CalcGrayValue(r, g, b) ((L_UCHAR)(((L_UCHAR) (((2 * (L_UINT) (r)) + (5 * (L_UINT) (g)) + (L_UINT) (b) + 4) / 8)))) 
#define CalcGrayValue16(r, g, b) ((L_UINT16) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8)) 
#define CalcGrayValue32(r, g, b) ((L_UINT32) (((2 * (L_UINT32) (r)) + (5 * (L_UINT32) (g)) + (L_UINT32) (b) + 4) / 8)) 

For more information, refer to Removing Noise.

Example

Run the DiscreteFourierTransformCommand on an image.

C#
VB
WinRT C#
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Core 
 
    
Public Sub DiscreteFourierTransformCommandExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg")) 
 
   ' Prepare the command 
   Dim FTArray As FourierTransformInformation = New FourierTransformInformation(leadImage) 
   Dim rcRange As LeadRect = New LeadRect(0, 0, leadImage.Width - 1, leadImage.Height - 1) 
   Dim command As DiscreteFourierTransformCommand = New DiscreteFourierTransformCommand 
 
   command.FourierTransformInformation = FTArray 
   command.Range = rcRange 
   command.Flags = DiscreteFourierTransformCommandFlags.DiscreteFourierTransform Or _ 
      DiscreteFourierTransformCommandFlags.Gray Or _ 
      DiscreteFourierTransformCommandFlags.Range Or _ 
      DiscreteFourierTransformCommandFlags.InsideX Or _ 
      DiscreteFourierTransformCommandFlags.InsideY 
   'Apply DFT. 
   command.Run(leadImage) 
 
   Dim disCommand As FourierTransformDisplayCommand = New FourierTransformDisplayCommand 
   disCommand.Flags = FourierTransformDisplayCommandFlags.Log Or FourierTransformDisplayCommandFlags.Magnitude 
   disCommand.FourierTransformInformation = command.FourierTransformInformation 
   'plot frequency magnitude 
   disCommand.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.Codecs; 
using Leadtools.ImageProcessing.Core; 
 
       
public void DiscreteFourierTransformCommandExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Master.jpg")); 
 
   // Prepare the command 
   FourierTransformInformation FTArray = new FourierTransformInformation(image); 
   LeadRect rcRange = new LeadRect(0, 0, image.Width - 1, image.Height - 1); 
   DiscreteFourierTransformCommand command = new DiscreteFourierTransformCommand(); 
 
   command.FourierTransformInformation = FTArray; 
   command.Range = rcRange; 
   command.Flags = DiscreteFourierTransformCommandFlags.DiscreteFourierTransform |  
      DiscreteFourierTransformCommandFlags.Gray    |  
      DiscreteFourierTransformCommandFlags.Range   |  
      DiscreteFourierTransformCommandFlags.InsideX |  
      DiscreteFourierTransformCommandFlags.InsideY; 
   //Apply DFT. 
 
   FourierTransformDisplayCommand disCommand = new FourierTransformDisplayCommand(); 
   disCommand.Flags = FourierTransformDisplayCommandFlags.Log|  FourierTransformDisplayCommandFlags.Magnitude; 
   disCommand.FourierTransformInformation = command.FourierTransformInformation; 
   // plot frequency magnitude 
   disCommand.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; 
 
       
public async Task DiscreteFourierTransformCommandExample() 
{ 
   // 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 
   FourierTransformInformation FTArray = new FourierTransformInformation(image); 
   LeadRect rcRange = LeadRectHelper.Create(0, 0, image.Width - 1, image.Height - 1); 
   DiscreteFourierTransformCommand command = new DiscreteFourierTransformCommand(); 
 
   command.FourierTransformInformation = FTArray; 
   command.Range = rcRange; 
   command.Flags = DiscreteFourierTransformCommandFlags.DiscreteFourierTransform |  
      DiscreteFourierTransformCommandFlags.Gray    |  
      DiscreteFourierTransformCommandFlags.Range   |  
      DiscreteFourierTransformCommandFlags.InsideX |  
      DiscreteFourierTransformCommandFlags.InsideY; 
   //Apply DFT. 
 
   FourierTransformDisplayCommand disCommand = new FourierTransformDisplayCommand(); 
   disCommand.Flags = FourierTransformDisplayCommandFlags.Log|  FourierTransformDisplayCommandFlags.Magnitude; 
   disCommand.FourierTransformInformation = command.FourierTransformInformation; 
   // plot frequency magnitude 
   disCommand.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