#include #include #include #include #include #include // ------------------------------------------------------------------------- cpPluginsImageThresholdFilters::ImageToBoundingBoxFromThreshold:: ImageToBoundingBoxFromThreshold( ) : Superclass( ) { typedef cpPlugins::DataObjects::Image _TImage; typedef cpPlugins::DataObjects::BoundingBox _TBBox; this->_ConfigureInput< _TImage >( "Input", true, false ); this->_ConfigureOutput< _TBBox >( "Output" ); this->m_Parameters.ConfigureAsReal( "LowerThreshold", 0 ); this->m_Parameters.ConfigureAsReal( "UpperThreshold", 0 ); } // ------------------------------------------------------------------------- cpPluginsImageThresholdFilters::ImageToBoundingBoxFromThreshold:: ~ImageToBoundingBoxFromThreshold( ) { } // ------------------------------------------------------------------------- void cpPluginsImageThresholdFilters::ImageToBoundingBoxFromThreshold:: _GenerateData( ) { auto o = this->GetInputData( "Input" ); cpPlugins_Demangle_Image_ScalarPixels_AllDims_1( o, _GD0 ) this->_Error( "Invalid input image." ); } // ------------------------------------------------------------------------- template< class _TImage > void cpPluginsImageThresholdFilters::ImageToBoundingBoxFromThreshold:: _GD0( _TImage* image ) { typedef cpExtensions::Algorithms::ImageToBoundingBoxFromThreshold< _TImage > _TFilter; // Configure filter _TFilter* filter = this->_CreateITK< _TFilter >( ); filter->SetImage( image ); filter->SetLowerThreshold( this->m_Parameters.GetReal( "LowerThreshold" ) ); filter->SetUpperThreshold( this->m_Parameters.GetReal( "UpperThreshold" ) ); filter->Compute( ); // Create output auto reg = filter->GetRegion( ); auto bb = this->GetOutput< cpPlugins::DataObjects::BoundingBox >( "Output" ); typename _TImage::PointType p0, p1; image->TransformIndexToPhysicalPoint( reg.GetIndex( ), p0 ); image->TransformIndexToPhysicalPoint( reg.GetIndex( ) + reg.GetSize( ), p1 ); bb->SetMinimum( p0 ); bb->SetMaximum( p1 ); } // eof - $RCSfile$