ITK/Examples/Iterators/NeighborhoodIterator: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
No edit summary
(Deprecated content that is moved to sphinx)
 
(3 intermediate revisions by one other user not shown)
Line 1: Line 1:
<div class="floatcenter">[[File:ITK_Examples_Baseline_Iterators_TestNeighborhoodIterator.png]]</div>
{{warning|1=The media wiki content on this page is no longer maintained.  The examples presented on the https://itk.org/Wiki/*  pages likely require ITK version 4.13 or earlier releasesIn many cases, the examples on this page no longer conform to the best practices for modern ITK versions.
This example demonstrates how to traverse an itkImage with access to a rectangular neighborhood around the center pixel of the iterator.
}}
 
==NeighborhoodIterator.cxx==
<source lang="cpp">
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkNeighborhoodIterator.h"
 
#include <itkImageToVTKImageFilter.h>
 
#include "vtkImageViewer.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;
    }
 
  typedef itk::Image<unsigned char, 2> ImageType;
 
  typedef itk::ImageFileReader<ImageType> ReaderType;
  ReaderType::Pointer reader = ReaderType::New();
  reader->SetFileName(argv[1]);
  reader->Update();
 
  ImageType::Pointer image = reader->GetOutput();
 
  ImageType::SizeType regionSize;
  regionSize[0] = 50;
  regionSize[1] = 1;
 
  ImageType::IndexType regionIndex;
  regionIndex[0] = 0;
  regionIndex[1] = 0;
 
  ImageType::RegionType region;
  region.SetSize(regionSize);
  region.SetIndex(regionIndex);
 
   ImageType::SizeType radius;
  radius[0] = 1;
  radius[1] = 1;
 
  itk::NeighborhoodIterator<ImageType> iterator(radius, image,region);
 
 
  while(!iterator.IsAtEnd())
    {
    // Set the current pixel to white
    iterator.SetCenterPixel(255);
 
    for(unsigned int i = 0; i < 9; i++)
      {
      ImageType::IndexType index = iterator.GetIndex(i);
      std::cout << index[0] << " " << index[1] << std::endl;
 
      bool IsInBounds;
      iterator.GetPixel(i, IsInBounds);
      if(IsInBounds)
        {
        iterator.SetPixel(i,255);
        }
      }
    ++iterator;
    }
 
  // Visualize
  typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;
  ConnectorType::Pointer connector = ConnectorType::New();
  connector->SetInput(image);
 
  vtkSmartPointer<vtkImageActor> actor =
    vtkSmartPointer<vtkImageActor>::New();
  actor->SetInput(connector->GetOutput());
 
  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;
}
 
</source>
 
{{ITKVTKCMakeLists|NeighborhoodIterator|}}

Latest revision as of 14:43, 6 June 2019

Warning: The media wiki content on this page is no longer maintained. The examples presented on the https://itk.org/Wiki/* pages likely require ITK version 4.13 or earlier releases. In many cases, the examples on this page no longer conform to the best practices for modern ITK versions.