X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FPlugins%2FRGBImageToHSVChannelsFilter.cxx;h=166dfee3875b4b7f414a8cd4b81224b55da5f4bd;hb=ab179c6d27a7b6952d52a10da584a9e4acddbf24;hp=8d5403455b95d72e3766daa58cd0b2965a608412;hpb=2f1688b7490f99c3cb932344b1d8db51bd821c4b;p=cpPlugins.git diff --git a/lib/cpPlugins/Plugins/RGBImageToHSVChannelsFilter.cxx b/lib/cpPlugins/Plugins/RGBImageToHSVChannelsFilter.cxx index 8d54034..166dfee 100644 --- a/lib/cpPlugins/Plugins/RGBImageToHSVChannelsFilter.cxx +++ b/lib/cpPlugins/Plugins/RGBImageToHSVChannelsFilter.cxx @@ -1,23 +1,31 @@ #include #include -#include +#include +#include #define ITK_MANUAL_INSTANTIATION #include #include // ------------------------------------------------------------------------- -#define cpPlugins_RGBImageToHSVChannelsFilter_Dimension( r, d, o, f ) \ +#define cpPlugins_RGB2HSV_Dimension( r, d, o, f ) \ if( dynamic_cast< itk::ImageBase< d >* >( o ) != NULL ) \ r = this->f< d >( ) // ------------------------------------------------------------------------- -#define cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, p, d, o, f ) \ +#define cpPlugins_RGB2HSV_RGB( r, p, d, o, f ) \ if( \ dynamic_cast< itk::Image< itk::RGBPixel< p >, d >* >( o ) != NULL \ ) \ r = this->f< p, d >( ) +// ------------------------------------------------------------------------- +std::string cpPlugins::Plugins::RGBImageToHSVChannelsFilter:: +GetClassName( ) const +{ + return( "cpPlugins::Plugins::RGBImageToHSVChannelsFilter" ); +} + // ------------------------------------------------------------------------- cpPlugins::Plugins::RGBImageToHSVChannelsFilter:: RGBImageToHSVChannelsFilter( ) @@ -29,7 +37,7 @@ RGBImageToHSVChannelsFilter( ) this->_MakeOutput< cpPlugins::Interface::Image >( 1 ); this->_MakeOutput< cpPlugins::Interface::Image >( 2 ); - this->m_DefaultParameters.clear( ); + this->m_DefaultParameters.Clear( ); } // ------------------------------------------------------------------------- @@ -38,13 +46,6 @@ cpPlugins::Plugins::RGBImageToHSVChannelsFilter:: { } -// ------------------------------------------------------------------------- -std::string cpPlugins::Plugins::RGBImageToHSVChannelsFilter:: -GetClassName( ) const -{ - return( "cpPlugins::Plugins::RGBImageToHSVChannelsFilter" ); -} - // ------------------------------------------------------------------------- std::string cpPlugins::Plugins::RGBImageToHSVChannelsFilter:: _GenerateData( ) @@ -52,10 +53,10 @@ _GenerateData( ) itk::DataObject* o = this->_GetInput( 0 ); std::string r = "cpPlugins::Plugins::RGBImageToHSVChannelsFilter: itk::Image dimension not supported."; - cpPlugins_RGBImageToHSVChannelsFilter_Dimension( r, 1, o, _GD0 ); - else cpPlugins_RGBImageToHSVChannelsFilter_Dimension( r, 2, o, _GD0 ); - else cpPlugins_RGBImageToHSVChannelsFilter_Dimension( r, 3, o, _GD0 ); - else cpPlugins_RGBImageToHSVChannelsFilter_Dimension( r, 4, o, _GD0 ); + cpPlugins_RGB2HSV_Dimension( r, 1, o, _GD0 ); + else cpPlugins_RGB2HSV_Dimension( r, 2, o, _GD0 ); + else cpPlugins_RGB2HSV_Dimension( r, 3, o, _GD0 ); + else cpPlugins_RGB2HSV_Dimension( r, 4, o, _GD0 ); return( r ); } @@ -68,16 +69,16 @@ _GD0( ) dynamic_cast< itk::ImageBase< D >* >( this->_GetInput( 0 ) ); std::string r = "cpPlugins::Plugins::RGBImageToHSVChannelsFilter: itk::Image pixel type not supported"; - cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, char, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, short, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, int, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, long, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, unsigned char, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, unsigned short, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, unsigned int, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, unsigned long, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, float, D, i, _GD1 ); - else cpPlugins_RGBImageToHSVChannelsFilter_RGB( r, double, D, i, _GD1 ); + cpPlugins_RGB2HSV_RGB( r, char, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, short, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, int, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, long, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, unsigned char, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, unsigned short, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, unsigned int, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, unsigned long, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, float, D, i, _GD1 ); + else cpPlugins_RGB2HSV_RGB( r, double, D, i, _GD1 ); return( r ); } @@ -88,24 +89,26 @@ _GD1( ) { typedef itk::Image< itk::RGBPixel< P >, D > _TImage; typedef itk::Image< P, D > _TChannel; + typedef cpPlugins::Extensions::Algorithms::RGBToHSVFunction< P > _TFunction; typedef cpPlugins::Extensions::Algorithms:: - RGBImageToHSVChannelsFilter< _TImage, _TChannel > _TFilter; + RGBImageToOtherChannelsFilter< _TImage, _TChannel, _TFunction > _TFilter; // Filter creation _TFilter* filter = - dynamic_cast< _TFilter* >( this->m_Filter.GetPointer( ) ); + dynamic_cast< _TFilter* >( this->m_RealProcessObject.GetPointer( ) ); if( filter == NULL ) { - this->m_Filter = _TFilter::New( ); - filter = dynamic_cast< _TFilter* >( this->m_Filter.GetPointer( ) ); + this->m_RealProcessObject = _TFilter::New( ); + filter = + dynamic_cast< _TFilter* >( this->m_RealProcessObject.GetPointer( ) ); } // fi filter->SetInput( dynamic_cast< _TImage* >( this->_GetInput( 0 ) ) ); filter->Update( ); - this->_SetOutput( 0, filter->GetHueOutput( ) ); - this->_SetOutput( 1, filter->GetSaturationOutput( ) ); - this->_SetOutput( 2, filter->GetValueOutput( ) ); + this->_SetOutput( 0, filter->GetChannel1( ) ); + this->_SetOutput( 1, filter->GetChannel2( ) ); + this->_SetOutput( 2, filter->GetChannel3( ) ); return( "" ); }