1 #include <cpPlugins/Plugins/SecondRankDiffusionTensorToPolyData.h>
2 #include <cpPlugins/Interface/Image.h>
3 #include <cpPlugins/Interface/Mesh.h>
5 #include <cpExtensions/Algorithms/SecondRankDiffusionTensorToPolyData.h>
6 #include <itkSymmetricSecondRankTensor.h>
8 // -------------------------------------------------------------------------
9 cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData::
10 SecondRankDiffusionTensorToPolyData( )
14 this->m_ClassName = "cpPlugins::SecondRankDiffusionTensorToPolyData";
15 this->m_ClassCategory = "ImageToMeshFilter";
17 this->SetNumberOfInputs( 1 );
18 this->SetNumberOfOutputs( 1 );
19 this->_MakeOutput< cpPlugins::Interface::Mesh >( 0 );
21 using namespace cpPlugins::Interface;
22 this->m_Parameters = this->m_DefaultParameters;
25 // -------------------------------------------------------------------------
26 cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData::
27 ~SecondRankDiffusionTensorToPolyData( )
29 if( this->m_Algorithm != NULL )
30 this->m_Algorithm->Delete( );
33 // -------------------------------------------------------------------------
34 std::string cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData::
38 cpPlugins::Interface::Image* image =
39 this->GetInput< cpPlugins::Interface::Image >( 0 );
41 return( "SecondRankDiffusionTensorToPolyData: Input data is not a valid image." );
43 itk::DataObject* itk_image = NULL;
45 cpPlugins_ImageArray_Input_Demangle( itk::SymmetricSecondRankTensor, float, 3, 3, image, itk_image, r, _RealGD );
46 else cpPlugins_ImageArray_Input_Demangle( itk::SymmetricSecondRankTensor, double, 3, 3, image, itk_image, r, _RealGD );
48 r = "SecondRankDiffusionTensorToPolyData: Input does not have a DiffusionTensor3D.";
52 // -------------------------------------------------------------------------
54 std::string cpPlugins::Plugins::SecondRankDiffusionTensorToPolyData::
55 _RealGD( itk::DataObject* image )
57 typedef cpExtensions::Algorithms::SecondRankDiffusionTensorToPolyData< I > _F;
61 if( this->m_Algorithm == NULL )
64 this->m_Algorithm = f;
67 f->SetInputData( dynamic_cast< I* >( image ) );
68 this->m_Algorithm->Update( );
71 cpPlugins::Interface::Mesh* out =
72 this->GetOutput< cpPlugins::Interface::Mesh >( 0 );
75 out->SetVTKMesh( this->m_Algorithm->GetOutput( ) );
79 return( "OtsuThresholdImageFilter: output not correctly created." );