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 CLITKEXTRACTLUNGSFILTER_H
#define CLITKEXTRACTLUNGSFILTER_H
void SetLabelizeParameters1(LabelParamType * a) { m_LabelizeParameters1 = a; }
itkGetConstMacro(LabelizeParameters1, LabelParamType*);
+
+ itkSetMacro(TracheaSeedAlgorithm, int);
+ itkGetConstMacro(TracheaSeedAlgorithm, int);
// Step 2 options FindTrachea
itkSetMacro(UpperThresholdForTrachea, InputImagePixelType);
itkSetMacro(ThresholdStepSizeForTrachea, InputImagePixelType);
itkGetConstMacro(ThresholdStepSizeForTrachea, InputImagePixelType);
- void AddSeed(InternalIndexType s);
+ // options FindTrachea2
+ itkSetMacro(NumSlices, int);
+ itkGetConstMacro(NumSlices, int);
+ itkSetMacro(MaxElongation, double);
+ itkGetConstMacro(MaxElongation, double);
+ itkSetMacro(SeedPreProcessingThreshold, int);
+ itkGetConstMacro(SeedPreProcessingThreshold, int);
+
+ void AddSeedInPixels(InternalIndexType s);
+ void AddSeed(InputImagePointType s);
std::vector<InternalIndexType> & GetSeeds() { return m_Seeds; }
itkSetMacro(TracheaVolumeMustBeCheckedFlag, bool);
itkGetConstMacro(VerboseRegionGrowingFlag, bool);
itkBooleanMacro(VerboseRegionGrowingFlag);
+ itkSetMacro(RemoveSmallLabelBeforeSeparationFlag, bool);
+ itkGetConstMacro(RemoveSmallLabelBeforeSeparationFlag, bool);
+ itkBooleanMacro(RemoveSmallLabelBeforeSeparationFlag);
+
// Step 3 options ExtractLung
itkSetMacro(NumberOfHistogramBins, int);
itkGetConstMacro(NumberOfHistogramBins, int);
itkGetConstMacro(FillHolesFlag, bool);
itkBooleanMacro(FillHolesFlag);
+ // Separate lungs
+ itkSetMacro(SeparateLungsFlag, bool);
+ itkGetConstMacro(SeparateLungsFlag, bool);
+ itkBooleanMacro(SeparateLungsFlag);
+
+ // Step Auto Crop
+ itkSetMacro(AutoCrop, bool);
+ itkGetConstMacro(AutoCrop, bool);
+ itkBooleanMacro(AutoCrop);
+
protected:
ExtractLungFilter();
virtual ~ExtractLungFilter() {}
MaskImagePixelType m_BackgroundValue;
MaskImagePixelType m_ForegroundValue;
int m_MinimalComponentSize;
+ bool m_AutoCrop;
+ bool m_RemoveSmallLabelBeforeSeparationFlag;
// Step 1
InputImagePixelType m_UpperThreshold;
LabelParamType* m_LabelizeParameters1;
// Step 2
+ int m_TracheaSeedAlgorithm;
InputImagePixelType m_UpperThresholdForTrachea;
InputImagePixelType m_ThresholdStepSizeForTrachea;
double m_MultiplierForTrachea;
std::vector<InternalIndexType> m_Seeds;
+ std::vector<InputImagePointType> m_SeedsInMM;
int m_NumberOfSlicesToSkipBeforeSearchingSeed;
bool m_TracheaVolumeMustBeCheckedFlag;
bool m_VerboseRegionGrowingFlag;
+ int m_NumSlices;
+ double m_MaxElongation;
+ int m_SeedPreProcessingThreshold;
// Step 3
int m_NumberOfHistogramBins;
bool m_FillHolesFlag;
InputImageSizeType m_FillHolesDirections;
+ bool m_SeparateLungsFlag;
+
// Main functions
virtual void GenerateOutputInformation();
virtual void GenerateInputRequestedRegion();
// Functions for trachea extraction
bool SearchForTracheaSeed(int skip);
+ bool SearchForTracheaSeed2(int numberOfSlices);
void SearchForTrachea();
void TracheaRegionGrowing();
double ComputeTracheaVolume();