ITK/Examples/ImageProcessing/NthElementImageAdaptor

From KitwarePublic
< ITK‎ | Examples
Revision as of 15:23, 10 December 2010 by Lorensen (talk | contribs) (CreateImage must be static to avoid duplicate symbols in test driver.)
Jump to navigationJump to search

NthElementImageAdaptor.cxx

<source lang="cpp">

  1. include "itkImageAdaptor.h"
  2. include "itkImageRegionIterator.h"
  3. include "itkNthElementImageAdaptor.h"

typedef itk::Image<itk::CovariantVector< float, 3>, 2> VectorImageType;

static void CreateImage(VectorImageType::Pointer image);

int main(int, char *[]) {

 VectorImageType::Pointer image = VectorImageType::New();
 CreateImage(image);
 itk::Index<2> index;
 index.Fill(0);
 std::cout << image->GetPixel(index) << std::endl;
 typedef itk::NthElementImageAdaptor<VectorImageType,
   float> ImageAdaptorType;
 ImageAdaptorType::Pointer adaptor = ImageAdaptorType::New();
 adaptor->SelectNthElement(0);
 adaptor->SetImage(image);
 std::cout << adaptor->GetPixel(index) << std::endl;
 return EXIT_SUCCESS;

}

void CreateImage(VectorImageType::Pointer image) {

 VectorImageType::IndexType start;
 start.Fill(0);
 VectorImageType::SizeType size;
 size.Fill(2);
 VectorImageType::RegionType region;
 region.SetSize(size);
 region.SetIndex(start);
 image->SetRegions(region);
 image->Allocate();
 itk::ImageRegionIterator<VectorImageType> imageIterator(image,image->GetLargestPossibleRegion());
 itk::CovariantVector<float, 3> vec;
 vec[0] = 1;
 vec[1] = 2;
 vec[2] = 3;
 while(!imageIterator.IsAtEnd())
   {
   imageIterator.Set(vec);
   ++imageIterator;
   }

} </source>

CMakeLists.txt

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

PROJECT(NthElementImageAdaptor)

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

ADD_EXECUTABLE(NthElementImageAdaptor NthElementImageAdaptor.cxx) TARGET_LINK_LIBRARIES(NthElementImageAdaptor ITKIO)

</source>