]> Creatis software - cpPlugins.git/blob - plugins/AnisotropicDiffusion/CurvatureAnisotropicDiffusionImageFilter.cxx
...
[cpPlugins.git] / plugins / AnisotropicDiffusion / CurvatureAnisotropicDiffusionImageFilter.cxx
1 #include <AnisotropicDiffusion/CurvatureAnisotropicDiffusionImageFilter.h>
2 #include <cpPlugins/DataObjects/Image.h>
3 #include <cpPlugins/DataObjects/Image_Demanglers.h>
4
5 #include <itkCurvatureAnisotropicDiffusionImageFilter.h>
6 /* TODO
7    #include <itkCurvatureNDAnisotropicDiffusionFunction.hxx>
8    #include <itkFiniteDifferenceFunction.hxx>
9    #include <itkNeighborhoodInnerProduct.hxx>
10    #include <itkNeighborhoodOperator.hxx>
11    #include <itkFiniteDifferenceImageFilter.hxx>
12    #include <itkAnisotropicDiffusionImageFilter.hxx>
13    #include <itkDenseFiniteDifferenceImageFilter.hxx>
14    #include <itkNeighborhoodAlgorithm.hxx>
15    #include <itkDerivativeOperator.hxx>
16    #include <itkScalarAnisotropicDiffusionFunction.hxx>
17 */
18
19 // -------------------------------------------------------------------------
20 cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter::
21 CurvatureAnisotropicDiffusionImageFilter( )
22   : Superclass( )
23 {
24   this->_ConfigureInput< cpPlugins::DataObjects::Image >( "Input", true, false );
25   this->_ConfigureOutput< cpPlugins::DataObjects::Image >( "Output" );
26
27   this->m_Parameters.ConfigureAsUint( "NumberOfIterations" );
28   this->m_Parameters.ConfigureAsBool( "UseImageSpacing" );
29   this->m_Parameters.ConfigureAsReal( "ConductanceParameter" );
30   this->m_Parameters.ConfigureAsReal( "TimeStep" );
31
32   this->m_Parameters.SetUint( "NumberOfIterations", 5 );
33   this->m_Parameters.SetBool( "UseImageSpacing", false );
34   this->m_Parameters.SetReal( "ConductanceParameter", 3 );
35   this->m_Parameters.SetReal( "TimeStep", 0.0625 );
36 }
37
38 // -------------------------------------------------------------------------
39 cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter::
40 ~CurvatureAnisotropicDiffusionImageFilter( )
41 {
42 }
43
44 // -------------------------------------------------------------------------
45 void cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter::
46 _GenerateData( )
47 {
48   auto o = this->GetInputData( "Input" );
49   cpPlugins_Demangle_Image_ScalarPixels_VisualDims_1( o, _GD0 )
50     this->_Error( "No valid input image." );
51 }
52
53 // -------------------------------------------------------------------------
54 template< class _TImage >
55 void cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter::
56 _GD0( _TImage* image )
57 {
58   typedef itk::CurvatureAnisotropicDiffusionImageFilter< _TImage, _TImage > _TFilter;
59
60   // Configure filter
61   _TFilter* filter = this->_CreateITK< _TFilter >( );
62   filter->SetInput( image );
63   filter->SetNumberOfIterations( this->m_Parameters.GetUint( "NumberOfIterations" ) );
64   filter->SetUseImageSpacing( this->m_Parameters.GetBool( "UseImageSpacing" ) );
65   filter->SetConductanceParameter( this->m_Parameters.GetReal( "ConductanceParameter" ) );
66   filter->SetTimeStep( this->m_Parameters.GetReal( "TimeStep" ) );
67   filter->Update( );
68
69   // Connect output
70   this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
71 }
72
73 // eof - $RCSfile$