]> Creatis software - cpPlugins.git/blob - plugins/cpExtensions/SkeletonToImageFilter.cxx
...
[cpPlugins.git] / plugins / cpExtensions / SkeletonToImageFilter.cxx
1 #include <cpExtensions/SkeletonToImageFilter.h>
2 #include <cpInstances/Image.h>
3 #include <cpInstances/Skeleton.h>
4
5 #include <cpExtensions/DataStructures/Skeleton.h>
6 #include <cpExtensions/Algorithms/SkeletonToImageFilter.h>
7
8 // -------------------------------------------------------------------------
9 cpPluginscpExtensions::SkeletonToImageFilter::
10 SkeletonToImageFilter( )
11   : Superclass( )
12 {
13   this->_ConfigureInput< cpInstances::Skeleton >( "Skeleton", true, false );
14   this->_ConfigureInput< cpInstances::Image >( "TemplateImage", true, false );
15   this->_ConfigureOutput< cpInstances::Image >( "Output" );
16   this->m_Parameters.ConfigureAsUint( "InsideValue", 1 );
17   this->m_Parameters.ConfigureAsUint( "OutsideValue", 0 );
18 }
19
20 // -------------------------------------------------------------------------
21 cpPluginscpExtensions::SkeletonToImageFilter::
22 ~SkeletonToImageFilter( )
23 {
24 }
25
26 // -------------------------------------------------------------------------
27 void cpPluginscpExtensions::SkeletonToImageFilter::
28 _GenerateData( )
29 {
30   auto o = this->GetInputData( "Skeleton" );
31   cpPlugins_Demangle_Skeleton_All_1( o, _GD0 )
32     this->_Error( "Invalid input skeleton." );
33 }
34
35 // -------------------------------------------------------------------------
36 template< class _TSkeleton >
37 void cpPluginscpExtensions::SkeletonToImageFilter::
38 _GD0( _TSkeleton* skeleton )
39 {
40   typedef itk::ImageBase< _TSkeleton::Dimension > _TImageBase;
41   typedef itk::Image< unsigned char, _TSkeleton::Dimension > _TImage;
42   typedef cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage > _TFilter;
43
44   auto image = this->GetInputData< _TImageBase >( "TemplateImage" );
45   auto filter = this->_CreateITK< _TFilter >( );
46   filter->SetTemplateImage( image );
47   filter->SetSkeleton( skeleton );
48   filter->SetInsideValue( this->m_Parameters.GetUint( "InsideValue" ) );
49   filter->SetOutsideValue( this->m_Parameters.GetUint( "OutsideValue" ) );
50   filter->Update( );
51   this->GetOutput( "Output" )->SetITK( filter->GetOutput( ) );
52 }
53
54 // eof - $RCSfile$