#ifndef clitkCropImageGenericFilter_cxx
#define clitkCropImageGenericFilter_cxx
-/* =================================================
- * @file clitkCropImageGenericFilter.cxx
- * @author
- * @date
- *
- * @brief
- *
- ===================================================*/
-
#include "clitkCropImageGenericFilter.h"
-
//-----------------------------------------------------------
// Constructor
//-----------------------------------------------------------
clitk::CropImageGenericFilter::AutoCrop<ImageType>::Do(args_info_type &, ImagePointer, PixelDimType<Dim> *)
{
clitkExceptionMacro("Autocrop is not implemented for vector fields");
- return NULL;
+ return ITK_NULLPTR;
}
//--------------------------------------------------------------------
// 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;
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<double>::Zero);
region.SetIndex(index);