]> Creatis software - FrontAlgorithms.git/blobdiff - appli/CTBronchi/MoriLabelling.hxx
...
[FrontAlgorithms.git] / appli / CTBronchi / MoriLabelling.hxx
diff --git a/appli/CTBronchi/MoriLabelling.hxx b/appli/CTBronchi/MoriLabelling.hxx
new file mode 100644 (file)
index 0000000..5ca4fc4
--- /dev/null
@@ -0,0 +1,105 @@
+// =========================================================================
+// @author Leonardo Florez Valencia
+// @email florez-l@javeriana.edu.co
+// =========================================================================
+
+#ifndef __CTBronchi__MoriLabelling__hxx__
+#define __CTBronchi__MoriLabelling__hxx__
+
+#include <itkImageRegionConstIterator.h>
+#include <itkImageRegionIterator.h>
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+const _TLabelImage*
+CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+GetInputLabelImage( ) const
+{
+  return( this->GetInput( ) );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+void CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+SetInputLabelImage( TLabelImage* image )
+{
+  this->SetInput( image );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+const _TInputImage*
+CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+GetInputRawImage( ) const
+{
+  return(
+    dynamic_cast< const TInputImage* >(
+      this->itk::ProcessObject::GetInput( 1 )
+      )
+    );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+void CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+SetInputRawImage( TInputImage* image )
+{
+  this->itk::ProcessObject::SetNthInput( 1, image );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+MoriLabelling( )
+  : Superclass( ),
+    m_UpperThreshold( TLabel( 0 ) ),
+    m_InsideValue( TLabel( 0 ) ),
+    m_InsideLabel( TLabel( 0 ) ),
+    m_OutsideLabel( TLabel( 0 ) )
+{
+  this->SetNumberOfRequiredInputs( 2 );
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+~MoriLabelling( )
+{
+}
+
+// -------------------------------------------------------------------------
+template< class _TInputImage, class _TLabelImage >
+void CTBronchi::MoriLabelling< _TInputImage, _TLabelImage >::
+ThreadedGenerateData( const TRegion& region, itk::ThreadIdType threadId )
+{
+  itk::ImageRegionConstIterator< TLabelImage >
+    lIt( this->GetInputLabelImage( ), region );
+  itk::ImageRegionConstIterator< TInputImage >
+    iIt( this->GetInputRawImage( ), region );
+  itk::ImageRegionIterator< TLabelImage >
+    oIt( this->GetOutput( ), region );
+
+  lIt.GoToBegin( );
+  iIt.GoToBegin( );
+  oIt.GoToBegin( );
+  while( !( lIt.IsAtEnd( ) || iIt.IsAtEnd( ) || oIt.IsAtEnd( ) ) )
+  {
+    if( lIt.Get( ) != this->m_InsideValue )
+    {
+      if( this->m_UpperThreshold < iIt.Get( ) )
+        oIt.Set( this->m_OutsideLabel );
+      else
+        oIt.Set( TLabel( 0 ) );
+    }
+    else
+      oIt.Set( this->m_InsideLabel );
+    ++lIt;
+    ++iIt;
+    ++oIt;
+
+  } // elihw
+}
+
+#endif // __CTBronchi__MoriLabelling__hxx__
+
+// eof - $RCSfile$