1 #include "MultiplyImageAndDistanceMap.h"
2 #include <cpPlugins/DataObjects/Image.h>
4 #include <fpa/Image/MultiplyImageAndDistanceMap.h>
5 #include <fpa/Image/MultiplyImageAndDistanceMap.hxx>
8 #include <fpa/Image/Dijkstra.h>
9 #include <fpa/Base/Algorithm.hxx>
10 #include <fpa/Base/Dijkstra.hxx>
11 #include <fpa/Image/Algorithm.hxx>
12 #include <fpa/Image/Dijkstra.hxx>
15 // -------------------------------------------------------------------------
16 fpaPlugins::MultiplyImageAndDistanceMap::
17 MultiplyImageAndDistanceMap( )
20 typedef cpPlugins::DataObjects::Image _TImage;
21 this->_ConfigureInput< _TImage >( "Input", true, false );
22 this->_ConfigureInput< _TImage >( "DistanceMap", true, false );
23 this->_ConfigureOutput< _TImage >( "Output" );
26 this->_ConfigureOutput< cpPlugins::BaseObjects::DataObject >( "MST" );
27 std::vector< std::string > choices;
28 choices.push_back( "float" );
29 choices.push_back( "double" );
30 this->m_Parameters.ConfigureAsChoices( "ResultType", choices );
31 this->m_Parameters.SetSelectedChoice( "ResultType", "float" );
32 this->m_Parameters.ConfigureAsBool( "FillNodeQueue" );
33 this->m_Parameters.SetBool( "FillNodeQueue", false );
37 // -------------------------------------------------------------------------
38 fpaPlugins::MultiplyImageAndDistanceMap::
39 ~MultiplyImageAndDistanceMap( )
43 // -------------------------------------------------------------------------
44 void fpaPlugins::MultiplyImageAndDistanceMap::
47 auto o = this->GetInputData( "Input" );
48 cpPlugins_Demangle_ImageScalars_Dims( o, _GD0 );
49 else this->_Error( "Invalid input image." );
52 // -------------------------------------------------------------------------
53 template< class _TImage >
54 void fpaPlugins::MultiplyImageAndDistanceMap::
55 _GD0( _TImage* image )
57 typedef itk::Image< float, _TImage::ImageDimension > _TFloat;
58 typedef itk::Image< double, _TImage::ImageDimension > _TDouble;
60 auto f = this->GetInputData< _TFloat >( "DistanceMap" );
61 auto d = this->GetInputData< _TDouble >( "DistanceMap" );
62 if ( f != NULL ) this->_GD1( image, f );
63 else if( d != NULL ) this->_GD1( image, d );
64 else this->_Error( "Invalid distance map." );
67 // -------------------------------------------------------------------------
68 template< class _TImage, class _TDistanceMap >
69 void fpaPlugins::MultiplyImageAndDistanceMap::
70 _GD1( _TImage* input, _TDistanceMap* dmap )
72 typedef fpa::Image::MultiplyImageAndDistanceMap< _TImage, _TDistanceMap > _TFilter;
74 auto filter = this->_CreateITK< _TFilter >( );
75 filter->SetInput( input );
76 filter->SetDistanceMap( dmap );
78 this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );