[Insight-users] FFT

alexandre govignon govignon.alexandre at gmail.com
Fri Mar 28 11:20:05 EDT 2008


Hi Luis,
Thanks for reply,
VnlFFT and FFTW have the same following in code, except replace
itkVnlFFT by itkFFTW


My code with VNL is:

#if defined(_MSC_VER)
#pragma warning ( disable : 4786 )
#endif

#ifdef __BORLANDC__
#define ITK_LEAN_AND_MEAN
#endif


// Software Guide : BeginCodeSnippet
#include "itkImage.h"

#include "itkImageFileReader.h"
#include "itkImageFileWriter.h"

#include "itkVnlFFTRealToComplexConjugateImageFilter.h"

#include "itkComplexToRealImageFilter.h"
#include "itkComplexToImaginaryImageFilter.h"

#include "itkRescaleIntensityImageFilter.h"

#include <iostream>



int main(int argc, char * argv[])
{


  // FFT



    if( argc < 3 )
    {
        std::cerr << "Usage: " << argv[0] << " inputScalarImage
outputRealPartOfComplexImage outputRealImaginaryPartOfComplexImage" <<
std::endl;
    }




  typedef float PixelType;

  const unsigned int Dimension = 2;

  typedef itk::Image< PixelType, Dimension > ImageType;


  typedef itk::FFTRealToComplexConjugateImageFilter< PixelType,
Dimension > FFTFilterType;    //Filtre FFT r√(c)el √† complexe
conjugu√(c)

  FFTFilterType::Pointer fftFilter = FFTFilterType::New();    //
instanciation Filtre FFT



  typedef itk::ImageFileReader< ImageType > ReaderType;

  ReaderType::Pointer reader = ReaderType::New();

  reader->SetFileName( argv[1] );



  fftFilter->SetInput( reader->GetOutput() );
  try
    {

        fftFilter->Update();

    }

    catch( itk::ExceptionObject & excp )
    {

        std::cerr << "Error: " << std::endl;
        std::cerr << excp << std::endl;
        return EXIT_FAILURE;

    }



    typedef FFTFilterType::OutputImageType ComplexImageType;


    typedef itk::ImageFileWriter< ComplexImageType > ComplexWriterType;

    ComplexWriterType::Pointer complexWriter = ComplexWriterType::New();

    complexWriter->SetFileName("complexImage.mhd");

    complexWriter->SetInput( fftFilter->GetOutput() );



    try
    {

        complexWriter->Update();

    }

    catch( itk::ExceptionObject & excp )
    {

        std::cerr << "Error: " << std::endl;
        std::cerr << excp << std::endl;
        return EXIT_FAILURE;

    }


    typedef itk::ComplexToRealImageFilter< ComplexImageType, ImageType
> RealFilterType;

    RealFilterType::Pointer realFilter = RealFilterType::New();

    realFilter->SetInput( fftFilter->GetOutput() );


    typedef unsigned char WritePixelType;

    typedef itk::Image< WritePixelType, Dimension > WriteImageType;



    typedef itk::RescaleIntensityImageFilter<ImageType, WriteImageType
> RescaleFilterType;        // on d√(c)clare le r√(c)echelonnage

    RescaleFilterType::Pointer intensityRescaler =
RescaleFilterType::New();                    // instanciation du
pointeur sur le r√(c)echelonneur

    intensityRescaler->SetInput( realFilter->GetOutput() );

    intensityRescaler->SetOutputMinimum( 0 );

    intensityRescaler->SetOutputMaximum( 255 );

    typedef itk::ImageFileWriter< WriteImageType > WriterType;

    WriterType::Pointer writer = WriterType::New();

    writer->SetFileName( argv[2] );

    writer->SetInput( intensityRescaler->GetOutput() );

    try
    {

        writer->Update();

    }

    catch( itk::ExceptionObject & excp )
    {

        std::cerr << "Error writing the real image: " << std::endl;
        std::cerr << excp << std::endl;
        return EXIT_FAILURE;
    }

  return EXIT_SUCCESS;

}



Regards,
Alexandre



2008/3/28, Luis Ibanez <luis.ibanez at kitware.com>:
>
>  Hi Alexandre,
>
>  Have you tried the follwing examples ?
>
>
>     Insight/Examples/Filtering/
>               FFTDirectInverse.cxx
>               FFTDirectInverse2.cxx
>               FFTImageFilter.cxx
>               FFTImageFilterFourierDomainFiltering.cxx
>
>  They contribute three tests to the Nightly Dashboards.
>
>
>  --
>
>
>  Can you post to the list the code that you are currently using ?
>
>  Can you post in a public web site one of the typical images
>  that you want to process ?
>
>
>     Please let us know,
>
>
>         Thanks
>
>
>            Luis
>
>
>  -------------------------
>
> alexandre govignon wrote:
>  > I am desperate, i m trying to make a FFT and it doesn't work. I have
>  > tried is the same as the beginning. I obtained image in one scale of
>  > grey with VnlFFT and with FFTW. Moreover FFTW transform square image in
>  > rectangular image. Are there anybody who can help me?
>  >
>  > --
>  > Cordialement,
>  > Alexandre Govignon.
>  >
>  >
>
> > ------------------------------------------------------------------------
>  >
>  > _______________________________________________
>  > Insight-users mailing list
>  > Insight-users at itk.org
>  > http://www.itk.org/mailman/listinfo/insight-users
>


More information about the Insight-users mailing list