X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkCropImageGenericFilter.cxx;h=4f3bb231762ca6c6fe19fdc528a90a8c15b5456d;hb=d9c8c6e6c759655fc24d05d47b962d2ba574b95d;hp=d46f20e461a02f8a90c4e07784049b03b1ad6225;hpb=025ee694f3e08b71b518c4cd1392b592b22f4387;p=clitk.git diff --git a/tools/clitkCropImageGenericFilter.cxx b/tools/clitkCropImageGenericFilter.cxx index d46f20e..4f3bb23 100644 --- a/tools/clitkCropImageGenericFilter.cxx +++ b/tools/clitkCropImageGenericFilter.cxx @@ -18,18 +18,8 @@ #ifndef clitkCropImageGenericFilter_cxx #define clitkCropImageGenericFilter_cxx -/* ================================================= - * @file clitkCropImageGenericFilter.cxx - * @author - * @date - * - * @brief - * - ===================================================*/ - #include "clitkCropImageGenericFilter.h" - //----------------------------------------------------------- // Constructor //----------------------------------------------------------- @@ -79,7 +69,7 @@ typename clitk::CropImageGenericFilter::AutoCrop::ImagePointer clitk::CropImageGenericFilter::AutoCrop::Do(args_info_type &, ImagePointer, PixelDimType *) { clitkExceptionMacro("Autocrop is not implemented for vector fields"); - return NULL; + return ITK_NULLPTR; } //-------------------------------------------------------------------- @@ -116,6 +106,8 @@ void clitk::CropImageGenericFilter::UpdateWithInputImageType() // Check options if (mArgsInfo.BG_given && mArgsInfo.like_given) clitkExceptionMacro("Do not use --BG and --like at the same time"); + if (mArgsInfo.updateOrigin_flag && !mArgsInfo.like_given) + clitkExceptionMacro("Use --updateOrigin with --like"); // Prepare output typename ImageType::Pointer output; @@ -192,11 +184,12 @@ void clitk::CropImageGenericFilter::UpdateWithInputImageType() typename ImageType::IndexType index = region.GetIndex(); typename ImageType::PointType origin = output->GetOrigin(); typename ImageType::SpacingType spacing = output->GetSpacing(); - if (mArgsInfo.verbose_flag) std::cout << "origin before crop " << origin << std::endl; - for (unsigned int i = 0; i < output->GetImageDimension(); i++) - origin[i] += index[i]*spacing[i]; - if (mArgsInfo.verbose_flag) std::cout << "origin after crop " << origin << std::endl; - output->SetOrigin(origin); + if (!mArgsInfo.BG_given && (!mArgsInfo.like_given || mArgsInfo.updateOrigin_flag)) { + if (mArgsInfo.verbose_flag) std::cout << "origin before crop " << origin << std::endl; + input->TransformIndexToPhysicalPoint(index,origin); + if (mArgsInfo.verbose_flag) std::cout << "origin after crop " << origin << std::endl; + output->SetOrigin(origin); + } index.Fill(itk::NumericTraits::Zero); region.SetIndex(index);