#include <cpPluginsImageFilters/BinaryThresholdImageFilter.h>
#include <cpPlugins/Image.h>
+#include <cpPlugins_ITKInstances/ImageFilters.h>
#include <itkBinaryThresholdImageFilter.h>
#include <itkBinaryThresholdImageFilter.hxx>
-#include <itkImageToImageFilter.hxx>
-#include <itkInPlaceImageFilter.hxx>
#include <itkUnaryFunctorImageFilter.hxx>
// -------------------------------------------------------------------------
this->m_Parameters.ConfigureAsUint( "InsideValue" );
this->m_Parameters.ConfigureAsUint( "OutsideValue" );
+ std::vector< std::string > choices;
+ choices.push_back( "char" );
+ choices.push_back( "short" );
+ choices.push_back( "int" );
+ choices.push_back( "long" );
+ choices.push_back( "float" );
+ choices.push_back( "double" );
+ choices.push_back( "unsigned char" );
+ choices.push_back( "unsigned short" );
+ choices.push_back( "unsigned int" );
+ choices.push_back( "unsigned long" );
+ this->m_Parameters.ConfigureAsChoices( "OutputResolution", choices );
+
this->m_Parameters.SetReal( "LowerThresholdValue", 0 );
this->m_Parameters.SetReal( "UpperThresholdValue", 10000 );
- this->m_Parameters.SetUint( "InsideValue", 1 );
- this->m_Parameters.SetUint( "OutsideValue", 0 );
+ this->m_Parameters.SetReal( "InsideValue", 1 );
+ this->m_Parameters.SetReal( "OutsideValue", 0 );
+ this->m_Parameters.SetSelectedChoice( "OutputResolution", "unsigned char" );
}
// -------------------------------------------------------------------------
}
// -------------------------------------------------------------------------
-template< class I >
+template< class _TImage >
std::string cpPluginsImageFilters::BinaryThresholdImageFilter::
-_GD0( I* image )
+_GD0( _TImage* image )
{
if( image != NULL )
- return(
- this->_GD1< I, itk::Image< unsigned char, I::ImageDimension > >(
- image
- )
- );
+ {
+ auto choice = this->m_Parameters.GetSelectedChoice( "OutputResolution" );
+ if( choice == "char" )
+ return( this->_GD1< _TImage, char >( image ) );
+ else if( choice == "short" )
+ return( this->_GD1< _TImage, short >( image ) );
+ else if( choice == "int" )
+ return( this->_GD1< _TImage, int >( image ) );
+ else if( choice == "long" )
+ return( this->_GD1< _TImage, long >( image ) );
+ else if( choice == "float" )
+ return( this->_GD1< _TImage, float >( image ) );
+ else if( choice == "double" )
+ return( this->_GD1< _TImage, double >( image ) );
+ else if( choice == "unsigned char" )
+ return( this->_GD1< _TImage, unsigned char >( image ) );
+ else if( choice == "unsigned short" )
+ return( this->_GD1< _TImage, unsigned short >( image ) );
+ else if( choice == "unsigned int" )
+ return( this->_GD1< _TImage, unsigned int >( image ) );
+ else if( choice == "unsigned long" )
+ return( this->_GD1< _TImage, unsigned long >( image ) );
+ else return( "BinaryThresholdImageFilter: no valid output type." );
+ }
else
return(
"ImageFilters::BinaryThresholdImageFilter: No valid input image."
}
// -------------------------------------------------------------------------
-template< class I, class O >
+template< class _TImage, class _TBinaryPixel >
std::string cpPluginsImageFilters::BinaryThresholdImageFilter::
-_GD1( I* image )
+_GD1( _TImage* image )
{
- typedef itk::BinaryThresholdImageFilter< I, O > _F;
- typedef typename I::PixelType _IP;
- typedef typename O::PixelType _OP;
+ typedef itk::Image< _TBinaryPixel, _TImage::ImageDimension > _TBinaryImage;
+ typedef itk::BinaryThresholdImageFilter< _TImage, _TBinaryImage > _F;
+ typedef typename _TImage::PixelType _TP;
+ typedef typename _TBinaryImage::PixelType _UP;
// Get parameters
- _IP lower_val = _IP( this->m_Parameters.GetReal( "LowerThresholdValue" ) );
- _IP upper_val = _IP( this->m_Parameters.GetReal( "UpperThresholdValue" ) );
- _OP in_val = _OP( this->m_Parameters.GetUint( "InsideValue" ) );
- _OP out_val = _OP( this->m_Parameters.GetUint( "OutsideValue" ) );
+ _TP lower_val = _TP( this->m_Parameters.GetReal( "LowerThresholdValue" ) );
+ _TP upper_val = _TP( this->m_Parameters.GetReal( "UpperThresholdValue" ) );
+ _UP in_val = _UP( this->m_Parameters.GetReal( "InsideValue" ) );
+ _UP out_val = _UP( this->m_Parameters.GetReal( "OutsideValue" ) );
// Configure filter
_F* filter = this->_CreateITK< _F >( );