]> Creatis software - clitk.git/blob - segmentation/clitkExtractLymphStationsFilter.txx
various update
[clitk.git] / segmentation / clitkExtractLymphStationsFilter.txx
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17   ======================================================================-====*/
18
19 #ifndef CLITKEXTRACTLYMPHSTATIONSFILTER_TXX
20 #define CLITKEXTRACTLYMPHSTATIONSFILTER_TXX
21
22 // clitk
23 #include "clitkCommon.h"
24 #include "clitkExtractLymphStationsFilter.h"
25 #include "clitkAddRelativePositionConstraintToLabelImageFilter.h"
26 #include "clitkSegmentationUtils.h"
27 #include "clitkAutoCropFilter.h"
28 #include "clitkSegmentationUtils.h"
29 #include "clitkSliceBySliceRelativePositionFilter.h"
30
31 // itk
32 #include <itkStatisticsLabelMapFilter.h>
33 #include <itkLabelImageToStatisticsLabelMapFilter.h>
34 #include <itkRegionOfInterestImageFilter.h>
35 #include <itkBinaryThresholdImageFilter.h>
36 #include <itkImageSliceConstIteratorWithIndex.h>
37 #include <itkImageSliceIteratorWithIndex.h>
38 #include <itkBinaryThinningImageFilter.h>
39
40 // itk ENST
41 #include "RelativePositionPropImageFilter.h"
42
43 //--------------------------------------------------------------------
44 template <class TImageType>
45 clitk::ExtractLymphStationsFilter<TImageType>::
46 ExtractLymphStationsFilter():
47   clitk::FilterBase(),
48   clitk::FilterWithAnatomicalFeatureDatabaseManagement(),
49   itk::ImageToImageFilter<TImageType, MaskImageType>()
50 {
51   this->SetNumberOfRequiredInputs(1);
52   SetBackgroundValue(0);
53   SetForegroundValue(1);
54
55   // Station 7
56   SetFuzzyThreshold(0.5);
57   SetStation7Filename("station7.mhd");
58 }
59 //--------------------------------------------------------------------
60
61
62 //--------------------------------------------------------------------
63 template <class TImageType>
64 template <class ArgsInfoType>
65 void 
66 clitk::ExtractLymphStationsFilter<TImageType>::
67 SetArgsInfo(ArgsInfoType & argsinfo) {
68   DD("SetArgsInfo");
69 }
70 //--------------------------------------------------------------------
71
72
73 //--------------------------------------------------------------------
74 template <class TImageType>
75 void 
76 clitk::ExtractLymphStationsFilter<TImageType>::
77 GenerateOutputInformation() { 
78   // Get inputs
79   LoadAFDB();
80   m_Input = dynamic_cast<const ImageType*>(itk::ProcessObject::GetInput(0));
81   m_Support = GetAFDB()->template GetImage <MaskImageType>("mediastinum");
82   
83   //
84   typedef clitk::BooleanOperatorLabelImageFilter<MaskImageType> BFilter;
85   BFilter::Pointer merge = BFilter::New();  
86
87   // Extract Station7
88   ExtractStation_7();
89   m_Output = m_Station7;
90
91   // Extract Station4RL
92   ExtractStation_4RL();
93
94   writeImage<MaskImageType>(m_Station4RL, "s4rl.mhd");
95   // writeImage<MaskImageType>(m_Output, "ouput.mhd");
96   //writeImage<MaskImageType>(m_Working_Support, "ws.mhd");
97   /*merge->SetInput1(m_Station7);
98   merge->SetInput2(m_Station4RL); // support
99   merge->SetOperationType(BFilter::AndNot); CHANGE OPERATOR
100   merge->SetForegroundValue(4);
101   merge->Update();
102   m_Output = merge->GetOutput();
103   */
104 }
105 //--------------------------------------------------------------------
106
107
108 //--------------------------------------------------------------------
109 template <class TImageType>
110 void 
111 clitk::ExtractLymphStationsFilter<TImageType>::
112 GenerateInputRequestedRegion() {
113   DD("GenerateInputRequestedRegion (nothing?)");
114 }
115 //--------------------------------------------------------------------
116
117
118 //--------------------------------------------------------------------
119 template <class TImageType>
120 void 
121 clitk::ExtractLymphStationsFilter<TImageType>::
122 GenerateData() {
123   DD("GenerateData, graft output");
124
125   // Final Step -> graft output (if SetNthOutput => redo)
126   this->GraftOutput(m_Output);
127 }
128 //--------------------------------------------------------------------
129   
130
131 //--------------------------------------------------------------------
132 template <class TImageType>
133 void 
134 clitk::ExtractLymphStationsFilter<TImageType>::
135 ExtractStation_7() {
136   DD("ExtractStation_7");
137   ExtractStation_7_SI_Limits();
138   ExtractStation_7_RL_Limits();
139   ExtractStation_7_Posterior_Limits();
140 }
141 //--------------------------------------------------------------------
142
143
144 //--------------------------------------------------------------------
145 template <class TImageType>
146 void 
147 clitk::ExtractLymphStationsFilter<TImageType>::
148 ExtractStation_4RL() {
149   DD("ExtractStation_4RL");
150   writeImage<MaskImageType>(m_Support, "essai.mhd"); // OK
151
152   /*
153     WARNING ONLY 4R FIRST !!! (not same inf limits)
154    */
155     
156   ExtractStation_4RL_SI_Limits();
157   ExtractStation_4RL_LR_Limits();
158
159 }
160 //--------------------------------------------------------------------
161
162
163
164 #endif //#define CLITKBOOLEANOPERATORLABELIMAGEFILTER_TXX