Authors belong to:
- University of LYON http://www.universite-lyon.fr/
- - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr
+ - Léon Bérard cancer center http://www.centreleonberard.fr
- CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr
This software is distributed WITHOUT ANY WARRANTY; without even
- BSD See included LICENSE.txt file
- CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
- ======================================================================-====*/
+ ===========================================================================**/
#ifndef CLITKADDRELATIVEPOSITIONCONSTRAINTTOLABELIMAGEFILTER_H
#define CLITKADDRELATIVEPOSITIONCONSTRAINTTOLABELIMAGEFILTER_H
// clitk
#include "clitkFilterBase.h"
+#include "clitkCropLikeImageFilter.h"
// itk
-#include "itkPasteImageFilter.h"
+#include <itkPasteImageFilter.h>
// itk ENST
#include "RelativePositionPropImageFilter.h"
} OrientationTypeEnumeration;
/** Input : initial image and object */
- void SetInput(const ImageType * image);
+ void SetInput(const ImageType * image) ITK_OVERRIDE;
void SetInputObject(const ImageType * image);
// Options
- void SetOrientationType(OrientationTypeEnumeration orientation);
- itkGetConstMacro(OrientationType, OrientationTypeEnumeration);
-
- void SetAngle1(double a);
- void SetAngle2(double a);
- itkGetConstMacro(Angle1, double);
- itkGetConstMacro(Angle2, double);
-
- itkGetConstMacro(ResampleBeforeRelativePositionFilter, bool);
- itkSetMacro(ResampleBeforeRelativePositionFilter, bool);
- itkBooleanMacro(ResampleBeforeRelativePositionFilter);
+ void AddOrientationType(OrientationTypeEnumeration orientation);
+ void AddOrientationTypeString(std::string s);
+ void ClearOrientationType();
+ void AddAnglesInRad(double a, double b);
+ void AddAnglesInDeg(double a, double b);
+ double GetAngle1InRad(int i) { return m_Angle1[i]; }
+ double GetAngle2InRad(int i) { return m_Angle2[i]; }
+ int GetNumberOfAngles();
+ std::string GetOrientationTypeString(int i) { return m_OrientationTypeString[i]; }
+ std::vector<std::string> & GetOrientationTypeString() { return m_OrientationTypeString; }
+
+ itkGetConstMacro(IntermediateSpacingFlag, bool);
+ itkSetMacro(IntermediateSpacingFlag, bool);
+ itkBooleanMacro(IntermediateSpacingFlag);
itkGetConstMacro(IntermediateSpacing, double);
itkSetMacro(IntermediateSpacing, double);
itkGetConstMacro(ObjectBackgroundValue, PixelType);
itkSetMacro(ObjectBackgroundValue, PixelType);
- itkGetConstMacro(AutoCrop, bool);
- itkSetMacro(AutoCrop, bool);
- itkBooleanMacro(AutoCrop);
+ itkGetConstMacro(AutoCropFlag, bool);
+ itkSetMacro(AutoCropFlag, bool);
+ itkBooleanMacro(AutoCropFlag);
+
+ itkGetConstMacro(InverseOrientationFlag, bool);
+ itkSetMacro(InverseOrientationFlag, bool);
+ itkBooleanMacro(InverseOrientationFlag);
+
+ itkGetConstMacro(RemoveObjectFlag, bool);
+ itkSetMacro(RemoveObjectFlag, bool);
+ itkBooleanMacro(RemoveObjectFlag);
+
+ itkGetConstMacro(CombineWithOrFlag, bool);
+ itkSetMacro(CombineWithOrFlag, bool);
+ itkBooleanMacro(CombineWithOrFlag);
+
+ itkGetConstMacro(FuzzyMapOnlyFlag, bool);
+ itkSetMacro(FuzzyMapOnlyFlag, bool);
+ itkBooleanMacro(FuzzyMapOnlyFlag);
+
+ itkGetConstMacro(FastFlag, bool);
+ itkSetMacro(FastFlag, bool);
+ itkBooleanMacro(FastFlag);
+
+ itkGetConstMacro(Radius, double);
+ itkSetMacro(Radius, double);
+
+ itkSetMacro(K1, double);
+ itkGetMacro(K1, double);
+
+ typename FloatImageType::Pointer GetFuzzyMap() { return m_FuzzyMap; }
+
+ // I dont want to verify inputs information
+ virtual void VerifyInputInformation() ITK_OVERRIDE { }
+
+ // For debug
+ void PrintOptions();
protected:
AddRelativePositionConstraintToLabelImageFilter();
virtual ~AddRelativePositionConstraintToLabelImageFilter() {}
- OrientationTypeEnumeration m_OrientationType;
+ std::vector<OrientationTypeEnumeration> m_OrientationType;
+ std::vector<std::string> m_OrientationTypeString;
double m_IntermediateSpacing;
double m_FuzzyThreshold;
PixelType m_BackgroundValue;
PixelType m_ObjectBackgroundValue;
- double m_Angle1;
- double m_Angle2;
- bool m_ResampleBeforeRelativePositionFilter;
- bool m_AutoCrop;
-
- virtual void GenerateOutputInformation();
- virtual void GenerateInputRequestedRegion();
- virtual void GenerateData();
-
- typedef itk::PasteImageFilter<ImageType,ImageType> PadFilterType;
+ std::vector<double> m_Angle1;
+ std::vector<double> m_Angle2;
+ bool m_IntermediateSpacingFlag;
+ bool m_AutoCropFlag;
+ bool m_InverseOrientationFlag;
+ bool m_RemoveObjectFlag;
+ bool m_CombineWithOrFlag;
+ bool m_FuzzyMapOnlyFlag;
+ bool m_FastFlag;
+ double m_Radius;
+ double m_K1;
+
+ virtual void GenerateOutputInformation() ITK_OVERRIDE;
+ virtual void GenerateInputRequestedRegion() ITK_OVERRIDE;
+ virtual void GenerateData() ITK_OVERRIDE;
+
+ typedef itk::PasteImageFilter<ImageType,ImageType> PasteFilterType;
+ typedef itk::PasteImageFilter<FloatImageType,FloatImageType> PasteFloatFilterType;
typename ImageType::Pointer working_image;
typename ImageType::Pointer object_resampled;
typename FloatImageType::Pointer relPos;
+ typename FloatImageType::Pointer m_FuzzyMap;
ImagePointer input;
ImagePointer object;