ITK/Examples/ImageProcessing/MinimumMaximumImageCalculator

From KitwarePublic
< ITK‎ | Examples
Revision as of 04:09, 22 December 2010 by Lorensen (talk | contribs)
Jump to navigationJump to search
ITK Examples Baseline ImageProcessing TestMinimumMaximumImageCalculator.png

MinimumMaximumImageCalculator.cxx

<source lang="cpp">

  1. include "itkImage.h"
  2. include "itkImageFileWriter.h"
  3. include "itkMinimumMaximumImageCalculator.h"
  4. include "itkImageFileReader.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"
  7. include "vtkSphereSource.h"
  8. include "vtkPolyDataMapper.h"
  9. include "vtkActor.h"
  10. include "vtkProperty.h"

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

int main(int argc, char*argv[]) {

 if(argc < 2)
   {
   std::cerr << "Required: filename" << std::endl;
   return EXIT_FAILURE;
   }
 std::string inputFilename = argv[1];
 typedef itk::Image< unsigned char, 2 >  ImageType;
 typedef itk::ImageFileReader<ImageType> ReaderType;
 ReaderType::Pointer reader = ReaderType::New();
 reader->SetFileName(inputFilename.c_str());
 reader->Update();
 typedef itk::MinimumMaximumImageCalculator <ImageType>
         ImageCalculatorFilterType;
 ImageCalculatorFilterType::Pointer imageCalculatorFilter
         = ImageCalculatorFilterType::New ();
 imageCalculatorFilter->SetImage(reader->GetOutput());
 imageCalculatorFilter->Compute();
 typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType;
 ConnectorType::Pointer originalConnector = ConnectorType::New();
 originalConnector->SetInput(reader->GetOutput());
 vtkSmartPointer<vtkImageActor> originalActor =
   vtkSmartPointer<vtkImageActor>::New();
 originalActor->SetInput(originalConnector->GetOutput());
 vtkSmartPointer<vtkSphereSource> minimumSphereSource =
   vtkSmartPointer<vtkSphereSource>::New();
 ImageType::IndexType minimumLocation = imageCalculatorFilter->GetIndexOfMinimum();
 minimumSphereSource->SetCenter(minimumLocation[0], minimumLocation[1], 0);
 minimumSphereSource->SetRadius(10);
 vtkSmartPointer<vtkPolyDataMapper> minimumMapper =
   vtkSmartPointer<vtkPolyDataMapper>::New();
 minimumMapper->SetInputConnection(minimumSphereSource->GetOutputPort());
 vtkSmartPointer<vtkActor> minimumActor =
   vtkSmartPointer<vtkActor>::New();
 minimumActor->SetMapper(minimumMapper);
 minimumActor->GetProperty()->SetColor(0,1,0);
 
 vtkSmartPointer<vtkSphereSource> maximumSphereSource =
   vtkSmartPointer<vtkSphereSource>::New();
 maximumSphereSource->SetRadius(10);
 ImageType::IndexType maximumLocation = imageCalculatorFilter->GetIndexOfMaximum();
 maximumSphereSource->SetCenter(maximumLocation[0], maximumLocation[1], 0);
 vtkSmartPointer<vtkPolyDataMapper> maximumMapper =
   vtkSmartPointer<vtkPolyDataMapper>::New();
 maximumMapper->SetInputConnection(maximumSphereSource->GetOutputPort());
 vtkSmartPointer<vtkActor> maximumActor =
   vtkSmartPointer<vtkActor>::New();
 maximumActor->SetMapper(maximumMapper);
 maximumActor->GetProperty()->SetColor(1,0,0);


 // Visualize
 vtkSmartPointer<vtkRenderWindow> renderWindow =
   vtkSmartPointer<vtkRenderWindow>::New();
 vtkSmartPointer<vtkRenderWindowInteractor> interactor =
   vtkSmartPointer<vtkRenderWindowInteractor>::New();
 interactor->SetRenderWindow(renderWindow);
 vtkSmartPointer<vtkRenderer> renderer =
   vtkSmartPointer<vtkRenderer>::New();
 renderWindow->AddRenderer(renderer);
 // Add the sphere to the left and the cube to the right
 renderer->AddActor(originalActor);
 renderer->AddActor(minimumActor);
 renderer->AddActor(maximumActor);
 renderer->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(MinimumMaximumImageCalculator)

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(MinimumMaximumImageCalculator MinimumMaximumImageCalculator.cxx) TARGET_LINK_LIBRARIES(MinimumMaximumImageCalculator vtkHybrid ITKBasicFilters ITKCommon ITKIO) </source>