X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkCropImageGenericFilter.cxx;h=4f3bb231762ca6c6fe19fdc528a90a8c15b5456d;hb=543b72e23ad001ac2a7743b9beacf48e2d0054ac;hp=ede400746d028373718d3f3d45444ab6865a3468;hpb=ae04ff77b40b28e50b946003157084fcf38273b7;p=clitk.git diff --git a/tools/clitkCropImageGenericFilter.cxx b/tools/clitkCropImageGenericFilter.cxx index ede4007..4f3bb23 100644 --- a/tools/clitkCropImageGenericFilter.cxx +++ b/tools/clitkCropImageGenericFilter.cxx @@ -69,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; } //-------------------------------------------------------------------- @@ -106,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; @@ -182,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);