]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpaPlugins/ImageDijkstra.cxx
...
[FrontAlgorithms.git] / lib / fpaPlugins / ImageDijkstra.cxx
index 185859eca95c6e33ae8996386837e1b425543c4b..37e16daf053c5f5d9d05fc4ef7fdca045de0ca81 100644 (file)
@@ -1,37 +1,17 @@
 #include "ImageDijkstra.h"
 
 #include <cpPlugins/Interface/Image.h>
-#include <cpPlugins/Interface/PointList.h>
 #include <fpaPlugins/MinimumSpanningTree.h>
 
 #include <fpa/Image/Dijkstra.h>
-#include <fpa/VTK/Image2DObserver.h>
-#include <fpa/VTK/Image3DObserver.h>
 #include <fpa/Base/Functors/InvertCostFunction.h>
 
-#include <vtkRenderWindow.h>
-#include <vtkRenderWindowInteractor.h>
-
 // -------------------------------------------------------------------------
 fpaPlugins::ImageDijkstra::
 ImageDijkstra( )
   : Superclass( )
 {
-  this->_AddInput( "Input" );
-  this->_AddInput( "Seeds" );
-  this->_AddOutput< cpPlugins::Interface::Image >( "Output" );
   this->_AddOutput< fpaPlugins::MinimumSpanningTree >( "MinimumSpanningTree" );
-
-  this->m_Parameters->ConfigureAsBool( "VisualDebug" );
-  this->m_Parameters->ConfigureAsBool( "StopAtOneFront" );
-  this->m_Parameters->SetBool( "VisualDebug", false );
-  this->m_Parameters->SetBool( "StopAtOneFront", false );
-
-  std::vector< std::string > orders;
-  orders.push_back( "1" );
-  orders.push_back( "2" );
-  this->m_Parameters->ConfigureAsChoices( "NeighborhoodOrder", orders );
-  this->m_Parameters->SetSelectedChoice( "NeighborhoodOrder", "1" );
 }
 
 // -------------------------------------------------------------------------
@@ -46,9 +26,6 @@ _GenerateData( )
 {
   auto input =
     this->GetInputData< cpPlugins::Interface::Image >( "Input" );
-  if( input == NULL )
-    return( "fpaPlugins::ImageDijkstra: No input image." );
-
   itk::DataObject* image = NULL;
   std::string r = "";
   cpPlugins_Image_Demangle_AllScalarTypes( 2, input, image, r, _GD0 );
@@ -67,62 +44,23 @@ _GD0( itk::DataObject* data )
   typedef fpa::Image::Dijkstra< I, _TOut >                  _TFilter;
   typedef typename _TFilter::TResult                        _TCost;
   typedef fpa::Base::Functors::InvertCostFunction< _TCost > _TCostFunctor;
-  typedef typename I::PointType                             _TPoint;
   typedef typename _TFilter::TMinimumSpanningTree           _TMST;
 
-  auto seeds =
-    this->GetInputData< cpPlugins::Interface::PointList >( "Seeds" );
-  if( seeds == NULL )
-    return( "fpaPlugins::ImageRegionGrow: No given seeds." );
-  I* image = dynamic_cast< I* >( data );
-
-  // Create filter and connect input
-  _TFilter* filter = this->_CreateITK< _TFilter >( );
-  filter->SetInput( image );
+  // Create filter
+  _TFilter* filter = this->_ConfigureFilter< _TFilter >( );
 
   // Connect cost functor
   typename _TCostFunctor::Pointer functor = _TCostFunctor::New( );
   filter->SetConversionFunction( functor );
 
-  // Set numeric parameters
-  Superclass::TParameters* params = this->m_Parameters;
-  std::string order = params->GetSelectedChoice( "NeighborhoodOrder" );
-  filter->SetNeighborhoodOrder( order[ 0 ] - '0' );
-  filter->SetStopAtOneFront( params->GetBool( "StopAtOneFront" ) );
-
-  // Assign seeds
-  filter->ClearSeeds( );
-  for( unsigned int s = 0; s < seeds->GetNumberOfPoints( ); ++s )
-  {
-    _TPoint pnt = seeds->GetPoint< _TPoint >( s );
-    typename I::IndexType idx;
-    if( image->TransformPhysicalPointToIndex( pnt, idx ) )
-      filter->AddSeed( idx, 0 );
-
-  } // rof
-
   // Go!!!
-  this->_ConfigureDebugger( filter );
-  filter->Update( );
-  this->_DeconfigureDebugger( filter );
+  this->_ExecuteFilter( filter );
 
-  // Connect output
-  auto out =
-    this->GetOutputData< cpPlugins::Interface::Image >( "Output" );
+  // Connect remaining output
   auto mst =
     this->GetOutputData< fpaPlugins::MinimumSpanningTree >( "MinimumSpanningTree" );
-  if( out != NULL )
-    out->SetITK< _TOut >( filter->GetOutput( ) );
-  else
-    return( "fpaPlugins::ImageDijkstra: output not correctly created." );
-
-  if( mst != NULL )
-  {
-    mst->SetITK< _TMST >( filter->GetMinimumSpanningTree( ) );
-    return( "" );
-  }
-  else
-    return( "fpaPlugins::ImageDijkstra: minimum spanning tree." );
+  mst->SetITK( filter->GetMinimumSpanningTree( ) );
+  return( "" );
 }
 
 // eof - $RCSfile$