]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Plugins/BasicFilters/MacheteImageFilter.cxx
modifications for filters and installer
[cpPlugins.git] / lib / cpPlugins / Plugins / BasicFilters / MacheteImageFilter.cxx
1 #include "MacheteImageFilter.h"
2 #include <cpPlugins/Interface/Image.h>
3
4 //#include <MacheteImageFilter.h>
5 #include <itkImage.h>
6 #include <itkBinaryBallStructuringElement.h>
7
8 #include <cpExtensions/Algorithms/MacheteImageFilter.h>
9
10 // -------------------------------------------------------------------------
11 cpPlugins::BasicFilters::MacheteImageFilter::
12 MacheteImageFilter()
13 : Superclass()
14 {
15   this->_AddInput("Input");
16   this->_MakeOutput< cpPlugins::Interface::Image >("Output");
17
18   this->m_Parameters->ConfigureAsReal("Radius", 20);
19   //this->m_Parameters->ConfigureAsPoint("Point", 3, 3);
20   this->m_Parameters->ConfigureAsReal("X", 30);
21   this->m_Parameters->ConfigureAsReal("Y", 30);
22   this->m_Parameters->ConfigureAsReal("Z", 30);
23
24
25 }
26
27 // -------------------------------------------------------------------------
28 cpPlugins::BasicFilters::MacheteImageFilter::
29 ~MacheteImageFilter()
30 {
31 }
32
33 // -------------------------------------------------------------------------
34 std::string cpPlugins::BasicFilters::MacheteImageFilter::
35 _GenerateData()
36 {
37   cpPlugins::Interface::Image* image =
38     this->GetInput< cpPlugins::Interface::Image >("Input");
39   if (image == NULL)
40     return("MacheteImageFilter: No input image.");
41
42   itk::DataObject* itk_image = NULL;
43   std::string r = "";
44   cpPlugins_Image_Demangle_AllScalarTypes(2, image, itk_image, r, _GD0);
45   else cpPlugins_Image_Demangle_AllScalarTypes(3, image, itk_image, r, _GD0);
46   else cpPlugins_Image_Demangle_AllScalarTypes(4, image, itk_image, r, _GD0);
47   else r = "MacheteImageFilter: Input image type not supported.";
48   return(r);
49 }
50
51 // -------------------------------------------------------------------------
52 template< class I >
53 std::string cpPlugins::BasicFilters::MacheteImageFilter::
54 _GD0(itk::DataObject* image)
55 {
56   return(
57     this->_RealGD< I, itk::Image< unsigned char, I::ImageDimension > >(
58     image
59     )
60     );
61 }
62
63 // -------------------------------------------------------------------------
64 template< class I, class O >
65 inline std::string cpPlugins::BasicFilters::MacheteImageFilter::
66 _RealGD(itk::DataObject* image)
67 {
68   typedef cpExtensions::Algorithms::MacheteImageFilter< I, O > _F;
69   typedef typename I::PixelType _RT;
70
71   // Get parameters
72
73   _RT rad_val = _RT(this->m_Parameters->GetReal("Radius"));
74   
75   double pointx = this->m_Parameters->GetReal("X");
76   double pointy = this->m_Parameters->GetReal("Y");
77   double pointz = this->m_Parameters->GetReal("Z");
78
79   // Configure filter
80     _F* filter = this->_CreateITK< _F >();
81   filter->SetInput(dynamic_cast<I*>(image));
82   filter->SetRadius(rad_val);
83    
84   filter->SetPoint(pointx, pointy, pointz);
85
86   filter->Update();
87
88   // Connect output
89   cpPlugins::Interface::Image* out =
90     this->GetOutput< cpPlugins::Interface::Image >("Output");
91   if (out != NULL)
92   {
93     out->SetITK< O >( filter->GetOutput( ) );
94     return("");
95   }
96   else
97     return("MacheteImageFilter: output not correctly created.");
98 }
99
100 // eof - $RCSfile$