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