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::
28 this->GetInputData< cpPlugins::Interface::Image >( "Input" );
29 itk::DataObject* image = NULL;
31 cpPlugins_Image_Demangle_AllScalarTypes( 2, input, image, r, _GD0 );
32 else cpPlugins_Image_Demangle_AllScalarTypes( 3, input, image, r, _GD0 );
33 else r = "fpaPlugins::ImageDijkstra: Input image type not supported.";
37 // -------------------------------------------------------------------------
39 std::string fpaPlugins::ImageDijkstra::
40 _GD0( itk::DataObject* data )
42 typedef typename I::PixelType _TOutPixel;
43 typedef itk::Image< _TOutPixel, I::ImageDimension > _TOut;
44 typedef fpa::Image::Dijkstra< I, _TOut > _TFilter;
45 typedef typename _TFilter::TResult _TCost;
46 typedef fpa::Base::Functors::InvertCostFunction< _TCost > _TCostFunctor;
47 typedef typename _TFilter::TMinimumSpanningTree _TMST;
50 _TFilter* filter = this->_ConfigureFilter< _TFilter >( );
52 // Connect cost functor
53 typename _TCostFunctor::Pointer functor = _TCostFunctor::New( );
54 filter->SetConversionFunction( functor );
57 this->_ExecuteFilter( filter );
59 // Connect remaining output
61 this->GetOutputData< fpaPlugins::MinimumSpanningTree >( "MinimumSpanningTree" );
62 mst->SetITK( filter->GetMinimumSpanningTree( ) );