#include #include #include #include #include // ------------------------------------------------------------------------- cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData:: SecondRankDiffusionTensorToPolyData( ) : Superclass( ), m_Algorithm( NULL ) { this->m_ClassName = "cpPlugins::SecondRankDiffusionTensorToPolyData"; this->m_ClassCategory = "ImageToMeshFilter"; this->SetNumberOfInputs( 1 ); this->SetNumberOfOutputs( 1 ); this->_MakeOutput< cpPlugins::Interface::Mesh >( 0 ); using namespace cpPlugins::Interface; this->m_Parameters = this->m_DefaultParameters; } // ------------------------------------------------------------------------- cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData:: ~SecondRankDiffusionTensorToPolyData( ) { if( this->m_Algorithm != NULL ) this->m_Algorithm->Delete( ); } // ------------------------------------------------------------------------- std::string cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData:: _GenerateData( ) { // Get input cpPlugins::Interface::Image* image = this->GetInput< cpPlugins::Interface::Image >( 0 ); if( image == NULL ) return( "SecondRankDiffusionTensorToPolyData: Input data is not a valid image." ); itk::DataObject* itk_image = NULL; std::string r = ""; cpPlugins_ImageArray_Input_Demangle( itk::SymmetricSecondRankTensor, float, 3, 3, image, itk_image, r, _RealGD ); else cpPlugins_ImageArray_Input_Demangle( itk::SymmetricSecondRankTensor, double, 3, 3, image, itk_image, r, _RealGD ); else r = "SecondRankDiffusionTensorToPolyData: Input does not have a DiffusionTensor3D."; return( r ); } // ------------------------------------------------------------------------- template< class I > std::string cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData:: _RealGD( itk::DataObject* image ) { typedef cpExtensions::Algorithms::SecondRankDiffusionTensorToPolyData< I > _F; // Configure filter _F* f = NULL; if( this->m_Algorithm == NULL ) { f = _F::New( ); this->m_Algorithm = f; } // fi f->SetInputData( dynamic_cast< I* >( image ) ); this->m_Algorithm->Update( ); // Connect output cpPlugins::Interface::Mesh* out = this->GetOutput< cpPlugins::Interface::Mesh >( 0 ); if( out != NULL ) { out->SetVTKMesh( this->m_Algorithm->GetOutput( ) ); return( "" ); } else return( "OtsuThresholdImageFilter: output not correctly created." ); } // eof - $RCSfile$