+++ /dev/null
-#include "RGBImageToOtherChannelsFilter.h"
-#include <cpPlugins/Interface/Image.h>
-
-#include <cpExtensions/Algorithms/RGBImageToOtherChannelsFilter.h>
-#include <cpExtensions/Algorithms/RGBExtractFunction.h>
-#include <cpExtensions/Algorithms/RGBToHSVFunction.h>
-#include <cpExtensions/Algorithms/RGBToYPbPrFunction.h>
-
-// -------------------------------------------------------------------------
-cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter::
-RGBImageToOtherChannelsFilter( )
- : Superclass( )
-{
- this->_AddInput( "Input" );
- this->_AddOutput< cpPlugins::Interface::Image >( "Output" );
-
- std::vector< std::string > choices;
- choices.push_back( "HSV" );
- choices.push_back( "YPbPr" );
- this->m_Parameters->ConfigureAsChoices( "OutChannel", choices );
-}
-
-// -------------------------------------------------------------------------
-cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter::
-~RGBImageToOtherChannelsFilter( )
-{
-}
-
-// -------------------------------------------------------------------------
-std::string cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter::
-_GenerateData( )
-{
- auto image = this->GetInputData( "Input" );
- itk::DataObject* itk_image = NULL;
- std::string r = "";
- cpPlugins_Image_Demangle_AllRGBTypes( 2, image, itk_image, r, _GD0 );
- else cpPlugins_Image_Demangle_AllRGBTypes( 3, image, itk_image, r, _GD0 );
- else cpPlugins_Image_Demangle_AllRGBTypes( 4, image, itk_image, r, _GD0 );
- else r = "RGBImageToOtherChannelsFilter: Input image type not supported.";
- return( r );
-}
-
-// -------------------------------------------------------------------------
-template< class I >
-std::string cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter::
-_GD0( itk::DataObject* image )
-{
- typedef typename I::PixelType _P;
-
- std::string outc = this->m_Parameters->GetSelectedChoice( "OutChannel" );
- std::string r = "";
-
- using namespace cpExtensions::Algorithms;
- if( outc == "HSV" )
- r = this->_RealGD< I, RGBToHSVFunction< _P > >( image );
- else if( outc == "YPbPr" )
- r = this->_RealGD< I, RGBToYPbPrFunction< _P > >( image );
- else if( outc == "Copy" )
- r = this->_RealGD< I, RGBExtractFunction< _P > >( image );
- else
- r =
- std::string( "RGBImageToOtherChannelsFilter: Conversor not available: " ) +
- outc;
- return( r );
-}
-
-// -------------------------------------------------------------------------
-template< class I, class C >
-std::string cpPlugins::BasicFilters::RGBImageToOtherChannelsFilter::
-_RealGD( itk::DataObject* image )
-{
- typedef itk::Image< itk::RGBPixel< double >, I::ImageDimension > _O;
- typedef
- cpExtensions::Algorithms::RGBImageToOtherChannelsFilter< I, _O, C >
- _F;
-
- // Configure filter
- _F* filter = this->_CreateITK< _F >( );
- filter->SetInput( dynamic_cast< I* >( image ) );
- filter->Update( );
-
- // Connect output
- auto out = this->GetOutputData( "Output" );
- out->SetITK( filter->GetOutput( ) );
- return( "" );
-}
-
-// eof - $RCSfile$