ITK/Examples/ImageProcessing/MinimumMaximumImageCalculator: Difference between revisions

From KitwarePublic
< ITK‎ | Examples
Jump to navigationJump to search
No edit summary
Line 1: Line 1:
<div class="floatcenter">[[File:ITK_Examples_Baseline_ImageProcessing_TestMinimumMaximumImageCalculator.png]]</div>
==MinimumMaximumImageCalculator.cxx==
==MinimumMaximumImageCalculator.cxx==
<source lang="cpp">
<source lang="cpp">

Revision as of 04:09, 22 December 2010

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>