]> Creatis software - FrontAlgorithms.git/blobdiff - appli/examples/example_ImageAlgorithmDijkstra_02.cxx
...
[FrontAlgorithms.git] / appli / examples / example_ImageAlgorithmDijkstra_02.cxx
diff --git a/appli/examples/example_ImageAlgorithmDijkstra_02.cxx b/appli/examples/example_ImageAlgorithmDijkstra_02.cxx
deleted file mode 100644 (file)
index 728313e..0000000
+++ /dev/null
@@ -1,205 +0,0 @@
-#include <iostream>
-#include <limits>
-#include <string>
-
-#include <itkImage.h>
-#include <itkImageFileReader.h>
-#include <itkRGBAPixel.h>
-#include <itkSignedDanielssonDistanceMapImageFilter.h>
-#include <itkImageToVTKImageFilter.h>
-
-#include <vtkImageActor.h>
-#include <vtkInteractorStyleImage.h>
-#include <vtkPointHandleRepresentation3D.h>
-#include <vtkProperty.h>
-#include <vtkRenderer.h>
-#include <vtkRenderWindow.h>
-#include <vtkRenderWindowInteractor.h>
-#include <vtkSeedRepresentation.h>
-#include <vtkSeedWidget.h>
-#include <vtkSmartPointer.h>
-
-#include <fpa/Image/Dijkstra.h>
-#include <fpa/Base/Functors/InvertCostFunction.h>
-#include <fpa/Base/TreeExtractor.h>
-#include <fpa/VTK/Image2DObserver.h>
-
-// -------------------------------------------------------------------------
-const unsigned int Dim = 2;
-typedef unsigned char TPixel;
-typedef itk::RGBAPixel< TPixel > TRGBAPixel;
-typedef double TScalar;
-typedef itk::Image< TPixel, Dim >  TImage;
-typedef itk::Image< TScalar, Dim > TDistanceMap;
-typedef itk::Image< TRGBAPixel, Dim > TRGBAImage;
-typedef itk::ImageToVTKImageFilter< TImage > TVTKImage;
-typedef itk::ImageToVTKImageFilter< TRGBAImage > TVTKRGBAImage;
-
-typedef itk::ImageFileReader< TImage > TImageReader;
-typedef
-itk::SignedDanielssonDistanceMapImageFilter< TImage, TDistanceMap >
-TDistanceFilter;
-
-typedef fpa::Image::Dijkstra< TDistanceMap, TScalar > TFrontAlgorithm;
-typedef fpa::Base::TreeExtractor< TFrontAlgorithm >   TExtractor;
-typedef fpa::Base::Functors::InvertCostFunction< TScalar > TScalarFunction;
-
-typedef
-fpa::VTK::Image2DObserver< TExtractor, vtkRenderWindow >
-TObserver;
-
-// -------------------------------------------------------------------------
-int main( int argc, char* argv[] )
-{
-  if( argc < 2 )
-  {
-    std::cerr
-      << "Usage: " << argv[ 0 ]
-      << " input_image [stop_at_one_front]" << std::endl;
-    return( 1 );
-
-  } // fi
-  std::string input_image_fn = argv[ 1 ];
-  bool stop_at_one_front = false;
-  if( 2 < argc )
-    stop_at_one_front = ( std::atoi( argv[ 2 ] ) == 1 );
-
-  // Read image
-  TImageReader::Pointer input_image_reader = TImageReader::New( );
-  input_image_reader->SetFileName( input_image_fn );
-  try
-  {
-    input_image_reader->Update( );
-  }
-  catch( itk::ExceptionObject& err )
-  {
-    std::cerr << "Error caught: " << err << std::endl;
-    return( 1 );
-
-  } // yrt
-    
-  TDistanceFilter::Pointer dist_filter = TDistanceFilter::New( );
-  dist_filter->SetInput( input_image_reader->GetOutput( ) );
-  dist_filter->InsideIsPositiveOn( );
-  dist_filter->SquaredDistanceOff( );
-  dist_filter->Update( );
-
-  TImage::ConstPointer input_image = input_image_reader->GetOutput( );
-
-  TVTKImage::Pointer vtk_image = TVTKImage::New( );
-  vtk_image->SetInput( input_image );
-  vtk_image->Update( );
-
-  // VTK visualization
-  vtkSmartPointer< vtkImageActor > actor =
-    vtkSmartPointer< vtkImageActor >::New( );
-  actor->SetInputData( vtk_image->GetOutput( ) );
-
-  vtkSmartPointer< vtkRenderer > renderer =
-    vtkSmartPointer< vtkRenderer >::New( );
-  renderer->SetBackground( 0.1, 0.2, 0.7 );
-  renderer->AddActor( actor );
-  vtkSmartPointer< vtkRenderWindow > window =
-    vtkSmartPointer< vtkRenderWindow >::New( );
-  window->SetSize( 800, 800 );
-  window->AddRenderer( renderer );
-
-  // VTK interaction
-  vtkSmartPointer< vtkInteractorStyleImage > imageStyle =
-    vtkSmartPointer< vtkInteractorStyleImage >::New( );
-  vtkSmartPointer< vtkRenderWindowInteractor > interactor =
-    vtkSmartPointer< vtkRenderWindowInteractor >::New( );
-  interactor->SetInteractorStyle( imageStyle );
-  window->SetInteractor( interactor );
-  window->Render( );
-
-  // Create the widget and its representation
-  vtkSmartPointer< vtkPointHandleRepresentation3D > handle =
-    vtkSmartPointer< vtkPointHandleRepresentation3D >::New( );
-  handle->GetProperty( )->SetColor( 1, 0, 0 );
-  vtkSmartPointer< vtkSeedRepresentation > rep =
-    vtkSmartPointer< vtkSeedRepresentation >::New( );
-  rep->SetHandleRepresentation( handle );
-
-  vtkSmartPointer< vtkSeedWidget > widget =
-    vtkSmartPointer< vtkSeedWidget >::New( );
-  widget->SetInteractor( interactor );
-  widget->SetRepresentation( rep );
-
-  // Let some interaction
-  interactor->Initialize( );
-  window->Render( );
-  widget->On( );
-  interactor->Start( );
-
-  // Configure observer
-  TObserver::Pointer obs = TObserver::New( );
-  obs->SetImage( dist_filter->GetOutput( ), window );
-
-  // Configure membership function
-  TScalarFunction::Pointer cost_function = TScalarFunction::New( );
-
-  // Configure algorithm
-  TExtractor::Pointer algorithm = TExtractor::New( );
-  for( unsigned int s = 0; s < rep->GetNumberOfSeeds( ); s++ )
-  {
-    double pos[ 3 ];
-    rep->GetSeedWorldPosition( s, pos );
-
-    TImage::PointType pnt;
-    pnt[ 0 ] = pos[ 0 ];
-    pnt[ 1 ] = pos[ 1 ];
-
-    TImage::IndexType idx;
-    if( input_image->TransformPhysicalPointToIndex( pnt, idx ) )
-    {
-      algorithm->AddSeed( idx, 0 );
-      if( s == 0 )
-        algorithm->SetRoot( idx );
-      else
-        algorithm->AddLeaf( idx );
-
-    } // fi
-
-  } // rof
-  algorithm->AddObserver( itk::AnyEvent( ), obs );
-  algorithm->ThrowEventsOn( );
-  algorithm->SetInput( dist_filter->GetOutput( ) );
-  algorithm->SetNeighborhoodOrder( 1 );
-  algorithm->SetStopAtOneFront( stop_at_one_front );
-  algorithm->SetCostConversion( cost_function );
-  algorithm->Update( );
-
-  // Create image with tree
-  TPixel transparent_color[] = { 0, 0, 0, 0 };
-  TPixel solid_color[] = { 255, 255, 0, 255 };
-  TRGBAImage::Pointer tree_image = TRGBAImage::New( );
-  tree_image->CopyInformation( input_image );
-  tree_image->SetRequestedRegionToLargestPossibleRegion( );
-  tree_image->SetBufferedRegion( tree_image->GetRequestedRegion( ) );
-  tree_image->Allocate( );
-  tree_image->FillBuffer( TRGBAPixel( transparent_color ) );
-
-  const TExtractor::TTree& tree = algorithm->GetTree( );
-  TExtractor::TTree::const_iterator tIt = tree.begin( );
-  for( ; tIt != tree.end( ); ++tIt )
-    tree_image->SetPixel( tIt->first, TRGBAPixel( solid_color ) );
-
-  TVTKRGBAImage::Pointer vtk_tree_image = TVTKRGBAImage::New( );
-  vtk_tree_image->SetInput( tree_image );
-  vtk_tree_image->Update( );
-
-  vtkSmartPointer< vtkImageActor > tree_actor =
-    vtkSmartPointer< vtkImageActor >::New( );
-  tree_actor->SetInputData( vtk_tree_image->GetOutput( ) );
-
-  renderer->AddActor( tree_actor );
-  window->Render( );
-
-  // One last interaction
-  interactor->Start( );
-
-  return( 0 );
-}
-
-// eof - $RCSfile$