#include #include #include #include #include #include // ------------------------------------------------------------------------- cpPluginsImageFilters::BinaryThresholdImageFilter:: BinaryThresholdImageFilter( ) : Superclass( ) { this->_AddInput( "Input" ); this->_AddOutput< cpPlugins::Image >( "Output" ); this->m_Parameters.ConfigureAsReal( "LowerThresholdValue" ); this->m_Parameters.ConfigureAsReal( "UpperThresholdValue" ); 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.SetReal( "InsideValue", 1 ); this->m_Parameters.SetReal( "OutsideValue", 0 ); this->m_Parameters.SetSelectedChoice( "OutputResolution", "unsigned char" ); } // ------------------------------------------------------------------------- cpPluginsImageFilters::BinaryThresholdImageFilter:: ~BinaryThresholdImageFilter( ) { } // ------------------------------------------------------------------------- std::string cpPluginsImageFilters::BinaryThresholdImageFilter:: _GenerateData( ) { auto image = this->GetInputData( "Input" )->GetITK< itk::DataObject >( ); std::string cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD0, image, 1 ); if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD0, image, 2 ); if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD0, image, 3 ); if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD0, image, 4 ); return( r ); } // ------------------------------------------------------------------------- template< class _TImage > std::string cpPluginsImageFilters::BinaryThresholdImageFilter:: _GD0( _TImage* image ) { if( image != NULL ) { 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 _TImage, class _TBinaryPixel > std::string cpPluginsImageFilters::BinaryThresholdImageFilter:: _GD1( _TImage* image ) { 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 _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 >( ); filter->SetInput( image ); filter->SetLowerThreshold( lower_val ); filter->SetUpperThreshold( upper_val ); filter->SetInsideValue( in_val ); filter->SetOutsideValue( out_val ); filter->Update( ); // Connect output this->GetOutputData( "Output" )->SetITK( filter->GetOutput( ) ); return( "" ); } // eof - $RCSfile$