+++ /dev/null
-// =========================================================================
-// @author Leonardo Florez Valencia
-// @email florez-l@javeriana.edu.co
-// =========================================================================
-#ifndef __fpa__Filters__Image__ExtractAxis__hxx__
-#define __fpa__Filters__Image__ExtractAxis__hxx__
-
-#include <itkSignedMaurerDistanceMapImageFilter.h>
-#include <fpa/Functors/Dijkstra/Invert.h>
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-itk::ModifiedTimeType
-fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-GetMTime( ) const
-{
- itk::ModifiedTimeType a = this->Superclass::GetMTime( );
- itk::ModifiedTimeType b = this->m_Centerness->GetMTime( );
- itk::ModifiedTimeType c = this->m_Dijkstra->GetMTime( );
- a = ( a < b )? a: b;
- return( ( a < c )? a: c );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-void fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-AddSeed( const TIndex& seed )
-{
- this->m_Dijkstra->AddSeed( seed );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-void fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-AddSeed( const TPoint& seed )
-{
- this->m_Dijkstra->AddSeed( seed );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-void fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-ClearSeeds( )
-{
- this->m_Dijkstra->ClearSeeds( );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-void fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-SetInput( TInputImage* input )
-{
- this->Superclass::SetNthInput( 0, input );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-typename fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-TInputImage* fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-GetInput( )
-{
- return( dynamic_cast< TInputImage* >( this->Superclass::GetInput( 0 ) ) );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-const typename fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-TInputImage* fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-GetInput( ) const
-{
- return(
- dynamic_cast< const TInputImage* >( this->Superclass::GetInput( 0 ) )
- );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-typename fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-TPath* fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-GetOutput( )
-{
- return( dynamic_cast< TPath* >( this->Superclass::GetOutput( 0 ) ) );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-const typename fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-TPath* fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-GetOutput( ) const
-{
- return( dynamic_cast< const TPath* >( this->Superclass::GetOutput( 0 ) ) );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-ExtractAxis( )
- : Superclass( )
-{
- // I/O configuration
- this->SetNumberOfRequiredInputs( 1 );
- this->SetNumberOfRequiredOutputs( 1 );
- this->SetNthOutput( 0, TPath::New( ) );
-
- // Prepare weight function
- typedef fpa::Functors::Dijkstra::Invert< TScalar > _TWeight;
- typename _TWeight::Pointer weight = _TWeight::New( );
- weight->SetAlpha( 1 );
- weight->SetBeta( 1 );
-
- // Filters
- typedef itk::SignedMaurerDistanceMapImageFilter< TInputImage, TScalarImage > _TDefaultCenterness;
- typename _TDefaultCenterness::Pointer dc = _TDefaultCenterness::New( );
- dc->InsideIsPositiveOn( );
- dc->SquaredDistanceOn( );
- dc->UseImageSpacingOn( );
- this->m_Centerness = dc;
-
- // Axis extractor
- this->m_Dijkstra = TDijkstra::New( );
- this->m_Dijkstra->SetWeightFunction( weight );
- this->m_Dijkstra->StopAtOneFront( );
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-~ExtractAxis( )
-{
-}
-
-// -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar >
-void fpa::Filters::Image::ExtractAxis< _TInputImage, _TScalar >::
-GenerateData( )
-{
- // Execute minipipeline
- this->m_Centerness->SetInput( this->GetInput( ) );
- this->m_Dijkstra->SetInput( this->m_Centerness->GetOutput( ) );
- this->m_Dijkstra->Update( );
-
- // Extract axis
- typename TPath::Pointer out = this->GetOutput( );
- this->m_Dijkstra->GetMinimumSpanningTree( )->GetPolyLineParametricPath(
- out, this->m_StartIndex, this->m_EndIndex
- );
-}
-
-#endif // __fpa__Filters__Image__ExtractAxis__hxx__
-// eof - $RCSfile$