X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkResampleImageGenericFilter.txx;h=7ecf84298ba01aad9a1a63b749ed326857681309;hb=refs%2Fheads%2FextentSimon;hp=e05770e0cb6ca5d801762f3c7e80ca1d76c2c103;hpb=57d229014618ee838d035e1e4d24ba16db794e53;p=clitk.git diff --git a/tools/clitkResampleImageGenericFilter.txx b/tools/clitkResampleImageGenericFilter.txx index e05770e..7ecf842 100644 --- a/tools/clitkResampleImageGenericFilter.txx +++ b/tools/clitkResampleImageGenericFilter.txx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -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 @@ -49,6 +49,8 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType() static const unsigned int dim = OutputImageType::ImageDimension; typename OutputImageType::SpacingType spacing; typename OutputImageType::SizeType size; + typename OutputImageType::PointType origin; + typename OutputImageType::DirectionType direction; if (mArgsInfo.like_given) { itk::ImageIOBase::Pointer header = clitk::readImageHeader(mArgsInfo.like_arg); @@ -56,9 +58,17 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType() for(unsigned int i=0; iGetSpacing(i); size[i] = header->GetDimensions(i); + origin[i] = header->GetOrigin(i); + } + for(unsigned int i=0; iGetDirection(i)[j]; + } } filter->SetOutputSpacing(spacing); filter->SetOutputSize(size); + filter->SetOutputOrigin(origin); + filter->SetOutputDirection(direction); } else { std::cerr << "*** Warning : I could not read '" << mArgsInfo.like_arg << "' ***" << std::endl; @@ -68,32 +78,39 @@ clitk::ResampleImageGenericFilter::UpdateWithInputImageType() else { if (mArgsInfo.spacing_given == 1) { filter->SetOutputIsoSpacing(mArgsInfo.spacing_arg[0]); - } else { - if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.size_given != 0)) { - std::cerr << "Error: use spacing or size, not both." << std::endl; + } + else if ((mArgsInfo.spacing_given != 0) && (mArgsInfo.size_given != 0)) { + std::cerr << "Error: use spacing or size, not both." << std::endl; + exit(0); + } + else if (mArgsInfo.spacing_given) { + 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.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) - for(unsigned int i=0; iSetOutputSpacing(spacing); - filter->SetOutputSize(size); + for(unsigned int i=0; iSetOutputSpacing(spacing); + } + else if (mArgsInfo.size_given) { + if ((mArgsInfo.size_given != 0) && (mArgsInfo.size_given != dim)) { + std::cerr << "Error: size should have " << dim << " values." << std::endl; + exit(0); + } + for(unsigned int i=0; iSetOutputSize(size); + } + for(unsigned int i=0; iGetOrigin()[i]; + } + for(unsigned int i=0; iGetDirection()[i][j]; } } + filter->SetOutputOrigin(origin); + filter->SetOutputDirection(direction); } // Set temporal dimension