ITK/Examples/ImageProcessing/MinimumMaximumImageCalculator: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
(Created page with "==MinimumMaximumImageCalculator.cxx== <source lang="cpp"> #include "itkImage.h" #include "itkImageFileWriter.h" #include "itkMinimumMaximumImageCalculator.h" #include "itkImageFi...")
 
(No difference)

Revision as of 01:49, 18 November 2010

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>