X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=filters%2FclitkResampleImageGenericFilter.txx;h=5e08d4a0f33d15ee657b5daa7042b41df0f2d91c;hb=fdb804fa1b0e67f22f35420396fa015c1c2946d5;hp=a3808249c9e3eb0919770d15b393d7b5a1984216;hpb=000ac5b867a708575268c7c823db4fcbe727c2d6;p=clitk.git diff --git a/filters/clitkResampleImageGenericFilter.txx b/filters/clitkResampleImageGenericFilter.txx index a380824..5e08d4a 100644 --- a/filters/clitkResampleImageGenericFilter.txx +++ b/filters/clitkResampleImageGenericFilter.txx @@ -1,7 +1,7 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + Authors belong to: - University of LYON http://www.universite-lyon.fr/ - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr @@ -14,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ + ======================================================================-====*/ #ifndef CLITKRESAMPLEIMAGEGENERICFILTER_TXX #define CLITKRESAMPLEIMAGEGENERICFILTER_TXX @@ -22,157 +22,164 @@ // clitk #include "clitkResampleImageWithOptionsFilter.h" -namespace clitk { - - //-------------------------------------------------------------------- - template - ResampleImageGenericFilter::ResampleImageGenericFilter(): - ImageToImageGenericFilter("Resample") { - InitializeImageType<2>(); - InitializeImageType<3>(); - InitializeImageType<4>(); - } - //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +template +clitk::ResampleImageGenericFilter::ResampleImageGenericFilter(): + ImageToImageGenericFilter("Resample") +{ + InitializeImageType<2>(); + InitializeImageType<3>(); + InitializeImageType<4>(); +} +//-------------------------------------------------------------------- - //-------------------------------------------------------------------- - template - template - void ResampleImageGenericFilter::InitializeImageType() { - ADD_DEFAULT_IMAGE_TYPES(Dim); - //ADD_IMAGE_TYPE(Dim, short); - } - //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +template +template +void clitk::ResampleImageGenericFilter::InitializeImageType() +{ + ADD_DEFAULT_IMAGE_TYPES(Dim); + //ADD_IMAGE_TYPE(Dim, short); +} +//-------------------------------------------------------------------- - //-------------------------------------------------------------------- - template - void ResampleImageGenericFilter::SetArgsInfo(const args_info_type & a) { - mArgsInfo=a; - if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes(); - SetIOVerbose(mArgsInfo.verbose_flag); - if (mArgsInfo.input_given) { - SetInputFilename(mArgsInfo.input_arg); - } - if (mArgsInfo.output_given) { - SetOutputFilename(mArgsInfo.output_arg); - } +//-------------------------------------------------------------------- +template +void clitk::ResampleImageGenericFilter::SetArgsInfo(const args_info_type & a) +{ + mArgsInfo=a; + if (mArgsInfo.imagetypes_flag) this->PrintAvailableImageTypes(); + SetIOVerbose(mArgsInfo.verbose_flag); + if (mArgsInfo.input_given) { + SetInputFilename(mArgsInfo.input_arg); + } + if (mArgsInfo.output_given) { + SetOutputFilename(mArgsInfo.output_arg); } - //-------------------------------------------------------------------- +} +//-------------------------------------------------------------------- + +//-------------------------------------------------------------------- +// Update with the number of dimensions and the pixeltype +//-------------------------------------------------------------------- +template +template +void +clitk::ResampleImageGenericFilter::UpdateWithInputImageType() +{ - //-------------------------------------------------------------------- - // Update with the number of dimensions and the pixeltype - //-------------------------------------------------------------------- - template - template - void - ResampleImageGenericFilter::UpdateWithInputImageType() { + // Reading input + typename InputImageType::Pointer input = this->template GetInput(0); - // Reading input - typename InputImageType::Pointer input = this->template GetInput(0); + // Main filter + typedef typename InputImageType::PixelType PixelType; + typedef InputImageType OutputImageType; // to change to float is user ask it (?) - // Main filter - typedef typename InputImageType::PixelType PixelType; - typedef InputImageType OutputImageType; // to change to float is user ask it (?) + // Filter + typedef clitk::ResampleImageWithOptionsFilter ResampleImageFilterType; + typename ResampleImageFilterType::Pointer filter = ResampleImageFilterType::New(); + filter->SetInput(input); - // Filter - typedef clitk::ResampleImageWithOptionsFilter ResampleImageFilterType; - typename ResampleImageFilterType::Pointer filter = ResampleImageFilterType::New(); - filter->SetInput(input); + // Set Verbose + filter->SetVerboseOptions(mArgsInfo.verbose_flag); - // Set Verbose - filter->SetVerboseOptions(mArgsInfo.verbose_flag); + // Set size / spacing + static const unsigned int dim = OutputImageType::ImageDimension; + typename OutputImageType::SpacingType spacing; + typename OutputImageType::SizeType size; - // Set size / spacing - static const unsigned int dim = OutputImageType::ImageDimension; - typename OutputImageType::SpacingType spacing; - typename OutputImageType::SizeType size; + if (mArgsInfo.like_given) { + DD("like"); + + } + else { if (mArgsInfo.spacing_given == 1) { filter->SetOutputIsoSpacing(mArgsInfo.spacing_arg[0]); - } - else { + } else { if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.size_given != 0)) { - std::cerr << "Error: use spacing or size, not both." << std::endl; - exit(0); + std::cerr << "Error: use spacing or size, not both." << std::endl; + exit(0); } if (!((mArgsInfo.spacing_given == 0) && (mArgsInfo.size_given == 0))) { - if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.spacing_given != dim)) { - std::cerr << "Error: spacing should have one or " << dim << " values." << std::endl; - exit(0); - } - if ((mArgsInfo.size_given != 0) && (mArgsInfo.size_given != dim)) { - std::cerr << "Error: size should have " << dim << " values." << std::endl; - exit(0); - } + if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.spacing_given != dim)) { + std::cerr << "Error: spacing should have one or " << dim << " values." << std::endl; + exit(0); + } + if ((mArgsInfo.size_given != 0) && (mArgsInfo.size_given != dim)) { + std::cerr << "Error: size should have " << dim << " values." << std::endl; + exit(0); + } if (mArgsInfo.spacing_given) - for(unsigned int i=0; iSetOutputSpacing(spacing); - filter->SetOutputSize(size); + for(unsigned int i=0; iSetOutputSpacing(spacing); + filter->SetOutputSize(size); } } - - // Set temporal dimension - filter->SetLastDimensionIsTime(mArgsInfo.time_flag); - - // Set Gauss - filter->SetGaussianFilteringEnabled(mArgsInfo.autogauss_flag); - if (mArgsInfo.gauss_given != 0) { - typename ResampleImageFilterType::GaussianSigmaType g; - for(unsigned int i=0; iSetGaussianSigma(g); - } - - // Set Interpolation - std::string interp = std::string(mArgsInfo.interp_arg); - if (interp == "nn") { - filter->SetInterpolationType(ResampleImageFilterType::NearestNeighbor); + } + + // Set temporal dimension + filter->SetLastDimensionIsTime(mArgsInfo.time_flag); + + // Set Gauss + filter->SetGaussianFilteringEnabled(mArgsInfo.autogauss_flag); + if (mArgsInfo.gauss_given != 0) { + typename ResampleImageFilterType::GaussianSigmaType g; + for(unsigned int i=0; iSetInterpolationType(ResampleImageFilterType::Linear); - } - else { - if (interp == "bspline") { - filter->SetInterpolationType(ResampleImageFilterType::BSpline); - } - else { - if (interp == "blut") { - filter->SetInterpolationType(ResampleImageFilterType::B_LUT); - } - else { - std::cerr << "Error. I do not know interpolation '" << mArgsInfo.interp_arg - << "'. Choose among: nn, linear, bspline, blut" << std::endl; + filter->SetGaussianSigma(g); + } + + // Set Interpolation + std::string interp = std::string(mArgsInfo.interp_arg); + if (interp == "nn") { + filter->SetInterpolationType(ResampleImageFilterType::NearestNeighbor); + } else { + if (interp == "linear") { + filter->SetInterpolationType(ResampleImageFilterType::Linear); + } else { + if (interp == "bspline") { + filter->SetInterpolationType(ResampleImageFilterType::BSpline); + } else { + if (interp == "blut") { + filter->SetInterpolationType(ResampleImageFilterType::B_LUT); + } else { + if (interp == "windowed sinc") { + filter->SetInterpolationType(ResampleImageFilterType::WSINC); + } else { + std::cerr << "Error. I do not know interpolation '" << mArgsInfo.interp_arg + << "'. Choose among: nn, linear, bspline, blut, windowed sinc" << std::endl; exit(0); } } } } - - // Set default pixel value - filter->SetDefaultPixelValue(mArgsInfo.default_arg); + } - // Set thread - if (mArgsInfo.thread_given) { - filter->SetNumberOfThreads(mArgsInfo.thread_arg); - } + // Set default pixel value + filter->SetDefaultPixelValue(mArgsInfo.default_arg); - // Go ! - filter->Update(); - typename OutputImageType::Pointer outputImage = filter->GetOutput(); - this->template SetNextOutput(outputImage); + // Set thread + if (mArgsInfo.thread_given) { + filter->SetNumberOfThreads(mArgsInfo.thread_arg); } - //-------------------------------------------------------------------- + // Go ! + filter->Update(); + typename OutputImageType::Pointer outputImage = filter->GetOutput(); + this->template SetNextOutput(outputImage); } +//-------------------------------------------------------------------- + #endif /* end #define CLITKRESAMPLEIMAGEGENERICFILTER_TXX */