ITK/Examples/ImageProcessing/RegionOfInterestImageFilter: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Created page with "==RegionOfInterestImageFilter.cxx== <source lang="cpp"> #include "itkImage.h" #include <itkImageFileReader.h> #include <itkRegionOfInterestImageFilter.h> #include <itkImageToVTK...")
 
No edit summary
Line 2: Line 2:
<source lang="cpp">
<source lang="cpp">
#include "itkImage.h"
#include "itkImage.h"
#include <itkImageFileReader.h>
#include "itkImageFileReader.h"
#include <itkRegionOfInterestImageFilter.h>
#include "itkRegionOfInterestImageFilter.h"


#include <itkImageToVTKImageFilter.h>
#include "itkImageToVTKImageFilter.h"


#include "vtkImageViewer.h"
#include "vtkImageViewer.h"
Line 19: Line 19:
int main(int argc, char *argv[])
int main(int argc, char *argv[])
{
{
  if(argc < 2)
if(argc < 2)
    {
{
    std::cerr << "Required: filename" << std::endl;
std::cerr << "Required: filename" << std::endl;
    return EXIT_FAILURE;
return EXIT_FAILURE;
    }
}


  std::string filename = argv[1];
std::string filename = argv[1];


  typedef itk::Image<unsigned char, 2> ImageType;
typedef itk::Image<unsigned char, 2> ImageType;
  typedef itk::ImageFileReader<ImageType> ReaderType;
typedef itk::ImageFileReader<ImageType> ReaderType;
  typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;
typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;


  ReaderType::Pointer reader = ReaderType::New();
ReaderType::Pointer reader = ReaderType::New();
  ConnectorType::Pointer originalConnector = ConnectorType::New();
ConnectorType::Pointer originalConnector = ConnectorType::New();
  ConnectorType::Pointer extractedConnector = ConnectorType::New();
ConnectorType::Pointer extractedConnector = ConnectorType::New();


  reader->SetFileName(filename.c_str());
reader->SetFileName(filename.c_str());
  originalConnector->SetInput(reader->GetOutput());
reader->Update();


  vtkSmartPointer<vtkImageActor> originalActor =
ImageType::SizeType inSize = reader->GetOutput()->GetLargestPossibleRegion().GetSize();
    vtkSmartPointer<vtkImageActor>::New();
  originalActor->SetInput(originalConnector->GetOutput());


  typedef itk::RegionOfInterestImageFilter< ImageType,
originalConnector->SetInput(reader->GetOutput());
                                            ImageType > FilterType;


  FilterType::Pointer filter = FilterType::New();
vtkSmartPointer<vtkImageActor> originalActor =
vtkSmartPointer<vtkImageActor>::New();
originalActor->SetInput(originalConnector->GetOutput());


  ImageType::IndexType start;
typedef itk::RegionOfInterestImageFilter< ImageType, ImageType > FilterType;
  start[0] = 50;
FilterType::Pointer filter = FilterType::New();
  start[1] = 50;


  ImageType::SizeType size;
ImageType::IndexType start;
  size[0] = 100;
start[0] = inSize[0]/4;
  size[1] = 100;
start[1] = inSize[1]/4;
 
  ImageType::RegionType desiredRegion;
  desiredRegion.SetSize(size);
  desiredRegion.SetIndex(start);


  filter->SetRegionOfInterest(desiredRegion);
ImageType::SizeType size;
  filter->SetInput(reader->GetOutput());
size[0] = inSize[0]/4;
size[1] = inSize[1]/4;


  extractedConnector->SetInput(filter->GetOutput());
ImageType::RegionType desiredRegion;
 
desiredRegion.SetSize(size);
  vtkSmartPointer<vtkImageActor> extractedActor =
desiredRegion.SetIndex(start);
    vtkSmartPointer<vtkImageActor>::New();
  extractedActor->SetInput(extractedConnector->GetOutput());


  // There will be one render window
filter->SetRegionOfInterest(desiredRegion);
  vtkSmartPointer<vtkRenderWindow> renderWindow =
filter->SetInput(reader->GetOutput());
    vtkSmartPointer<vtkRenderWindow>::New();
  renderWindow->SetSize(600, 300);


  vtkSmartPointer<vtkRenderWindowInteractor> interactor =
extractedConnector->SetInput(filter->GetOutput());
    vtkSmartPointer<vtkRenderWindowInteractor>::New();
  interactor->SetRenderWindow(renderWindow);


  // Define viewport ranges
vtkSmartPointer<vtkImageActor> extractedActor =
  // (xmin, ymin, xmax, ymax)
vtkSmartPointer<vtkImageActor>::New();
  double leftViewport[4] = {0.0, 0.0, 0.5, 1.0};
extractedActor->SetInput(extractedConnector->GetOutput());
  double rightViewport[4] = {0.5, 0.0, 1.0, 1.0};


  // Setup both renderers
// There will be one render window
  vtkSmartPointer<vtkRenderer> leftRenderer =
vtkSmartPointer<vtkRenderWindow> renderWindow =
    vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow>::New();
  renderWindow->AddRenderer(leftRenderer);
renderWindow->SetSize(600, 300);
  leftRenderer->SetViewport(leftViewport);
  leftRenderer->SetBackground(.6, .5, .4);


  vtkSmartPointer<vtkRenderer> rightRenderer =
vtkSmartPointer<vtkRenderWindowInteractor> interactor =
    vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindowInteractor>::New();
  renderWindow->AddRenderer(rightRenderer);
interactor->SetRenderWindow(renderWindow);
  rightRenderer->SetViewport(rightViewport);
  rightRenderer->SetBackground(.4, .5, .6);


  // Add the sphere to the left and the cube to the right
// Define viewport ranges
  leftRenderer->AddActor(originalActor);
// (xmin, ymin, xmax, ymax)
  rightRenderer->AddActor(extractedActor);
double leftViewport[4] = {0.0, 0.0, 0.5, 1.0};
double rightViewport[4] = {0.5, 0.0, 1.0, 1.0};


  leftRenderer->ResetCamera();
// Setup both renderers
  rightRenderer->ResetCamera();
vtkSmartPointer<vtkRenderer> leftRenderer =
vtkSmartPointer<vtkRenderer>::New();
renderWindow->AddRenderer(leftRenderer);
leftRenderer->SetViewport(leftViewport);
leftRenderer->SetBackground(.6, .5, .4);


  renderWindow->Render();
vtkSmartPointer<vtkRenderer> rightRenderer =
vtkSmartPointer<vtkRenderer>::New();
renderWindow->AddRenderer(rightRenderer);
rightRenderer->SetViewport(rightViewport);
rightRenderer->SetBackground(.4, .5, .6);


  vtkSmartPointer<vtkInteractorStyleImage> style =
// Add the sphere to the left and the cube to the right
    vtkSmartPointer<vtkInteractorStyleImage>::New();
leftRenderer->AddActor(originalActor);
rightRenderer->AddActor(extractedActor);


  interactor->SetInteractorStyle(style);
leftRenderer->ResetCamera();
 
rightRenderer->ResetCamera();
  interactor->Start();


  return EXIT_SUCCESS;
renderWindow->Render();
 
vtkSmartPointer<vtkInteractorStyleImage> style =
vtkSmartPointer<vtkInteractorStyleImage>::New();
 
interactor->SetInteractorStyle(style);
 
interactor->Start();
 
return EXIT_SUCCESS;
}
}
</source>
</source>

