1 #include "ImageDijkstra.h"
3 #include <cpPlugins/Interface/Image.h>
4 #include <fpaPlugins/MinimumSpanningTree.h>
6 #include <fpa/Image/Dijkstra.h>
7 #include <fpa/Base/Functors/InvertCostFunction.h>
9 // -------------------------------------------------------------------------
10 fpaPlugins::ImageDijkstra::
14 this->_AddOutput< fpaPlugins::MinimumSpanningTree >( "MinimumSpanningTree" );
17 // -------------------------------------------------------------------------
18 fpaPlugins::ImageDijkstra::
23 // -------------------------------------------------------------------------
24 std::string fpaPlugins::ImageDijkstra::
27 auto input = this->GetInputData( "Input" );
28 itk::DataObject* image = NULL;
30 cpPlugins_Image_Demangle_AllScalarTypes( 2, input, image, r, _GD0 );
31 else cpPlugins_Image_Demangle_AllScalarTypes( 3, input, image, r, _GD0 );
32 else r = "fpaPlugins::ImageDijkstra: Input image type not supported.";
36 // -------------------------------------------------------------------------
38 std::string fpaPlugins::ImageDijkstra::
39 _GD0( itk::DataObject* data )
41 typedef typename I::PixelType _TOutPixel;
42 typedef itk::Image< _TOutPixel, I::ImageDimension > _TOut;
43 typedef fpa::Image::Dijkstra< I, _TOut > _TFilter;
44 typedef typename _TFilter::TResult _TCost;
45 typedef fpa::Base::Functors::InvertCostFunction< _TCost > _TCostFunctor;
46 typedef typename _TFilter::TMinimumSpanningTree _TMST;
49 _TFilter* filter = this->_ConfigureFilter< _TFilter >( );
51 // Connect cost functor
52 typename _TCostFunctor::Pointer functor = _TCostFunctor::New( );
53 filter->SetConversionFunction( functor );
56 this->_ExecuteFilter( filter );
58 // Connect remaining output
59 auto mst = this->GetOutputData( "MinimumSpanningTree" );
60 mst->SetITK( filter->GetMinimumSpanningTree( ) );