X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=filters%2FclitkVFResampleGenericFilter.cxx;h=2cd6b7d58de51940ce383925687bbf9535c96345;hb=f1016340d797dbe6e0672e6e06a583baaafc738b;hp=f335415a2d88ccc8913dcb0d059e157cfb966785;hpb=9bcf64b7f7c5a7f0a39843df634c05b5d9e4e237;p=clitk.git diff --git a/filters/clitkVFResampleGenericFilter.cxx b/filters/clitkVFResampleGenericFilter.cxx index f335415..2cd6b7d 100644 --- a/filters/clitkVFResampleGenericFilter.cxx +++ b/filters/clitkVFResampleGenericFilter.cxx @@ -1,13 +1,29 @@ +/*========================================================================= + Program: vv http://www.creatis.insa-lyon.fr/rio/vv + + 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 + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the copyright notices for more information. + + It is distributed under dual licence + + - BSD See included LICENSE.txt file + - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +======================================================================-====*/ #ifndef CLITKVFRESAMPLEGENERICFILTER_CXX #define CLITKVFRESAMPLEGENERICFILTER_CXX - /** ------------------------------------------------------------------- * @file clitkVFResampleGenericFilter.cxx * @author David Sarrut * @date 23 Feb 2008 08:37:53 - * @brief + * @brief -------------------------------------------------------------------*/ @@ -15,7 +31,8 @@ //-------------------------------------------------------------------- clitk::VFResampleGenericFilter::VFResampleGenericFilter(): - clitk::ImageToImageGenericFilter("VFResample") { + clitk::ImageToImageGenericFilter("VFResample") +{ InitializeImageType<2>(); InitializeImageType<3>(); InitializeImageType<4>(); @@ -29,7 +46,8 @@ clitk::VFResampleGenericFilter::VFResampleGenericFilter(): //-------------------------------------------------------------------- template -void clitk::VFResampleGenericFilter::InitializeImageType() { +void clitk::VFResampleGenericFilter::InitializeImageType() +{ ADD_IMAGE_TYPE(Dim, float); } //-------------------------------------------------------------------- @@ -37,28 +55,30 @@ void clitk::VFResampleGenericFilter::InitializeImageType() { //-------------------------------------------------------------------- template -void clitk::VFResampleGenericFilter::UpdateWithInputImageType() { +void clitk::VFResampleGenericFilter::UpdateWithInputImageType() +{ - if (mNbOfComponents == 1) { + if (m_NbOfComponents == 1) { std::cerr << "Error, only one components ? Use clitkImageResample instead." << std::endl; exit(0); } typedef typename ImageType::PixelType PixelType; - if (mNbOfComponents == 2) Update_WithDimAndPixelTypeAndComponent(); - if (mNbOfComponents == 3) Update_WithDimAndPixelTypeAndComponent(); - if (mNbOfComponents == 4) Update_WithDimAndPixelTypeAndComponent(); + if (m_NbOfComponents == 2) Update_WithDimAndPixelTypeAndComponent(); + if (m_NbOfComponents == 3) Update_WithDimAndPixelTypeAndComponent(); + if (m_NbOfComponents == 4) Update_WithDimAndPixelTypeAndComponent(); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- template -void clitk::VFResampleGenericFilter::Update_WithDimAndPixelTypeAndComponent() { +void clitk::VFResampleGenericFilter::Update_WithDimAndPixelTypeAndComponent() +{ // Reading input typedef itk::Vector DisplacementType; typedef itk::Image< DisplacementType, Dim > ImageType; - typename ImageType::Pointer input = clitk::readImage(mInputFilenames, mIOVerbose); + typename ImageType::Pointer input = clitk::readImage(m_InputFilenames, m_IOVerbose); // Main filter typename ImageType::Pointer outputImage = ComputeImage(input); @@ -70,8 +90,9 @@ void clitk::VFResampleGenericFilter::Update_WithDimAndPixelTypeAndComponent() { //-------------------------------------------------------------------- template -typename ImageType::Pointer -clitk::VFResampleGenericFilter::ComputeImage(typename ImageType::Pointer inputImage) { +typename ImageType::Pointer +clitk::VFResampleGenericFilter::ComputeImage(typename ImageType::Pointer inputImage) +{ // Check options static unsigned int dim = ImageType::ImageDimension; @@ -98,7 +119,7 @@ clitk::VFResampleGenericFilter::ComputeImage(typename ImageType::Pointer inputIm // Create Image Filter typedef itk::VectorResampleImageFilter FilterType; typename FilterType::Pointer filter = FilterType::New(); - + // Instance of the transform object to be passed to the resample // filter. By default, identity transform is applied typedef itk::AffineTransform TransformType; @@ -122,18 +143,16 @@ clitk::VFResampleGenericFilter::ComputeImage(typename ImageType::Pointer inputIm // Select interpolator if (mInterpolatorName == "nn") { - typedef itk::VectorNearestNeighborInterpolateImageFunction InterpolatorType; + typedef itk::VectorNearestNeighborInterpolateImageFunction InterpolatorType; typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); filter->SetInterpolator(interpolator); - } - else { + } else { if (mInterpolatorName == "linear") { - typedef itk::VectorLinearInterpolateImageFunction InterpolatorType; + typedef itk::VectorLinearInterpolateImageFunction InterpolatorType; typename InterpolatorType::Pointer interpolator = InterpolatorType::New(); filter->SetInterpolator(interpolator); - } - else { - std::cerr << "Sorry, I do not know the interpolator (for vector field) '" << mInterpolatorName + } else { + std::cerr << "Sorry, I do not know the interpolator (for vector field) '" << mInterpolatorName << "'. Known interpolators are : nn, linear" << std::endl; exit(0); } @@ -156,50 +175,52 @@ clitk::VFResampleGenericFilter::ComputeImage(typename ImageType::Pointer inputIm else gaussianFilters[i]->SetInput(gaussianFilters[i-1]->GetOutput()); } filter->SetInput(gaussianFilters[ImageType::ImageDimension-1]->GetOutput()); - } - else { + } else { filter->SetInput(inputImage); } // Go ! - try { + try { filter->Update(); - } - catch( itk::ExceptionObject & err ) { - std::cerr << "Error while filtering " << mInputFilenames[0].c_str() - << " " << err << std::endl; + } catch( itk::ExceptionObject & err ) { + std::cerr << "Error while filtering " << m_InputFilenames[0].c_str() + << " " << err << std::endl; exit(0); } // Return result return filter->GetOutput(); - + } //-------------------------------------------------------------------- //-------------------------------------------------------------------- -void clitk::VFResampleGenericFilter::SetOutputSize(const std::vector & size) { +void clitk::VFResampleGenericFilter::SetOutputSize(const std::vector & size) +{ mOutputSize.resize(size.size()); std::copy(size.begin(), size.end(), mOutputSize.begin()); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- -void clitk::VFResampleGenericFilter::SetOutputSpacing(const std::vector & spacing) { +void clitk::VFResampleGenericFilter::SetOutputSpacing(const std::vector & spacing) +{ mOutputSpacing.resize(spacing.size()); std::copy(spacing.begin(), spacing.end(), mOutputSpacing.begin()); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- -void clitk::VFResampleGenericFilter::SetInterpolationName(const std::string & inter) { +void clitk::VFResampleGenericFilter::SetInterpolationName(const std::string & inter) +{ mInterpolatorName = inter; } //-------------------------------------------------------------------- //-------------------------------------------------------------------- -void clitk::VFResampleGenericFilter::SetGaussianSigma(const std::vector & sigma) { +void clitk::VFResampleGenericFilter::SetGaussianSigma(const std::vector & sigma) +{ mApplyGaussianFilterBefore = true; mSigma.resize(sigma.size()); std::copy(sigma.begin(), sigma.end(), mSigma.begin());