[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