X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2Ffpa%2FExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx;h=ea2c37abfeb6cd77b9fc72216658165817bfe5f5;hb=e832f438861464a8d521464b61be7e31c896adb8;hp=0b1d597b9fd96f486324ca59a028e326e7874f43;hpb=826a318db2e9b41fbd865e41ebb5906efdefbb02;p=FrontAlgorithms.git diff --git a/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx b/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx index 0b1d597..ea2c37a 100644 --- a/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx +++ b/plugins/fpa/ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.cxx @@ -1,12 +1,9 @@ #include "ExtractEndPointsAndBifurcationsFromMinimumSpanningTree.h" +#include #include #include -#include -#include -#include -#include -#include +#include // ------------------------------------------------------------------------- fpaPlugins::ExtractEndPointsAndBifurcationsFromMinimumSpanningTree:: @@ -19,6 +16,7 @@ ExtractEndPointsAndBifurcationsFromMinimumSpanningTree( ) 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 ); @@ -31,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 >( ); @@ -76,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$