-#include <Plugins/ImageDijkstra.h>
+#include <ImageAlgorithms/Dijkstra.h>
#include <cpInstances/Image.h>
-#include <cpInstances/Image_Demanglers.h>
#include <fpa/Image/Dijkstra.h>
-#include <vtkPolyData.h>
// -------------------------------------------------------------------------
-fpaPlugins::ImageDijkstra::
-ImageDijkstra( )
+fpaPluginsImageAlgorithms::Dijkstra::
+Dijkstra( )
: Superclass( )
{
typedef cpPlugins::BaseObjects::DataObject _TData;
- typedef cpInstances::Image _TMST;
+ typedef cpInstances::Image _TMST;
this->_ConfigureInput< _TData >( "Cost", false, false );
this->_ConfigureInput< _TData >( "CostConversion", false, false );
}
// -------------------------------------------------------------------------
-fpaPlugins::ImageDijkstra::
-~ImageDijkstra( )
+fpaPluginsImageAlgorithms::Dijkstra::
+~Dijkstra( )
{
}
// -------------------------------------------------------------------------
-void fpaPlugins::ImageDijkstra::
+void fpaPluginsImageAlgorithms::Dijkstra::
_GenerateData( )
{
auto o = this->GetInputData( "Input" );
// -------------------------------------------------------------------------
template< class _TImage >
-void fpaPlugins::ImageDijkstra::
+void fpaPluginsImageAlgorithms::Dijkstra::
_GD0( _TImage* image )
{
typedef itk::Image< float, _TImage::ImageDimension > _TFloat;
// -------------------------------------------------------------------------
template< class _TInputImage, class _TOutputImage >
-void fpaPlugins::ImageDijkstra::
+void fpaPluginsImageAlgorithms::Dijkstra::
_GD1( _TInputImage* image )
{
typedef fpa::Image::Dijkstra< _TInputImage, _TOutputImage > _TFilter;
typedef typename _TFilter::TCostConversionFunction _TCostConversion;
typedef typename _TFilter::TCostFunction _TCost;
- typedef typename _TFilter::TNeighborhoodFunction _TNeighborhood;
- // Get functors
- auto neig = this->GetInputData< _TNeighborhood >( "Neighborhood" );
+ auto filter = this->_CreateITK< _TFilter >( );
+ this->_ConfigureFilter( filter, image );
auto cost = this->GetInputData< _TCost >( "Cost" );
auto conv = this->GetInputData< _TCostConversion >( "CostConversion" );
-
- // Configure filter
- auto filter = this->_CreateITK< _TFilter >( );
- filter->SetInput( image );
- if( neig != NULL )
- filter->SetNeighborhoodFunction( neig );
if( cost != NULL )
filter->SetCostFunction( cost );
if( conv != NULL )
filter->SetCostConversionFunction( conv );
- filter->SetStopAtOneFront( this->m_Parameters.GetBool( "StopAtOneFront" ) );
-
- // Assign seeds
- auto seeds = this->GetInputData< vtkPolyData >( "Seeds" );
- if( seeds != NULL )
- {
- typename _TInputImage::PointType pnt;
- typename _TInputImage::IndexType idx;
- unsigned int dim =
- ( _TInputImage::ImageDimension < 3 )? _TInputImage::ImageDimension: 3;
-
- for( int i = 0; i < seeds->GetNumberOfPoints( ); ++i )
- {
- double buf[ 3 ];
- seeds->GetPoint( i, buf );
- pnt.Fill( 0 );
- for( unsigned int d = 0; d < dim; ++d )
- pnt[ d ] = buf[ d ];
-
- if( image->TransformPhysicalPointToIndex( pnt, idx ) )
- filter->AddSeed( idx, 0 );
-
- } // rof
-
- } // fi
-
- // Assign outputs
filter->Update( );
this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
this->GetOutput( "MST" )->SetITK( filter->GetMinimumSpanningTree( ) );