]> Creatis software - clitk.git/blob - filters/clitkMedianImageGenericFilter.txx
696124c95749dfb5c97197718909a566524eacaa
[clitk.git] / filters / clitkMedianImageGenericFilter.txx
1 #ifndef clitkMedianImageGenericFilter_txx
2 #define clitkMedianImageGenericFilter_txx
3
4 /* =================================================
5  * @file   clitkMedianImageGenericFilter.txx
6  * @author Bharath Navalapakkam <Bharath.Navalpakkam@creatis.insa-lyon.fr>
7  * @date   20 March 2010
8  * 
9  * @brief 
10  * 
11  ===================================================*/
12
13 // itk include
14 #include "itkMedianImageFilter.h"
15 #include "itkImage.h"
16
17 namespace clitk
18 {
19   
20   //--------------------------------------------------------------------
21   template<class args_info_type>
22   MedianImageGenericFilter<args_info_type>::MedianImageGenericFilter():
23     ImageToImageGenericFilter<Self>("MedianImage") {
24     InitializeImageType<2>();
25     InitializeImageType<3>();
26     InitializeImageType<4>();
27   }
28   //--------------------------------------------------------------------
29
30
31   //--------------------------------------------------------------------
32   template<class args_info_type>
33   template<unsigned int Dim>
34   void MedianImageGenericFilter<args_info_type>::InitializeImageType() {      
35     ADD_IMAGE_TYPE(Dim, char);
36     ADD_IMAGE_TYPE(Dim, uchar);
37     ADD_IMAGE_TYPE(Dim, short);
38     ADD_IMAGE_TYPE(Dim, int);
39     ADD_IMAGE_TYPE(Dim, float);
40     ADD_IMAGE_TYPE(Dim, double);
41     ADD_IMAGE_TYPE(Dim, unsigned short); 
42   }
43   //--------------------------------------------------------------------
44   
45
46   //--------------------------------------------------------------------
47   template<class args_info_type>
48   void MedianImageGenericFilter<args_info_type>::SetArgsInfo(const args_info_type & a) {
49     mArgsInfo=a;
50     SetIOVerbose(mArgsInfo.verbose_flag);  
51
52     if (mArgsInfo.input_given) {
53       SetInputFilename(mArgsInfo.input_arg);
54     }
55     if (mArgsInfo.output_given) {
56       SetOutputFilename(mArgsInfo.output_arg);
57     }
58
59   }
60   //--------------------------------------------------------------------
61
62
63   //--------------------------------------------------------------------
64   // Update with the number of dimensions and the pixeltype
65   //--------------------------------------------------------------------
66   template<class args_info_type>
67   template<class InputImageType>
68   void 
69   MedianImageGenericFilter<args_info_type>::UpdateWithInputImageType()
70   {
71     // Reading input
72     typename InputImageType::Pointer input = this->template GetInput<InputImageType>(0);
73     // Typedef
74     typedef typename InputImageType::PixelType PixelType;
75
76     // typedef itk::Image<PixelType,InputImageType::ImageDimension> OutputImageType;
77
78     // Main filter   
79     typedef itk::Image<PixelType, InputImageType::ImageDimension> OutputImageType;
80     class  InputImageType::SizeType indexRadius;
81
82     // Filter
83     typedef itk::MedianImageFilter<InputImageType, OutputImageType> MedianImageFilterType; 
84     typename MedianImageFilterType::Pointer thresholdFilter=MedianImageFilterType::New();
85     thresholdFilter->SetInput(input);
86
87     indexRadius[0]=mArgsInfo.radius_arg[0];
88     indexRadius[1]=mArgsInfo.radius_arg[1];
89     indexRadius[2]=mArgsInfo.radius_arg[2];
90   
91     // indexRadius[0] = 1; 
92     // indexRadius[1] = 1;
93
94     thresholdFilter->SetRadius( indexRadius );  
95
96     typename OutputImageType::Pointer outputImage = thresholdFilter->GetOutput();
97     thresholdFilter->Update();
98      
99     // Write/Save results
100     this->template SetNextOutput<OutputImageType>(outputImage);   
101   }
102   
103   //--------------------------------------------------------------------
104
105 }//end clitk
106
107  
108 #endif //#define clitkMedianImageGenericFilter_txx
109