-#ifndef __FPA__IMAGE__DIJKSTRA__HXX__
-#define __FPA__IMAGE__DIJKSTRA__HXX__
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+
+#ifndef __fpa__Image__Dijkstra__hxx__
+#define __fpa__Image__Dijkstra__hxx__
// -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-fpa::Image::Dijkstra< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
Dijkstra( )
- : Superclass( ),
- m_UseImageSpacing( false )
+ : Superclass( )
{
}
-
+
// -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-fpa::Image::Dijkstra< _TInputImage, _TOutputImage >::
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
~Dijkstra( )
{
}
// -------------------------------------------------------------------------
-template< class _TInputImage, class _TOutputImage >
-typename fpa::Image::Dijkstra< _TInputImage, _TOutputImage >::
-TScalar fpa::Image::Dijkstra< _TInputImage, _TOutputImage >::
-_Cost( const TVertex& a, const TVertex& b ) const
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+void fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
+_BeforeGenerateData( )
+{
+ this->Superclass::_BeforeGenerateData( );
+ TWeightFunction* wf =
+ dynamic_cast< TWeightFunction* >( this->GetWeightFunction( ) );
+ if( wf != NULL )
+ wf->SetImage( this->GetInput( ) );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TOutputImage, class _TFrontId, class _TTraits >
+void fpa::Image::Dijkstra< _TInputImage, _TOutputImage, _TFrontId, _TTraits >::
+_ConfigureOutput( const TOutputValue& v )
{
- auto input = this->GetInput( );
- TScalar coeff = TScalar( 1 );
- if( this->m_UseImageSpacing )
- {
- typename _TInputImage::PointType pa, pb;
- input->TransformIndexToPhysicalPoint( a, pa );
- input->TransformIndexToPhysicalPoint( b, pb );
- coeff = TScalar( pa.EuclideanDistanceTo( pb ) );
-
- } // fi
- TScalar va = TScalar( input->GetPixel( a ) );
- return( va * coeff );
+ this->Superclass::_ConfigureOutput( v );
+
+ const TInputImage* in = this->GetInput( );
+ TMST* mst = this->GetMinimumSpanningTree( );
+ mst->SetLargestPossibleRegion( in->GetLargestPossibleRegion( ) );
+ mst->SetRequestedRegion( in->GetRequestedRegion( ) );
+ mst->SetBufferedRegion( in->GetBufferedRegion( ) );
+ mst->SetSpacing( in->GetSpacing( ) );
+ mst->SetOrigin( in->GetOrigin( ) );
+ mst->SetDirection( in->GetDirection( ) );
+ mst->Allocate( );
+
+ typename TVertex::OffsetType o;
+ o.Fill( 0 );
+ mst->FillBuffer( o );
}
-#endif // __FPA__IMAGE__DIJKSTRA__HXX__
+#endif // __fpa__Image__Dijkstra__hxx__
// eof - $RCSfile$