X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2Ffpa%2FExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx;h=ea2c37abfeb6cd77b9fc72216658165817bfe5f5;hb=e832f438861464a8d521464b61be7e31c896adb8;hp=997fa49f06250d315c65c84223aee85021a87919;hpb=8fafb83c41ab35dfc25eb637170882a612924433;p=FrontAlgorithms.git diff --git a/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx b/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx index 997fa49..ea2c37a 100644 --- a/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx +++ b/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx @@ -1,10 +1,9 @@ #include "ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h" -#include "MinimumSpanningTree.h" +#include #include -#include -#include -#include +#include +#include // ------------------------------------------------------------------------- fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: @@ -14,9 +13,10 @@ ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( ) this->_AddInput( "CostsImage" ); this->_AddInput( "DistanceMap" ); this->_AddInput( "MST" ); - this->_AddOutput< cpPlugins::DataObject >( "EndPoints" ); - this->_AddOutput< cpPlugins::DataObject >( "Bifurcations" ); - this->_AddOutput< cpPlugins::DataObject >( "Collisions" ); + this->_AddOutput< cpPlugins::ImageIndexesContainer >( "EndPoints" ); + this->_AddOutput< cpPlugins::ImageIndexesContainer >( "Bifurcations" ); + this->_AddOutput< cpPlugins::ImageIndexesContainer >( "Collisions" ); + this->_AddOutput< fpaPlugins::ImageSkeleton >( "Skeleton" ); this->m_Parameters.ConfigureAsBool( "SquaredDistanceMap" ); this->m_Parameters.SetBool( "SquaredDistanceMap", false ); @@ -29,40 +29,30 @@ fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: } // ------------------------------------------------------------------------- -std::string fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: +void fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: _GenerateData( ) { - auto image = this->GetInputData( "CostsImage" )->GetITK< itk::DataObject >( ); - std::string r = cpPlugin_Image_Demangle_Pixel_Dim( _GD0, image, float, 2 ); - if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( _GD0, image, double, 2 ); - if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( _GD0, image, float, 3 ); - if( r != "" ) r = cpPlugin_Image_Demangle_Pixel_Dim( _GD0, image, double, 3 ); - return( r ); + auto image = this->GetInputData< itk::DataObject >( "CostsImage" ); + cpPlugins_Image_Demangle_Pixel_AllFloats ( _GD0, image, 2 ); + else cpPlugins_Image_Demangle_Pixel_AllFloats( _GD0, image, 3 ); + else this->_Error( "Invalid input costs." ); } // ------------------------------------------------------------------------- template< class _TImage > -std::string fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: +void fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: _GD0( _TImage* image ) { typedef fpa::Image::MinimumSpanningTree< _TImage::ImageDimension > _TMST; typedef fpa::Image::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree< _TImage, _TMST > _TFilter; // Check input objects' integrity - if( image == NULL ) - return( - "fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree: No valid input costs image." - ); - auto dmap = this->GetInputData( "DistanceMap" )->GetITK< _TImage >( ); + auto dmap = this->GetInputData< _TImage >( "DistanceMap" ); if( dmap == NULL ) - return( - "fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree: Distance map does not have the same type as the costs image." - ); - auto mst = this->GetInputData( "MST" )->GetITK< _TMST >( ); + this->_Error( "Distance map does not have the same type as the costs image." ); + auto mst = this->GetInputData< _TMST >( "MST" ); if( mst == NULL ) - return( - "fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree: No valid input tree." - ); + this->_Error( "No valid input tree." ); // Create filter and connect inputs _TFilter* filter = this->_CreateITK< _TFilter >( ); @@ -74,10 +64,10 @@ _GD0( _TImage* image ) ); filter->Update( ); - this->GetOutputData( "EndPoints" )->SetITK( filter->GetEndPoints( ) ); - this->GetOutputData( "Bifurcations" )->SetITK( filter->GetBifurcations( ) ); - this->GetOutputData( "Collisions" )->SetITK( filter->GetCollisions( ) ); - return( "" ); + this->GetOutput( "EndPoints" )->SetITK( filter->GetEndPoints( ) ); + this->GetOutput( "Bifurcations" )->SetITK( filter->GetBifurcations( ) ); + this->GetOutput( "Collisions" )->SetITK( filter->GetCollisions( ) ); + this->GetOutput( "Skeleton" )->SetITK( filter->GetSkeleton( ) ); } // eof - $RCSfile$