ITK/Examples/SimpleOperations/TranslationTransform

From KitwarePublic
< ITK‎ | Examples
Revision as of 17:30, 27 January 2011 by Daviddoria (talk | contribs)
Jump to navigationJump to search

TranslationTransform.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkTranslationTransform.h"
  3. include "itkImageFileReader.h"
  4. include "itkNormalizeImageFilter.h"
  5. include "itkResampleImageFilter.h"
  6. include "itkImageFileWriter.h"
  1. include "QuickView.h"

typedef itk::Image<unsigned char, 2> ImageType;

void CreateImage(ImageType::Pointer image);

int main(int argc, char *argv[]) {

 ImageType::Pointer image = ImageType::New();
 CreateImage(image);
 typedef itk::TranslationTransform<double,2> TranslationTransformType;
 TranslationTransformType::Pointer transform =
   TranslationTransformType::New();
 TranslationTransformType::OutputVectorType translation;
 translation[0] = 10;
 translation[1] = 20;
 transform->Translate(translation);
 typedef itk::ResampleImageFilter<ImageType, ImageType> ResampleImageFilterType;
 ResampleImageFilterType::Pointer resampleFilter = ResampleImageFilterType::New();
 resampleFilter->SetTransform(transform.GetPointer());
 resampleFilter->SetInput(image);
 /*
 // These are the defaults
 double spacing[ 2 ];
 spacing[0] = 1.0;
 spacing[1] = 1.0;
 resampleFilter->SetOutputSpacing( spacing );
 double origin[ 2 ];
 origin[0] = 0.0;
 origin[1] = 0.0;
 resampleFilter->SetOutputOrigin( origin );
 */
 // Without this, the program crashes
 ImageType::SizeType   size = image->GetLargestPossibleRegion().GetSize();
 resampleFilter->SetSize( size );
 
 resampleFilter->Update();
 QuickView viewer;
 viewer.AddImage(image.GetPointer());
 viewer.AddImage(resampleFilter->GetOutput());
 viewer.Visualize();
 
 
 return EXIT_SUCCESS;

}

void CreateImage(ImageType::Pointer image) {

 ImageType::IndexType start;
 start.Fill(0);
 ImageType::SizeType size;
 size.Fill(100);
 ImageType::RegionType region(start, size);
 image->SetRegions(region);
 image->Allocate();
 image->FillBuffer(0);
 // Make a square
 for(unsigned int r = 40; r < 60; r++)
   {
   for(unsigned int c = 40; c < 60; c++)
     {
     ImageType::IndexType pixelIndex;
     pixelIndex[0] = r;
     pixelIndex[1] = c;
     image->SetPixel(pixelIndex, 255);
     }
   }

} </source>

CMakeLists.txt

<source lang="cmake"> cmake_minimum_required(VERSION 2.6)

PROJECT(TranslationTransform)

include_directories(/home/doriad/ITKWikiExamples/ItkVtkGlue)

FIND_PACKAGE(VTK REQUIRED) INCLUDE(${VTK_USE_FILE})

FIND_PACKAGE(ITK REQUIRED) INCLUDE(${ITK_USE_FILE})

ADD_EXECUTABLE(TranslationTransform TranslationTransform.cxx /home/doriad/ITKWikiExamples/ItkVtkGlue/QuickView.cxx) TARGET_LINK_LIBRARIES(TranslationTransform vtkHybrid ITKBasicFilters ITKCommon ITKIO)

</source>