[Insight-users] FFT

Luis Ibanez luis.ibanez at kitware.com
Fri Mar 28 13:03:24 EDT 2008


Hi Alexandre,

My mistake, I mean't to write "FFTWD"  not "FFTD".

 Sorry about that,


     Luis


-----------------------------
alexandre govignon wrote:
> Thanks i will try
> Is it FFTD or FFTW?
> 
>> This code seems to be based on the example:
>>
>>   Insight/Examples/Filtering/FFTImageFilter.cxx
>>
>> Could you please try the following:
>>
>>
>>   1) Reconfigure ITK with CMake and enable FFTD
>>
>>   2) Also from CMake, Enable building the  EXAMPLES
>>
>>   3) Build (only) the example: FFTImageFilter
>>
>>   4) Once you have the executable, run the following
>>      command:
>>
>>
>>      FFTImageFilter.exe
>>               Insight/Examples/Data/Circle.png
>>               CircleFFTReal.mhd
>>               CircleFFTImaginary.mhd
>>
>>  (all in a *single command line*)
>>
>>
>>
>>  This should generate the images FFTReal.mhd, and
>>  FFTImaginary.mhd (along with their .raw files).
>>
>>  You can view these files with the ImageViewer
>>  application, SNAP, ParaView, and/or Slicer.
>>
>>
>>  The output images will have 100x100 pixels,
>>  and will use pixel type "unsigned char".
>>
>>
>>
>> Please do this, and let us know if you run into
>> any problem. Then we will go from there...
>>
>>
>>
>>   Thanks
>>
>>
>>     Luis
>>
>>
>> ---------------------------
>> alexandre govignon wrote:
>> > 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