Iterate Region in Image With Write Access¶
Synopsis¶
Iterate over a region of an image (with write access).
Results¶
Yinyang.png¶
Yinyang.png In VTK Window¶
Code¶
C++¶
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageRegionIterator.h"
#include <itkImageToVTKImageFilter.h>
#include "vtkVersion.h"
#include "vtkImageViewer.h"
#include "vtkImageMapper3D.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkSmartPointer.h"
#include "vtkImageActor.h"
#include "vtkInteractorStyleImage.h"
#include "vtkRenderer.h"
int
main(int argc, char * argv[])
{
  if (argc < 2)
  {
    std::cerr << "Required: filename" << std::endl;
    return EXIT_FAILURE;
  }
  using ImageType = itk::Image<unsigned char, 2>;
  using ReaderType = itk::ImageFileReader<ImageType>;
  ReaderType::Pointer reader = ReaderType::New();
  reader->SetFileName(argv[1]);
  reader->Update();
  ImageType::Pointer image = reader->GetOutput();
  ImageType::SizeType regionSize;
  regionSize[0] = 5;
  regionSize[1] = 4;
  ImageType::IndexType regionIndex;
  regionIndex[0] = 0;
  regionIndex[1] = 0;
  ImageType::RegionType region;
  region.SetSize(regionSize);
  region.SetIndex(regionIndex);
  itk::ImageRegionIterator<ImageType> imageIterator(image, region);
  while (!imageIterator.IsAtEnd())
  {
    // Get the value of the current pixel
    // unsigned char val = imageIterator.Get();
    // std::cout << (int)val << std::endl;
    // Set the current pixel to white
    imageIterator.Set(255);
    ++imageIterator;
  }
  // Visualize
  using ConnectorType = itk::ImageToVTKImageFilter<ImageType>;
  ConnectorType::Pointer connector = ConnectorType::New();
  connector->SetInput(image);
  vtkSmartPointer<vtkImageActor> actor = vtkSmartPointer<vtkImageActor>::New();
#if VTK_MAJOR_VERSION <= 5
  actor->SetInput(connector->GetOutput());
#else
  connector->Update();
  actor->GetMapper()->SetInputData(connector->GetOutput());
#endif
  vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
  vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
  interactor->SetRenderWindow(renderWindow);
  vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
  renderWindow->AddRenderer(renderer);
  renderer->AddActor(actor);
  renderer->ResetCamera();
  renderWindow->Render();
  vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();
  interactor->SetInteractorStyle(style);
  interactor->Start();
  return EXIT_SUCCESS;
}
Classes demonstrated¶
- 
template<typename 
TImage>
classImageRegionIterator: public itk::ImageRegionConstIterator<TImage> A multi-dimensional iterator templated over image type that walks a region of pixels.
The itk::ImageRegionIterator is optimized for iteration speed and is the first choice for iterative, pixel-wise operations on an image. ImageRegionIterator is the least specialized of the ITK image iterator classes. ImageRegionIterator is templated over the image type, and is constrained to walk only within the specified region and along a line parallel to one of the coordinate axes, “wrapping” to the next line as it reaches the boundary of the image. To walk the entire image, specify the region to be
image->GetRequestedRegion().Most of the functionality is inherited from the ImageRegionConstIterator. The current class only adds write access to image pixels.
example ImageRegionIterator.cxx
- MORE INFORMATION
 For a complete description of the ITK Image Iterators and their API, please see the Iterators chapter in the ITK Software Guide. The ITK Software Guide is available in print and as a free .pdf download from https://www.itk.org.
- See
 ImageConstIterator
- See
 ConditionalConstIterator
- See
 ConstNeighborhoodIterator
- See
 ConstShapedNeighborhoodIterator
- See
 ConstSliceIterator
- See
 CorrespondenceDataStructureIterator
- See
 FloodFilledFunctionConditionalConstIterator
- See
 FloodFilledImageFunctionConditionalConstIterator
- See
 FloodFilledImageFunctionConditionalIterator
- See
 FloodFilledSpatialFunctionConditionalConstIterator
- See
 FloodFilledSpatialFunctionConditionalIterator
- See
 ImageConstIterator
- See
 ImageConstIteratorWithIndex
- See
 ImageIterator
- See
 ImageIteratorWithIndex
- See
 ImageLinearConstIteratorWithIndex
- See
 ImageLinearIteratorWithIndex
- See
 ImageRandomConstIteratorWithIndex
- See
 ImageRandomIteratorWithIndex
- See
 ImageRegionConstIterator
- See
 ImageRegionConstIteratorWithIndex
- See
 ImageRegionExclusionConstIteratorWithIndex
- See
 ImageRegionExclusionIteratorWithIndex
- See
 ImageRegionIterator
- See
 ImageRegionIteratorWithIndex
- See
 ImageRegionReverseConstIterator
- See
 ImageRegionReverseIterator
- See
 ImageReverseConstIterator
- See
 ImageReverseIterator
- See
 ImageSliceConstIteratorWithIndex
- See
 ImageSliceIteratorWithIndex
- See
 NeighborhoodIterator
- See
 PathConstIterator
- See
 PathIterator
- See
 ShapedNeighborhoodIterator
- See
 SliceIterator
- See
 ImageConstIteratorWithIndex
- See
 ImageRegionRange
- See
 ImageRegionIndexRange
- ITK Sphinx Examples:
 

