// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Filters__Image__DefaultTraits__h__ #define __fpa__Filters__Image__DefaultTraits__h__ #include #include #include #include #include #include namespace fpa { namespace Filters { namespace Image { /** */ template< class _TInputImage, class _TOutputImage, class _TMark > class DefaultTraits { public: typedef _TInputImage TInputImage; typedef _TOutputImage TOutputImage; class TInternalTraits { public: typedef _TMark TMark; typedef typename TInputImage::IndexType TVertex; typedef typename TInputImage::PixelType TInputValue; typedef typename TInputImage::PointType TPoint; typedef typename TOutputImage::PixelType TOutputValue; typedef typename TVertex::LexicographicCompare TVertexCompare; itkStaticConstMacro( Dimension, unsigned int, _TInputImage::ImageDimension ); typedef std::vector< TVertex > TNeighborhood; struct TSeed { TVertex Vertex; TPoint Point; bool IsPoint; TMark FrontId; TSeed( const TMark& fid = 0 ) : FrontId( fid ) { } }; typedef std::vector< TSeed > TSeeds; struct TNode { TVertex Vertex; TVertex Parent; TMark FrontId; // Hack to hide the fact that nodes need to be (re-)initialized mutable TOutputValue Value; }; struct TNodeCompare { bool operator()( const TNode& a, const TNode& b ) const { static TVertexCompare c; return( c( a.Vertex, b.Vertex ) ); } }; typedef std::set< TNode, TNodeCompare > TNodes; }; typedef itk::ImageToImageFilter< TInputImage, TOutputImage > TFilter; typedef fpa::Filters::MarksWithCollisionsInterface< TInternalTraits > TMarksInterface; typedef fpa::Filters::SeedsInterface< TInternalTraits > TSeedsInterface; protected: itkConceptMacro( Check_Dimensions, ( itk::Concept::SameDimension< TInputImage::ImageDimension, TOutputImage::ImageDimension > ) ); }; } // ecapseman } // ecapseman } // ecapseman #endif // __fpa__Filters__Image__DefaultTraits__h__ // eof - $RCSfile$