3434#include " itkImage.h"
3535#include " itkImageFileReader.h"
3636#include " itkImageFileWriter.h"
37+ #include " itkCastImageFilter.h"
38+ #include " itkNumberToString.h"
3739
3840#include " itkTestingMacros.h"
3941
4244// Visualize for dev/debug purposes. Set in cmake file. Requires VTK
4345#ifdef ITK_VISUALIZE_TESTS
4446#include " itkViewImage.h"
45- #include " itkNumberToString.h"
4647#endif
4748
49+ std::string
50+ AppendToFilenameRiesz (const std::string& filename, const std::string & appendix)
51+ {
52+ std::size_t foundDot = filename.find_last_of (' .' );
53+ return filename.substr ( 0 , foundDot ) + appendix + filename.substr ( foundDot );
54+ }
55+
4856// 1. Wavelet analysis (forward) on input image.
4957// 2. Create a Monogenic Signal (from Riesz function ) on each wavelet output..
5058// 3. Do a PhaseAnalysis on each Monogenic Signal.
5462template < unsigned int VDimension, typename TWaveletFunction >
5563int
5664runRieszWaveletPhaseAnalysisTest ( const std::string& inputImage,
57- const std::string &, // outputImage
65+ const std::string & outputImage,
5866 const unsigned int & inputLevels,
5967 const unsigned int & inputBands,
6068 const bool applySoftThreshold)
@@ -65,6 +73,7 @@ runRieszWaveletPhaseAnalysisTest( const std::string& inputImage,
6573 typedef itk::Image< PixelType, Dimension > ImageType;
6674 typedef itk::ImageFileReader< ImageType > ReaderType;
6775
76+ itk::NumberToString< unsigned int > n2s;
6877 typename ReaderType::Pointer reader = ReaderType::New ();
6978 reader->SetFileName ( inputImage );
7079 reader->Update ();
@@ -153,7 +162,6 @@ runRieszWaveletPhaseAnalysisTest( const std::string& inputImage,
153162 {
154163 for ( unsigned int i = 0 ; i < forwardWavelet->GetNumberOfOutputs (); ++i )
155164 {
156- itk::NumberToString< unsigned int > n2s;
157165 typename InverseFFTFilterType::Pointer inverseFFT = InverseFFTFilterType::New ();
158166 inverseFFT->SetInput (analysisWavelets[i]);
159167 inverseFFT->Update ();
@@ -184,12 +192,22 @@ runRieszWaveletPhaseAnalysisTest( const std::string& inputImage,
184192 itk::Testing::ViewImage ( inverseFFT->GetOutput (), " Inverse Wavelet" );
185193#endif
186194
195+ // Cast To Float for save as tiff.
196+ typedef itk::Image< float , Dimension > ImageFloatType;
197+ typedef itk::CastImageFilter< ImageType, ImageFloatType> CastFloatType;
198+ typename CastFloatType::Pointer caster = CastFloatType::New ();
199+ caster->SetInput (inverseFFT->GetOutput ());
200+ caster->Update ();
201+
187202 // typedef itk::ImageFileWriter< typename InverseFFTFilterType::OutputImageType > WriterType;
188- // typename WriterType::Pointer writer = WriterType::New();
189- // writer->SetFileName( outputImage );
190- // writer->SetInput( inverseFFT->GetOutput() );
191- //
192- // TRY_EXPECT_NO_EXCEPTION( writer->Update() );
203+ typedef itk::ImageFileWriter< ImageFloatType > WriterType;
204+ typename WriterType::Pointer writer = WriterType::New ();
205+ std::string appendString = " _" + n2s (inputLevels) + " _" + n2s (inputBands);
206+ std::string outputFile = AppendToFilenameRiesz (outputImage, appendString);
207+ writer->SetFileName ( outputFile );
208+ writer->SetInput ( caster->GetOutput () );
209+
210+ TRY_EXPECT_NO_EXCEPTION ( writer->Update () );
193211 //
194212 return EXIT_SUCCESS;
195213}
0 commit comments