X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=plugins%2FAnisotropicDiffusion%2FCurvatureAnisotropicDiffusionImageFilter.cxx;h=ad82dc8980475f74b09d7b29b30a81e694c62d69;hb=9b11582dc5062474361432e46838c4e790c21f10;hp=41e0c9c25afe979bf9b6564bc75ffc4ce94edf42;hpb=3393941bf8f26babc7b592db434b40c1b747a687;p=cpPlugins.git diff --git a/plugins/AnisotropicDiffusion/CurvatureAnisotropicDiffusionImageFilter.cxx b/plugins/AnisotropicDiffusion/CurvatureAnisotropicDiffusionImageFilter.cxx index 41e0c9c..ad82dc8 100644 --- a/plugins/AnisotropicDiffusion/CurvatureAnisotropicDiffusionImageFilter.cxx +++ b/plugins/AnisotropicDiffusion/CurvatureAnisotropicDiffusionImageFilter.cxx @@ -1,35 +1,30 @@ -#include +#include #include +#include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include // ------------------------------------------------------------------------- cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter:: CurvatureAnisotropicDiffusionImageFilter( ) : Superclass( ) { - this->_ConfigureInput< cpPlugins::DataObjects::Image >( "Input", true, false ); - this->_ConfigureOutput< cpPlugins::DataObjects::Image >( "Output" ); + typedef cpPlugins::DataObjects::Image _TImage; + this->_ConfigureInput< _TImage >( "Input", true, false ); + this->_ConfigureOutput< _TImage >( "Output" ); - this->m_Parameters.ConfigureAsUint( "NumberOfIterations" ); - this->m_Parameters.ConfigureAsBool( "UseImageSpacing" ); - this->m_Parameters.ConfigureAsReal( "ConductanceParameter" ); - this->m_Parameters.ConfigureAsReal( "TimeStep" ); - - this->m_Parameters.SetUint( "NumberOfIterations", 5 ); - this->m_Parameters.SetBool( "UseImageSpacing", false ); - this->m_Parameters.SetReal( "ConductanceParameter", 3 ); - this->m_Parameters.SetReal( "TimeStep", 0.0625 ); + this->m_Parameters.ConfigureAsUint( "NumberOfIterations", 5 ); + this->m_Parameters.ConfigureAsBool( "UseImageSpacing", false ); + this->m_Parameters.ConfigureAsReal( "ConductanceParameter", 3 ); + this->m_Parameters.ConfigureAsReal( "TimeStep", 0.0625 ); + std::vector< std::string > choices; +#ifdef cpPlugins_CONFIG_REAL_TYPES_float + choices.push_back( "float" ); +#endif // cpPlugins_CONFIG_REAL_TYPES_float +#ifdef cpPlugins_CONFIG_REAL_TYPES_double + choices.push_back( "double" ); +#endif // cpPlugins_CONFIG_REAL_TYPES_double + this->m_Parameters.ConfigureAsChoices( "OutputResolution", choices ); } // ------------------------------------------------------------------------- @@ -43,9 +38,8 @@ void cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter:: _GenerateData( ) { auto o = this->GetInputData( "Input" ); - cpPlugins_Demangle_ImageScalars( o, _GD0, 2 ); - else cpPlugins_Demangle_ImageScalars( o, _GD0, 3 ); - else this->_Error( "No valid input image." ); + cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 ) + this->_Error( "No valid input image." ); } // ------------------------------------------------------------------------- @@ -53,7 +47,25 @@ template< class _TImage > void cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter:: _GD0( _TImage* image ) { - typedef itk::CurvatureAnisotropicDiffusionImageFilter< _TImage, _TImage > _TFilter; + std::string out_res = + this->m_Parameters.GetSelectedChoice( "OutputResolution" ); +#ifdef cpPlugins_CONFIG_REAL_TYPES_float + if( out_res == "float" ) this->_GD1< _TImage, float >( image ); +#endif // cpPlugins_CONFIG_REAL_TYPES_float +#ifdef cpPlugins_CONFIG_REAL_TYPES_double + if( out_res == "double" ) this->_GD1< _TImage, double >( image ); +#endif // cpPlugins_CONFIG_REAL_TYPES_double +} + +// ------------------------------------------------------------------------- +template< class _TImage, class _TScalar > +void cpPluginsAnisotropicDiffusion::CurvatureAnisotropicDiffusionImageFilter:: +_GD1( _TImage* image ) +{ + typedef itk::Image< _TScalar, _TImage::ImageDimension > _TOutImage; + typedef + itk::CurvatureAnisotropicDiffusionImageFilter< _TImage, _TOutImage > + _TFilter; // Configure filter _TFilter* filter = this->_CreateITK< _TFilter >( );