+++ /dev/null
-// =========================================================================
-// @author Leonardo Florez Valencia
-// @email florez-l@javeriana.edu.co
-// =========================================================================
-#ifndef __fpa__Filters__Image__RandomWalker__h__
-#define __fpa__Filters__Image__RandomWalker__h__
-
-#include <itkImage.h>
-#include <fpa/Filters/DijkstraBase.h>
-#include <fpa/Filters/Image/Algorithm.h>
-#include <fpa/Filters/Image/DefaultTraits.h>
-#include <fpa/Filters/MarksInterface.h>
-#include <fpa/Filters/Image/LabelsSeedFilter.h>
-#include <fpa/Filters/Image/LabelsSeedInterface.h>
-
-namespace fpa
-{
- namespace Filters
- {
- namespace Image
- {
- /**
- */
- template< class _TInputImage, class _TInputLabels, class _TCostsImage >
- class RandomWalkerTraits
- : public fpa::Filters::Image::DefaultTraits< _TInputImage, _TCostsImage, typename _TInputLabels::PixelType >
- {
- public:
- typedef _TInputImage TInputImage;
- typedef _TInputLabels TInputLabels;
- typedef _TCostsImage TCostsImage;
- typedef fpa::Filters::Image::DefaultTraits< TInputImage, TCostsImage, typename _TInputLabels::PixelType > Superclass;
-
- typedef typename Superclass::TInternalTraits TInternalTraits;
- typedef typename Superclass::TFilter TFilter;
- typedef fpa::Filters::MarksInterface< TInternalTraits > TMarksInterface;
- typedef fpa::Filters::Image::LabelsSeedInterface< TInternalTraits > TSeedsInterface;
- };
-
- /**
- */
- template< class _TInputImage, class _TInputLabels, class _TCostsImage = itk::Image< float, _TInputImage::ImageDimension >, class _TTraits = fpa::Filters::Image::RandomWalkerTraits< _TInputImage, _TInputLabels, _TCostsImage > >
- class RandomWalker
- : public fpa::Filters::Image::LabelsSeedFilter< fpa::Filters::Image::Algorithm< fpa::Filters::DijkstraBase< _TTraits > >, _TInputLabels >
- {
- public:
- typedef _TInputImage TInputImage;
- typedef _TInputLabels TInputLabels;
- typedef _TCostsImage TCostsImage;
- typedef _TTraits TTraits;
- fpaTraitsMacro( typename, TTraits );
-
- typedef fpa::Filters::DijkstraBase< TTraits > TAlgorithm;
- typedef fpa::Filters::Image::Algorithm< TAlgorithm > TBase;
- typedef fpa::Filters::Image::LabelsSeedFilter< TBase, TInputLabels > Superclass;
- typedef RandomWalker Self;
- typedef itk::SmartPointer< Self > Pointer;
- typedef itk::SmartPointer< const Self > ConstPointer;
- typedef typename Superclass::TMarksImage TOutputLabels;
-
- public:
- itkNewMacro( Self );
- itkTypeMacro(
- fpa::Filters::Image::RandomWalker, fpa::Filters::Image::Algorithm
- );
-
- public:
- TCostsImage* GetOutputCosts( );
- const TCostsImage* GetOutputCosts( ) const;
-
- TOutputLabels* GetOutputLabels( );
- const TOutputLabels* GetOutputLabels( ) const;
-
- TInputImage* GetInputImage( );
- const TInputImage* GetInputImage( ) const;
- void SetInputImage( TInputImage* image );
-
- protected:
- RandomWalker( );
- virtual ~RandomWalker( );
-
- private:
- // Purposely not implemented.
- RandomWalker( const Self& other );
- Self& operator=( const Self& other );
- };
-
- } // ecapseman
-
- } // ecapseman
-
-} // ecapseman
-
-#ifndef ITK_MANUAL_INSTANTIATION
-# include <fpa/Filters/Image/RandomWalker.hxx>
-#endif // ITK_MANUAL_INSTANTIATION
-#endif // __fpa__Filters__Image__RandomWalker__h__
-// eof - $RCSfile$