]> Creatis software - clitk.git/blob - itk/clitkReconstructWithConditionalGrayscaleDilateImageFilter.txx
Remove transparency for screenshot
[clitk.git] / itk / clitkReconstructWithConditionalGrayscaleDilateImageFilter.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://www.centreleonberard.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 clitkReconstructWithConditionalGrayscaleDilateImageFilter_txx
20 #define clitkReconstructWithConditionalGrayscaleDilateImageFilter_txx
21
22 #include <itkGrayscaleDilateImageFilter.h>
23
24 namespace clitk
25 {
26
27   //-------------------------------------------------------------------
28   template<class ImageType>
29   ReconstructWithConditionalGrayscaleDilateImageFilter<ImageType>::ReconstructWithConditionalGrayscaleDilateImageFilter()
30   {
31    m_Verbose=false;
32    m_BackgroundValue=0;
33    m_IterationNumber = 5;
34   }
35   //-------------------------------------------------------------------
36
37   //-------------------------------------------------------------------
38   template<class ImageType> 
39   void 
40   ReconstructWithConditionalGrayscaleDilateImageFilter<ImageType>::GenerateData()
41   {
42     // Get input image 
43     typename ImageType::ConstPointer input = this->GetInput();
44
45     // Main loop
46     typename ImageType::Pointer output;
47     for(int r=0; r<GetIterationNumber(); r++) {
48       
49       // Create kernel for GrayscaleDilateImageFilter
50       typedef itk::BinaryBallStructuringElement<PixelType,ImageDimension > KernelType;
51       KernelType k;
52       k.SetRadius(1);
53       k.CreateStructuringElement();
54     
55       // Check that BG is 0, because ConditionalGrayscaleDilateImageFilter consider BG is 0
56       if (GetBackgroundValue() !=0) {
57         FATAL("FATAL -> BG is not 0, check ReconstructWithConditionalGrayscaleDilateImageFilter");
58         // TODO -> replace 0 with new label, replace BG with 0 ; reverse at the end
59       }
60       
61       // ConditionalGrayscaleDilateImageFilter -> Dilate only BG value
62       typedef itk::ConditionalGrayscaleDilateImageFilter<ImageType, ImageType, KernelType> FilterType;
63       typename FilterType::Pointer m = FilterType::New();
64       m->SetKernel(k);
65       if (r==0) {
66         m->SetInput(input); // First time
67       }
68       else m->SetInput(output);
69       m->Update();
70       output = m->GetOutput();
71     }
72
73     //---------------------------------
74     this->SetNthOutput(0, output);
75   }
76
77 }//end clitk
78  
79 #endif //#define clitkReconstructWithConditionalGrayscaleDilateImageFilter_txx