X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Ffpa%2FFilters%2FImage%2FDefaultTraits.h;fp=lib%2Ffpa%2FFilters%2FImage%2FDefaultTraits.h;h=27aaa3a9e3703ff3a4335e71d658d6ae1424e0b5;hb=bd89a1af0c14ed2ac0afeca923103de54283cbaf;hp=0000000000000000000000000000000000000000;hpb=a8ac405fe1422bc0792a810f7f0693096a22c20e;p=FrontAlgorithms.git diff --git a/lib/fpa/Filters/Image/DefaultTraits.h b/lib/fpa/Filters/Image/DefaultTraits.h new file mode 100644 index 0000000..27aaa3a --- /dev/null +++ b/lib/fpa/Filters/Image/DefaultTraits.h @@ -0,0 +1,94 @@ +// ========================================================================= +// @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 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; + + struct TSeed + { + TVertex Vertex; + TPoint Point; + bool IsPoint; + TMark FrontId; + TSeed( const TMark& fid = 0 ) + : FrontId( fid ) + { } + }; + typedef std::vector< TSeed > TSeeds; + }; + itkStaticConstMacro( + Dimension, unsigned int, TInternalTraits::Dimension + ); + + typedef itk::Image< _TMark, TInternalTraits::Dimension > TMarksImage; + typedef itk::ImageToImageFilter< TInputImage, TOutputImage > TFilterInterface; + typedef fpa::Filters::CollisionMarksInterface< TInternalTraits > TMarksInterface; + typedef fpa::Filters::MultipleSeedsInterface< TInternalTraits > TSeedsInterface; + }; + + } // ecapseman + + } // ecapseman + +} // ecapseman + +#endif // __fpa__Filters__Image__DefaultTraits__h__ +// eof - $RCSfile$