X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=segmentation%2FclitkExtractLymphStationsFilter.h;h=080bdb7185169bfed1113a1e6ee19935330caa04;hb=29c90b5fbd7ecd5d8375e02b7a03734c4fdbc806;hp=2db65b0ba1e928f45b35d9287784f8ad4d16d4c9;hpb=243b931a3f9d65c94e076d22a0395b894ef3f660;p=clitk.git diff --git a/segmentation/clitkExtractLymphStationsFilter.h b/segmentation/clitkExtractLymphStationsFilter.h index 2db65b0..080bdb7 100644 --- a/segmentation/clitkExtractLymphStationsFilter.h +++ b/segmentation/clitkExtractLymphStationsFilter.h @@ -21,12 +21,31 @@ // clitk #include "clitkStructuresExtractionFilter.h" +#include "clitkLabelImageOverlapMeasureFilter.h" // vtk #include namespace clitk { + class SupportLimitsType { + public: + std::string station_limit; + std::string station; + std::string structure_limit; + std::string structure; + double offset; + void Read(istream & is) { + is >> station_limit; + is >> station; + is >> structure_limit; + is >> structure; + std::string s; + is >> s; + offset = atof(s.c_str()); + } + }; + //-------------------------------------------------------------------- /* Try to extract the LymphStations part of a thorax CT. @@ -106,9 +125,16 @@ namespace clitk { double GetFuzzyThreshold(std::string station, std::string tag); void SetThreshold(std::string station, std::string tag, double value); double GetThreshold(std::string station, std::string tag); - itkGetConstMacro(ComputeStationsSupportsFlag, bool); - itkSetMacro(ComputeStationsSupportsFlag, bool); - itkBooleanMacro(ComputeStationsSupportsFlag); + itkGetConstMacro(ForceSupportsFlag, bool); + itkSetMacro(ForceSupportsFlag, bool); + itkBooleanMacro(ForceSupportsFlag); + + itkGetConstMacro(CheckSupportFlag, bool); + itkSetMacro(CheckSupportFlag, bool); + itkBooleanMacro(CheckSupportFlag); + + itkGetConstMacro(SupportLimitsFilename, std::string); + itkSetMacro(SupportLimitsFilename, std::string); protected: ExtractLymphStationsFilter(); @@ -137,9 +163,18 @@ namespace clitk { MaskImagePixelType m_BackgroundValue; MaskImagePixelType m_ForegroundValue; std::map m_ComputeStationMap; + std::string m_SupportLimitsFilename; + std::vector m_ListOfSupportLimits; bool CheckForStation(std::string station); void Remove_Structures(std::string station, std::string s); + void WriteImageSupport(std::string support); + void WriteImageStation(std::string station); + void ComputeOverlapWithRef(std::string station); + void Support_SI_Limit(const std::string station_limit, const std::string station, + const std::string structure_limit, const std::string structure, + const double offset); + void ReadSupportLimits(std::string filename); // Functions common to several stations double FindCarina(); @@ -159,17 +194,10 @@ namespace clitk { // Station's supports void ExtractStationSupports(); - void Support_SupInf_S1RL(); void Support_LeftRight_S1R_S1L(); - void Support_SupInf_S2R_S2L(); void Support_LeftRight_S2R_S2L(); - void Support_SupInf_S4R_S4L(); void Support_LeftRight_S4R_S4L(); void Support_Post_S1S2S4(); - void Support_S3P(); - void Support_S3A(); - void Support_S5(); - void Support_S6(); MaskImagePointer LimitsWithTrachea(MaskImageType * input, int extremaDirection, int lineDirection, @@ -224,6 +252,22 @@ namespace clitk { void ExtractStation_1RL_Ant_Limits(); void ExtractStation_1RL_Post_Limits(); + // Station 4RL + void ExtractStation_4RL_SetDefaultValues(); + void ExtractStation_4L(); + void ExtractStation_4R(); + void ExtractStation_S4L_S5_Limits_Aorta_LeftPulmonaryArtery(int KeepPoint); + + // Station 5 + void ExtractStation_5_SetDefaultValues(); + void ExtractStation_5(); + void ExtractStation_5_Limits_AscendingAorta_Ant(); + + // Station 6 + void ExtractStation_6_SetDefaultValues(); + void ExtractStation_6(); + + // Station 7 void ExtractStation_7(); void ExtractStation_7_SetDefaultValues(); @@ -234,7 +278,8 @@ namespace clitk { void ExtractStation_7_Posterior_Limits(); void ExtractStation_7_Remove_Structures(); bool m_S7_UseMostInferiorPartOnlyFlag; - bool m_ComputeStationsSupportsFlag; + bool m_ForceSupportsFlag; + bool m_CheckSupportFlag; MaskImagePointer m_Working_Trachea; MaskImagePointer m_LeftBronchus; MaskImagePointer m_RightBronchus; @@ -252,14 +297,6 @@ namespace clitk { ListOfPointsType & LR, ListOfPointsType & Ant, ListOfPointsType & Post); - // Station 4RL - void ExtractStation_4RL(); - void ExtractStation_4RL_SI_Limits(); - void ExtractStation_4RL_LR_Limits(); - void ExtractStation_4RL_AP_Limits(); - MaskImagePointer m_RightSupport; - MaskImagePointer m_LeftSupport; - private: ExtractLymphStationsFilter(const Self&); //purposely not implemented void operator=(const Self&); //purposely not implemented @@ -278,6 +315,9 @@ namespace clitk { #include "clitkExtractLymphStation_3A.txx" #include "clitkExtractLymphStation_4RL.txx" #include "clitkExtractLymphStation_1RL.txx" +#include "clitkExtractLymphStation_5.txx" +#include "clitkExtractLymphStation_6.txx" + #include "clitkExtractLymphStation_8.txx" #include "clitkExtractLymphStation_7.txx" #endif