#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/LabelsSeedInterface.h>
+#include <fpa/Filters/RandomWalker.h>
+#include <fpa/Filters/Image/Interface.h>
+#include <fpa/Filters/Image/RandomWalkerTraits.h>
namespace fpa
{
{
/**
*/
- 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 > >
+ template< class _TInputImage, class _TLabelImage, class _TCost = float, class _TTraits = fpa::Filters::Image::RandomWalkerTraits< _TInputImage, _TLabelImage, _TCost > >
class RandomWalker
- : public fpa::Filters::Image::Algorithm< fpa::Filters::DijkstraBase< _TTraits > >
+ : public fpa::Filters::RandomWalker< fpa::Filters::Image::Interface< _TTraits > >
{
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 > Superclass;
- typedef RandomWalker Self;
- typedef itk::SmartPointer< Self > Pointer;
- typedef itk::SmartPointer< const Self > ConstPointer;
-
- typedef typename Superclass::TMarksImage TOutputLabels;
+ typedef _TTraits TTraits;
+ typedef typename TTraits::TInputImage TInputImage;
+ typedef typename TTraits::TLabelImage TLabelImage;
+ typedef typename TTraits::TCost TCost;
+ typedef typename TTraits::TLabel TLabel;
+ typedef typename TTraits::TOutputImage TOutputImage;
+ typedef TOutputImage TCostsImage;
+
+ typedef fpa::Filters::Image::Interface< TTraits > TInterface;
+ typedef fpa::Filters::RandomWalker< TInterface > Superclass;
+ typedef RandomWalker Self;
+ typedef itk::SmartPointer< Self > Pointer;
+ typedef itk::SmartPointer< const Self > ConstPointer;
public:
itkNewMacro( Self );
- itkTypeMacro(
- fpa::Filters::Image::RandomWalker, fpa::Filters::Image::Algorithm
- );
- fpaFilterInputMacro( InputLabels, TInputLabels );
+ fpaFilterInputMacro( InputLabels, _TLabelImage );
public:
+ TInputImage* GetInputImage( );
+ const TInputImage* GetInputImage( ) const;
+ void SetInputImage( const TInputImage* i );
+
TCostsImage* GetOutputCosts( );
const TCostsImage* GetOutputCosts( ) const;
- TOutputLabels* GetOutputLabels( );
- const TOutputLabels* GetOutputLabels( ) const;
-
- TInputImage* GetInputImage( );
- const TInputImage* GetInputImage( ) const;
- void SetInputImage( TInputImage* image );
+ TLabelImage* GetOutputLabels( );
+ const TLabelImage* GetOutputLabels( ) const;
protected:
RandomWalker( );
virtual ~RandomWalker( );
+ // Filter related methods
virtual const itk::DataObject* _GetReferenceInput( ) const override;
- virtual void _PrepareSeeds( const itk::DataObject* input ) override;
private:
- // Purposely not implemented.
RandomWalker( const Self& other );
Self& operator=( const Self& other );
-
- protected:
- unsigned int m_InputLabelsIdx;
};
} // ecapseman