X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2Fexamples%2Fexample_ImageAlgorithmDijkstra_02.cxx;fp=appli%2Fexamples%2Fexample_ImageAlgorithmDijkstra_02.cxx;h=0000000000000000000000000000000000000000;hb=9c4035dc18f4e44a92cda3e3c1c6e583c94ef06b;hp=728313e6e0eb51fa7a1e3f7a3403470a4802713e;hpb=e832f438861464a8d521464b61be7e31c896adb8;p=FrontAlgorithms.git diff --git a/appli/examples/example_ImageAlgorithmDijkstra_02.cxx b/appli/examples/example_ImageAlgorithmDijkstra_02.cxx deleted file mode 100644 index 728313e..0000000 --- a/appli/examples/example_ImageAlgorithmDijkstra_02.cxx +++ /dev/null @@ -1,205 +0,0 @@ -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -// ------------------------------------------------------------------------- -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$