#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" ); 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, 2 ); if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD0, image, 3 ); /* TODO if( r != "" ) cpPlugin_Image_Demangle_Pixel_AllScalars( r, _GD0, image, 1 ); 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 ) return( this->_GD1< _TImage, unsigned char >( image ) ); 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; // Get parameters _TP lower_val = _TP( this->m_Parameters.GetReal( "LowerThresholdValue" ) ); _TP upper_val = _TP( this->m_Parameters.GetReal( "UpperThresholdValue" ) ); _TBinaryPixel in_val = _TBinaryPixel( this->m_Parameters.GetReal( "InsideValue" ) ); _TBinaryPixel out_val = _TBinaryPixel( 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$