[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