ITK/Examples/ImageProcessing/MinimumMaximumImageCalculator

From KitwarePublic
< ITK‎ | Examples
Revision as of 18:23, 21 October 2010 by Daviddoria (talk | contribs) (Created page with "==MinimumMaximumImageCalculator.cxx== <source lang="cpp"> #include "itkImage.h" #include "itkImageFileWriter.h" #include "itkMinimumMaximumImageCalculator.h" #include "itkImageFi...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

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>