]> Creatis software - clitk.git/blob - itk/clitkDecomposeAndReconstructImageFilter.txx
segmentation utils (jef)
[clitk.git] / itk / clitkDecomposeAndReconstructImageFilter.txx
1 #ifndef clitkDecomposeAndReconstructImageFilter_txx
2 #define clitkDecomposeAndReconstructImageFilter_txx
3
4 /* =================================================
5  * @file   clitkDecomposeAndReconstructImageFilter.txx
6  * @author 
7  * @date   
8  * 
9  * @brief 
10  * 
11  ===================================================*/
12
13
14 namespace clitk
15 {
16
17   //-------------------------------------------------------------------
18   // Update with the number of dimensions
19   //-------------------------------------------------------------------
20   template<class InputImageType, class OutputImageType>
21   DecomposeAndReconstructImageFilter<InputImageType, OutputImageType>::DecomposeAndReconstructImageFilter()
22   {
23    m_Verbose=false;
24    for (unsigned int i=0; i<InputImageDimension; i++)
25      m_Radius[i]=1;
26    m_NumberOfNewLabels=1;
27    m_FullyConnected=true;
28    m_BackgroundValue=0;
29    m_ForegroundValue=1;
30    m_MaximumNumberOfLabels=10;
31    m_MinimumObjectSize=10;
32    m_MinimumNumberOfIterations=1;
33
34   }
35
36
37   //-------------------------------------------------------------------
38   // Update with the number of dimensions and the pixeltype
39   //-------------------------------------------------------------------
40   template <class InputImageType, class  OutputImageType> 
41   void 
42   DecomposeAndReconstructImageFilter<InputImageType, OutputImageType>::GenerateData()
43   {
44
45
46     // Internal type
47     typedef itk::Image<InternalPixelType, InputImageDimension> InternalImageType;
48
49     // Filters used
50     typedef clitk::DecomposeThroughErosionImageFilter<InputImageType, InternalImageType> DecomposeThroughErosionImageFilterType;
51     typedef clitk::ReconstructThroughDilationImageFilter<InternalImageType, InputImageType> ReconstructThroughDilationImageFilterType;
52
53     // Erode 
54     typename DecomposeThroughErosionImageFilterType::Pointer erosionFilter=DecomposeThroughErosionImageFilterType::New();
55     erosionFilter->SetInput(this->GetInput());
56     erosionFilter->SetVerbose(m_Verbose);
57     erosionFilter->SetFullyConnected(m_FullyConnected);
58     erosionFilter->SetRadius(m_Radius);
59     erosionFilter->SetNumberOfNewLabels(m_NumberOfNewLabels);
60     erosionFilter->SetMinimumObjectSize(m_MinimumObjectSize);
61     erosionFilter->SetMinimumNumberOfIterations(m_MinimumNumberOfIterations);
62     erosionFilter->Update();
63
64     // Reconstruct
65     typename ReconstructThroughDilationImageFilterType::Pointer reconstructionFilter =ReconstructThroughDilationImageFilterType::New();
66     reconstructionFilter->SetInput(erosionFilter->GetOutput());
67     reconstructionFilter->SetVerbose(m_Verbose);
68     reconstructionFilter->SetRadius(m_Radius);
69     reconstructionFilter->SetMaximumNumberOfLabels(m_MaximumNumberOfLabels);
70     reconstructionFilter->SetBackgroundValue(m_BackgroundValue);
71     reconstructionFilter->SetForegroundValue(m_ForegroundValue);
72     reconstructionFilter->Update();
73     
74     // Output
75     this->SetNthOutput(0,reconstructionFilter->GetOutput());
76   }
77
78
79 }//end clitk
80  
81 #endif //#define clitkDecomposeAndReconstructImageFilter_txx