ITK/Examples/ImageProcessing/AddPixelAccessor: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
This example current does not work - what is the correct usage?
Add a constant to pixels when they are accessed.


==AddPixelAccessor.cxx==
==AddPixelAccessor.cxx==

Revision as of 05:14, 10 December 2010

Add a constant to pixels when they are accessed.

AddPixelAccessor.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkAddPixelAccessor.h"
  3. include "itkImageAdaptor.h"
  4. include "itkImageRegionIterator.h"

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

static void CreateImage(ImageType::Pointer image);

int main(int, char *[]) {

 ImageType::Pointer image = ImageType::New();
 CreateImage(image);

 typedef itk::Accessor::AddPixelAccessor <ImageType::PixelType>
   AddPixelAccessorType;
 typedef itk::ImageAdaptor<  ImageType, AddPixelAccessorType >
   ImageAdaptorType;
 ImageAdaptorType::Pointer adaptor = ImageAdaptorType::New();
 AddPixelAccessorType addPixelAccessor;


 adaptor->SetImage(image);

 ImageType::IndexType index;
 index[0] = 0;
 index[1] = 0;
 addPixelAccessor.SetValue(5);
 adaptor->SetPixelAccessor(addPixelAccessor);
 std::cout << "addPixelAccessor.SetValue(5)" << std::endl;
 std::cout << "\timage->GetPixel" << index << ": " << image->GetPixel(index)
           << " adaptor->GetPixel" << index << ": " << adaptor->GetPixel(index)
           << std::endl;
 addPixelAccessor.SetValue(100);
 adaptor->SetPixelAccessor(addPixelAccessor);
 std::cout << "addPixelAccessor.SetValue(100)" << std::endl;
 std::cout << "\timage->GetPixel" << index << ": " << image->GetPixel(index)
           << " adaptor->GetPixel" << index << ": " << adaptor->GetPixel(index)
           << std::endl;
 return EXIT_SUCCESS;

}

void CreateImage(ImageType::Pointer image) {

 ImageType::IndexType start;
 start.Fill(0);

 ImageType::SizeType size;
 size.Fill(10);

 ImageType::RegionType region;
 region.SetSize(size);
 region.SetIndex(start);

 image->SetRegions(region);
 image->Allocate();

 itk::ImageRegionIterator<ImageType> imageIterator(image,image->GetLargestPossibleRegion());

 while(!imageIterator.IsAtEnd())
   {
   imageIterator.Set(20);
   ++imageIterator;
   }

} </source>

CMakeLists.txt

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

PROJECT(AddPixelAccessor)

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

ADD_EXECUTABLE(AddPixelAccessor AddPixelAccessor.cxx) TARGET_LINK_LIBRARIES(AddPixelAccessor ITKBasicFilters ITKCommon ITKIO) </source>