Translate a Vector Image#

Synopsis#

Translate a vector image.

Results#

Code#

C++#

#include "itkImage.h"
#include "itkTranslationTransform.h"
#include "itkImageFileReader.h"
#include "itkResampleImageFilter.h"
#include "itkCovariantVector.h"
#include "itkNumericTraits.h"

int
main()
{
  using VectorType = itk::CovariantVector<double, 3>;
  using VectorImageType = itk::Image<VectorType, 2>;

  auto          image = VectorImageType::New();
  itk::Index<2> start;
  start.Fill(0);

  itk::Size<2> size;
  size.Fill(10);

  itk::ImageRegion<2> region(start, size);
  image->SetRegions(region);
  image->Allocate();
  image->FillBuffer(itk::NumericTraits<VectorType>::ZeroValue());

  itk::TranslationTransform<double, 2>::Pointer          transform = itk::TranslationTransform<double, 2>::New();
  itk::TranslationTransform<double, 2>::OutputVectorType translation;
  translation[0] = 10;
  translation[1] = 20;
  transform->Translate(translation);

  using ResampleFilterType = itk::ResampleImageFilter<VectorImageType, VectorImageType>;
  auto vectorResampleFilter = ResampleFilterType::New();
  vectorResampleFilter->SetInput(image);
  vectorResampleFilter->SetSize(image->GetLargestPossibleRegion().GetSize());
  vectorResampleFilter->SetTransform(transform);
  vectorResampleFilter->Update();

  return EXIT_SUCCESS;
}

Classes demonstrated#

template<typename TParametersValueType = double, unsigned int NDimensions = 3>
class TranslationTransform : public itk::Transform<TParametersValueType, NDimensions, NDimensions>

Translation transformation of a vector space (e.g. space coordinates)

The same functionality could be obtained by using the Affine transform, but with a large difference in performance.

ITK Sphinx Examples:

See itk::TranslationTransform for additional documentation.