// clitk
#include "clitkFilterBase.h"
+#include "clitkAddRelativePositionConstraintToLabelImageFilter.h"
namespace clitk {
template <class ImageType>
class ITK_EXPORT SliceBySliceRelativePositionFilter:
- public clitk::FilterBase,
- public itk::ImageToImageFilter<ImageType, ImageType>
+ public AddRelativePositionConstraintToLabelImageFilter<ImageType>
{
public:
/** Standard class typedefs. */
- typedef itk::ImageToImageFilter<ImageType, ImageType> Superclass;
+ typedef AddRelativePositionConstraintToLabelImageFilter<ImageType> Superclass;
typedef SliceBySliceRelativePositionFilter Self;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
itkTypeMacro(SliceBySliceRelativePositionFilter, ImageToImageFilter);
FILTERBASE_INIT;
+ /** ImageDimension constants */
+ itkStaticConstMacro(ImageDimension, unsigned int, ImageType::ImageDimension);
+ typedef itk::Image<float, ImageDimension> FloatImageType;
+ typedef itk::Image<float, ImageDimension-1> FloatSliceType;
+
/** Some convenient typedefs. */
typedef typename ImageType::ConstPointer ImageConstPointer;
typedef typename ImageType::Pointer ImagePointer;
typedef typename ImageType::PixelType PixelType;
typedef typename ImageType::SpacingType SpacingType;
typedef typename ImageType::SizeType SizeType;
+ typedef itk::Image<PixelType, ImageDimension-1> SliceType;
+ typedef clitk::AddRelativePositionConstraintToLabelImageFilter<SliceType> RelPosFilterType;
+ typedef typename RelPosFilterType::OrientationTypeEnumeration OrientationTypeEnumeration;
- /** ImageDimension constants */
- itkStaticConstMacro(ImageDimension, unsigned int, ImageType::ImageDimension);
- typedef itk::Image<float, ImageDimension> 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();
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
#ifndef ITK_MANUAL_INSTANTIATION
#include "clitkSliceBySliceRelativePositionFilter.txx"
#endif
-
#endif