]> Creatis software - FrontAlgorithms.git/blobdiff - appli/CTArteries/algorithms/RandomWalkLabelling.hxx
...
[FrontAlgorithms.git] / appli / CTArteries / algorithms / RandomWalkLabelling.hxx
index 573e88e5450ee33fb27d3dd22c689b2fd21bf745..3cd2c6a5ca15c48ada64d41bc019a13c3a8c5249 100644 (file)
@@ -4,52 +4,54 @@
 #ifndef __RandomWalkerLabelling__hxx__
 #define __RandomWalkerLabelling__hxx__
 
+#include <limits>
+
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-void RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+void RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 SetInputImage( const TRawImage* i )
 {
   this->SetInput( i );
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-typename RandomWalkLabelling< _TRawImage, _TLabelsImage >::
-TLabelsImage* RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+typename RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
+TLabelsImage* RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 GetOutputLabels( )
 {
   return( this->GetOutput( ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-const typename RandomWalkLabelling< _TRawImage, _TLabelsImage >::
-TLabelsImage* RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+const typename RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
+TLabelsImage* RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 GetOutputLabels( ) const
 {
   return( this->GetOutput( ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-typename RandomWalkLabelling< _TRawImage, _TLabelsImage >::
-TLabel RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+typename RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
+TLabel RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 GetOutsideLabel( ) const
 {
   return( this->GetInitValue( ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-void RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+void RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 SetOutsideLabel( const TLabel& v )
 {
   this->SetInitValue( v );
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 RandomWalkLabelling( )
   : Superclass( ),
     m_InsideLabel( TLabel( 1 ) ),
@@ -57,23 +59,24 @@ RandomWalkLabelling( )
     m_UpperLabel( TLabel( 4 ) ),
     m_Radius( double( 1 ) ),
     m_LowerThreshold( double( 0 ) ),
-    m_UpperThreshold( double( 0 ) )
+    m_UpperThreshold( double( 0 ) ),
+    m_MaxCost( std::numeric_limits< TScalar >::max( ) )
 {
-  fpaFilterInputConfigureMacro( InputMarks, TLabelsImage );
+  fpaFilterInputConfigureMacro( InputCosts, TCostsImage );
   fpaFilterInputConfigureMacro( InputPath, TPath );
   this->SetOutsideLabel( TLabel( 2 ) );
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 ~RandomWalkLabelling( )
 {
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-void RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+void RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 _PrepareSeeds( const itk::DataObject* reference )
 {
   const TPath* path = this->GetInputPath( );
@@ -90,12 +93,12 @@ _PrepareSeeds( const itk::DataObject* reference )
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-void RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+void RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 _PostComputeOutputValue( TNode& n )
 {
   const TRawImage* raw = this->GetInput( );
-  const TLabelsImage* labels = this->GetInputMarks( );
+  const TCostsImage* costs = this->GetInputCosts( );
   const TPath* path = this->GetInputPath( );
 
   TPoint c, p;
@@ -105,7 +108,7 @@ _PostComputeOutputValue( TNode& n )
   if( d <= this->m_Radius )
   {
     n.FrontId = 1;
-    if( labels->GetPixel( n.Vertex ) == 0 )
+    if( costs->GetPixel( n.Vertex ) == this->m_MaxCost )
     {
       double v = double( raw->GetPixel( n.Vertex ) );
       if( v <= this->m_LowerThreshold )
@@ -127,8 +130,8 @@ _PostComputeOutputValue( TNode& n )
 }
 
 // -------------------------------------------------------------------------
-template< class _TRawImage, class _TLabelsImage >
-void RandomWalkLabelling< _TRawImage, _TLabelsImage >::
+template< class _TRawImage, class _TCostsImage, class _TLabelsImage >
+void RandomWalkLabelling< _TRawImage, _TCostsImage, _TLabelsImage >::
 _Reinitialize( )
 {
   const TPath* path = this->GetInputPath( );