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