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);