X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=itk%2FclitkSliceBySliceRelativePositionFilter.h;h=5989e20054c5229a0146543a5be06dba1d60444c;hb=3b072585d9fc4e6b21940531196cec798ee74796;hp=01f9cd9c833578d802af33e96ba39d0c6cfa43f7;hpb=f34fdef46fa656a1eb32271c0b9bf7d81bc7fc35;p=clitk.git diff --git a/itk/clitkSliceBySliceRelativePositionFilter.h b/itk/clitkSliceBySliceRelativePositionFilter.h index 01f9cd9..5989e20 100644 --- a/itk/clitkSliceBySliceRelativePositionFilter.h +++ b/itk/clitkSliceBySliceRelativePositionFilter.h @@ -21,6 +21,7 @@ // clitk #include "clitkFilterBase.h" +#include "clitkAddRelativePositionConstraintToLabelImageFilter.h" namespace clitk { @@ -32,13 +33,12 @@ namespace clitk { template class ITK_EXPORT SliceBySliceRelativePositionFilter: - public clitk::FilterBase, - public itk::ImageToImageFilter + public AddRelativePositionConstraintToLabelImageFilter { public: /** Standard class typedefs. */ - typedef itk::ImageToImageFilter Superclass; + typedef AddRelativePositionConstraintToLabelImageFilter Superclass; typedef SliceBySliceRelativePositionFilter Self; typedef itk::SmartPointer Pointer; typedef itk::SmartPointer ConstPointer; @@ -50,6 +50,11 @@ namespace clitk { itkTypeMacro(SliceBySliceRelativePositionFilter, ImageToImageFilter); FILTERBASE_INIT; + /** ImageDimension constants */ + itkStaticConstMacro(ImageDimension, unsigned int, ImageType::ImageDimension); + typedef itk::Image FloatImageType; + typedef itk::Image FloatSliceType; + /** Some convenient typedefs. */ typedef typename ImageType::ConstPointer ImageConstPointer; typedef typename ImageType::Pointer ImagePointer; @@ -57,28 +62,50 @@ namespace clitk { typedef typename ImageType::PixelType PixelType; typedef typename ImageType::SpacingType SpacingType; typedef typename ImageType::SizeType SizeType; + typedef itk::Image SliceType; + typedef clitk::AddRelativePositionConstraintToLabelImageFilter RelPosFilterType; + typedef typename RelPosFilterType::OrientationTypeEnumeration OrientationTypeEnumeration; - /** ImageDimension constants */ - itkStaticConstMacro(ImageDimension, unsigned int, ImageType::ImageDimension); - typedef itk::Image FloatImageType; - /** Input : initial image and object */ void SetInput(const ImageType * image); void SetInputObject(const ImageType * image); - + // Options + void PrintOptions(std::ostream & os = std::cout); itkGetConstMacro(Direction, int); itkSetMacro(Direction, int); - itkGetConstMacro(ObjectBackgroundValue, PixelType); - itkSetMacro(ObjectBackgroundValue, PixelType); + + itkGetConstMacro(UniqueConnectedComponentBySliceFlag, bool); + itkSetMacro(UniqueConnectedComponentBySliceFlag, bool); + itkBooleanMacro(UniqueConnectedComponentBySliceFlag); + + itkGetConstMacro(IgnoreEmptySliceObjectFlag, bool); + itkSetMacro(IgnoreEmptySliceObjectFlag, bool); + itkBooleanMacro(IgnoreEmptySliceObjectFlag); + + itkGetConstMacro(UseTheLargestObjectCCLFlag, bool); + itkSetMacro(UseTheLargestObjectCCLFlag, bool); + itkBooleanMacro(UseTheLargestObjectCCLFlag); + + itkGetConstMacro(ObjectCCLSelectionFlag, bool); + itkSetMacro(ObjectCCLSelectionFlag, bool); + itkBooleanMacro(ObjectCCLSelectionFlag); + itkGetConstMacro(ObjectCCLSelectionDimension, int); + itkSetMacro(ObjectCCLSelectionDimension, int); + itkGetConstMacro(ObjectCCLSelectionDirection, int); + itkSetMacro(ObjectCCLSelectionDirection, int); + itkGetConstMacro(ObjectCCLSelectionIgnoreSingleCCLFlag, bool); + itkSetMacro(ObjectCCLSelectionIgnoreSingleCCLFlag, bool); + itkBooleanMacro(ObjectCCLSelectionIgnoreSingleCCLFlag); + + itkGetConstMacro(VerboseSlicesFlag, bool); + itkSetMacro(VerboseSlicesFlag, bool); + itkBooleanMacro(VerboseSlicesFlag); protected: SliceBySliceRelativePositionFilter(); virtual ~SliceBySliceRelativePositionFilter() {} - int m_Direction; - PixelType m_ObjectBackgroundValue; - virtual void GenerateOutputInformation(); virtual void GenerateInputRequestedRegion(); virtual void GenerateData(); @@ -87,6 +114,15 @@ namespace clitk { ImagePointer object; ImagePointer m_working_input; ImagePointer m_working_object; + bool m_UniqueConnectedComponentBySliceFlag; + int m_Direction; + bool m_IgnoreEmptySliceObjectFlag; + bool m_UseTheLargestObjectCCLFlag; + bool m_ObjectCCLSelectionFlag; + int m_ObjectCCLSelectionDimension; + int m_ObjectCCLSelectionDirection; + bool m_ObjectCCLSelectionIgnoreSingleCCLFlag; + bool m_VerboseSlicesFlag; private: SliceBySliceRelativePositionFilter(const Self&); //purposely not implemented @@ -102,4 +138,8 @@ namespace clitk { #include "clitkSliceBySliceRelativePositionFilter.txx" #endif +typedef unsigned char PixelType_uchar; +typedef itk::Image ImageType_uchar; +extern template class clitk::SliceBySliceRelativePositionFilter; + #endif