X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2FImageAlgorithms%2FDijkstra.cxx;h=7d4fe1edac38094020468f533a158550a974bb6a;hb=d93ab4fea6dbc791560451ecdc4bf7555d8cf11d;hp=c15d96fb4506b1a3bb3d2c6f868c6388d620954d;hpb=40fb0405cfef444001429f8ba49c407ce9168a94;p=FrontAlgorithms.git diff --git a/plugins/ImageAlgorithms/Dijkstra.cxx b/plugins/ImageAlgorithms/Dijkstra.cxx index c15d96f..7d4fe1e 100644 --- a/plugins/ImageAlgorithms/Dijkstra.cxx +++ b/plugins/ImageAlgorithms/Dijkstra.cxx @@ -1,18 +1,19 @@ -#include +#include "Dijkstra.h" +#include #include #include // ------------------------------------------------------------------------- -fpaPluginsImageAlgorithms::Dijkstra:: +fpaPlugins_ImageAlgorithms::Dijkstra:: Dijkstra( ) : Superclass( ) { - typedef cpPlugins::Pipeline::DataObject _TData; + typedef cpPlugins::Pipeline::DataObject _TFunctor; typedef cpInstances::DataObjects::Image _TMST; - this->_ConfigureInput< _TData >( "VertexFunction", false, false ); - this->_ConfigureInput< _TData >( "ConversionFunction", false, false ); + this->_ConfigureInput< _TFunctor >( "VertexFunction", false, false ); + this->_ConfigureInput< _TFunctor >( "ConversionFunction", false, false ); this->_ConfigureOutput< _TMST >( "MST" ); std::vector< std::string > choices; @@ -23,13 +24,13 @@ Dijkstra( ) } // ------------------------------------------------------------------------- -fpaPluginsImageAlgorithms::Dijkstra:: +fpaPlugins_ImageAlgorithms::Dijkstra:: ~Dijkstra( ) { } // ------------------------------------------------------------------------- -void fpaPluginsImageAlgorithms::Dijkstra:: +void fpaPlugins_ImageAlgorithms::Dijkstra:: _GenerateData( ) { auto o = this->GetInputData( "Input" ); @@ -39,7 +40,7 @@ _GenerateData( ) // ------------------------------------------------------------------------- template< class _TImage > -void fpaPluginsImageAlgorithms::Dijkstra:: +void fpaPlugins_ImageAlgorithms::Dijkstra:: _GD0( _TImage* image ) { typedef itk::Image< float, _TImage::ImageDimension > _TFloat; @@ -52,35 +53,46 @@ _GD0( _TImage* image ) // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > -void fpaPluginsImageAlgorithms::Dijkstra:: +void fpaPlugins_ImageAlgorithms::Dijkstra:: _GD1( _TInputImage* image ) { + typedef cpPlugins::Pipeline::Functor _TFunctor; typedef fpa::Image::Dijkstra< _TInputImage, _TOutputImage > _TFilter; typedef typename _TFilter::TConversionFunction _TConversionFunction; typedef typename _TFilter::TVertexFunction _TVertexFunction; + // Create filter auto filter = this->_CreateITK< _TFilter >( ); std::vector< typename _TInputImage::IndexType > seeds; this->_ConfigureFilter( filter, image, seeds ); + + // Instantiate functors + auto cost_conversion = this->GetInputData< _TFunctor >( "ConversionFunction" ); + if( cost_conversion != NULL ) + { + cost_conversion->Instantiate( filter ); + auto cost_conversion_functor = cost_conversion->GetFunctor< _TConversionFunction >( ); + if( cost_conversion_functor != NULL ) + filter->SetConversionFunction( cost_conversion_functor ); + + } // fi + + auto vertex = this->GetInputData< _TFunctor >( "VertexFunction" ); + if( vertex != NULL ) + { + vertex->Instantiate( filter ); + auto vertex_functor = vertex->GetFunctor< _TVertexFunction >( ); + if( vertex_functor != NULL ) + filter->SetVertexFunction( vertex_functor ); + + } // fi + + // Finish filter's configuration filter->ClearSeeds( ); for( auto seed : seeds ) filter->AddSeed( seed, ( typename _TOutputImage::PixelType )( 0 ) ); filter->Update( ); this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) ); - - /* TODO - auto filter = this->_CreateITK< _TFilter >( ); - this->_ConfigureFilter( filter, image ); - auto cost = this->GetInputData< _TCost >( "Cost" ); - auto conv = this->GetInputData< _TCostConversion >( "CostConversion" ); - if( cost != NULL ) - filter->SetCostFunction( cost ); - if( conv != NULL ) - filter->SetCostConversionFunction( conv ); - filter->Update( ); - this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) ); - this->GetOutput( "MST" )->SetITK( filter->GetMinimumSpanningTree( ) ); - */ } // eof - $RCSfile$