]> Creatis software - FrontAlgorithms.git/blobdiff - lib/fpa/Image/ExtractAxisFilter.hxx
...
[FrontAlgorithms.git] / lib / fpa / Image / ExtractAxisFilter.hxx
index 6f91ade299d73889f7e1a3d982db161fefa9eac3..5c3c4e6f0257bb42ed998e69effe9101315c160a 100644 (file)
@@ -6,70 +6,67 @@
 #ifndef __fpa__Image__ExtractAxisFilter__hxx__
 #define __fpa__Image__ExtractAxisFilter__hxx__
 
+#include <itkSignedMaurerDistanceMapImageFilter.h>
 #include <fpa/Image/Functors/Dijkstra/Invert.h>
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-itk::ModifiedTimeType 
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+itk::ModifiedTimeType
+fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 GetMTime( ) const
 {
   itk::ModifiedTimeType a = this->Superclass::GetMTime( );
   itk::ModifiedTimeType b = this->m_Centerness->GetMTime( );
-  itk::ModifiedTimeType c = this->m_Dijsktra->GetMTime( );
+  itk::ModifiedTimeType c = this->m_Dijkstra->GetMTime( );
   a = ( a < b )? a: b;
   return( ( a < c )? a: c );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
-AddSeed( const TVertex& seed )
+template< class _TInputImage, class _TScalar >
+void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
+AddSeed( const TIndex& seed )
 {
   this->m_Dijkstra->AddSeed( seed );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 AddSeed( const TPoint& seed )
 {
   this->m_Dijkstra->AddSeed( seed );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 ClearSeeds( )
 {
   this->m_Dijkstra->ClearSeeds( );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 SetInput( TInputImage* input )
 {
   this->Superclass::SetNthInput( 0, input );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-typename
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
-TInputImage*
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+typename fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
+TInputImage* fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 GetInput( )
 {
   return( dynamic_cast< TInputImage* >( this->Superclass::GetInput( 0 ) ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-const typename
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
-TInputImage*
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+const typename fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
+TInputImage* fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 GetInput( ) const
 {
   return(
@@ -78,30 +75,26 @@ GetInput( ) const
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-typename
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
-TPath*
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+typename fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
+TPath* fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 GetOutput( )
 {
   return( dynamic_cast< TPath* >( this->Superclass::GetOutput( 0 ) ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-const typename
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
-TPath* 
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+const typename fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
+TPath* fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 GetOutput( ) const
 {
   return( dynamic_cast< const TPath* >( this->Superclass::GetOutput( 0 ) ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 ExtractAxisFilter( )
   : Superclass( )
 {
@@ -117,22 +110,28 @@ ExtractAxisFilter( )
   weight->SetBeta( 1 );
 
   // Filters
-  this->m_Centerness = TCenterness::New( );
+  typedef itk::SignedMaurerDistanceMapImageFilter< TInputImage, TScalarImage > _TDefaultCenterness;
+  this->m_Centerness = _TDefaultCenterness::New( );
+  this->m_Centerness->InsideIsPositiveOn( );
+  this->m_Centerness->SquaredDistanceOn( );
+  this->m_Centerness->UseImageSpacingOn( );
+
+  // Axis extractor
   this->m_Dijkstra = TDijkstra::New( );
   this->m_Dijkstra->SetWeightFunction( weight );
   this->m_Dijkstra->StopAtOneFront( );
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 ~ExtractAxisFilter( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TInputImage, class _TScalar, class _TCenterness >
-void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar, _TCenterness >::
+template< class _TInputImage, class _TScalar >
+void fpa::Image::ExtractAxisFilter< _TInputImage, _TScalar >::
 GenerateData( )
 {
   // Execute minipipeline
@@ -141,9 +140,10 @@ GenerateData( )
   this->m_Dijkstra->Update( );
 
   // Extract axis
-  typename TInputImage::IndexType a = this->m_Dijkstra->GetSeeds( )[ 0 ];
-  typename TInputImage::IndexType b = this->m_Dijkstra->GetSeeds( )[ 1 ];
-  this->m_Dijkstra->GetMinimumSpanningTree( )->GetPolyLineParametricPath( this->GetOutput( ), a, b );
+  typename TPath::Pointer out = this->GetOutput( );
+  this->m_Dijkstra->GetMinimumSpanningTree( )->GetPolyLineParametricPath(
+    out, this->m_StartIndex, this->m_EndIndex
+    );
 }
 
 #endif // __fpa__Image__ExtractAxisFilter__hxx__