Revision as of 18:02, 6 November 2010

RegionOfInterestImageFilter.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkImageFileReader.h"
  3. include "itkRegionOfInterestImageFilter.h"
  1. include "itkImageToVTKImageFilter.h"
  1. include "vtkImageViewer.h"
  2. include "vtkRenderWindowInteractor.h"
  3. include "vtkSmartPointer.h"
  4. include "vtkImageActor.h"
  5. include "vtkInteractorStyleImage.h"
  6. include "vtkRenderer.h"
  1. include <iostream>
  2. include <string>

int main(int argc, char *argv[]) { if(argc < 2) { std::cerr << "Required: filename" << std::endl; return EXIT_FAILURE; }

std::string filename = argv[1];

typedef itk::Image<unsigned char, 2> ImageType; typedef itk::ImageFileReader<ImageType> ReaderType; typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;

ReaderType::Pointer reader = ReaderType::New(); ConnectorType::Pointer originalConnector = ConnectorType::New(); ConnectorType::Pointer extractedConnector = ConnectorType::New();

reader->SetFileName(filename.c_str()); reader->Update();

ImageType::SizeType inSize = reader->GetOutput()->GetLargestPossibleRegion().GetSize();

originalConnector->SetInput(reader->GetOutput());

vtkSmartPointer<vtkImageActor> originalActor = vtkSmartPointer<vtkImageActor>::New(); originalActor->SetInput(originalConnector->GetOutput());

typedef itk::RegionOfInterestImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer filter = FilterType::New();

ImageType::IndexType start; start[0] = inSize[0]/4; start[1] = inSize[1]/4;

ImageType::SizeType size; size[0] = inSize[0]/4; size[1] = inSize[1]/4;

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

filter->SetRegionOfInterest(desiredRegion); filter->SetInput(reader->GetOutput());

extractedConnector->SetInput(filter->GetOutput());

vtkSmartPointer<vtkImageActor> extractedActor = vtkSmartPointer<vtkImageActor>::New(); extractedActor->SetInput(extractedConnector->GetOutput());

// There will be one render window vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New(); renderWindow->SetSize(600, 300);

vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New(); interactor->SetRenderWindow(renderWindow);

// Define viewport ranges // (xmin, ymin, xmax, ymax) double leftViewport[4] = {0.0, 0.0, 0.5, 1.0}; double rightViewport[4] = {0.5, 0.0, 1.0, 1.0};

// Setup both renderers vtkSmartPointer<vtkRenderer> leftRenderer = vtkSmartPointer<vtkRenderer>::New(); renderWindow->AddRenderer(leftRenderer); leftRenderer->SetViewport(leftViewport); leftRenderer->SetBackground(.6, .5, .4);

vtkSmartPointer<vtkRenderer> rightRenderer = vtkSmartPointer<vtkRenderer>::New(); renderWindow->AddRenderer(rightRenderer); rightRenderer->SetViewport(rightViewport); rightRenderer->SetBackground(.4, .5, .6);

// Add the sphere to the left and the cube to the right leftRenderer->AddActor(originalActor); rightRenderer->AddActor(extractedActor);

leftRenderer->ResetCamera(); rightRenderer->ResetCamera();

renderWindow->Render();

vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();

interactor->SetInteractorStyle(style);

interactor->Start();

return EXIT_SUCCESS; } </source>

CMakeLists.txt

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

PROJECT(RegionOfInterestImageFilter)

include_directories(/home/doriad/src/ITK/Wrapping/WrapITK/ExternalProjects/ItkVtkGlue/src/)

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

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

ADD_EXECUTABLE(RegionOfInterestImageFilter RegionOfInterestImageFilter.cpp) TARGET_LINK_LIBRARIES(RegionOfInterestImageFilter vtkHybrid ITKBasicFilters ITKCommon ITKIO)

</source>