]> Creatis software - cpPlugins.git/blob - lib/cpExtensions/Algorithms/SkeletonToImageFilter.hxx
237fa79ab89560b7fe64aee94e86bcc095ea16f8
[cpPlugins.git] / lib / cpExtensions / Algorithms / SkeletonToImageFilter.hxx
1 // -------------------------------------------------------------------------
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // -------------------------------------------------------------------------
4
5 #ifndef __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__
6 #define __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__
7
8 // -------------------------------------------------------------------------
9 template< class _TSkeleton, class _TImage >
10 const typename
11 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
12 TImageBase*
13 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
14 GetTemplateImage( ) const
15 {
16 }
17
18 // -------------------------------------------------------------------------
19 template< class _TSkeleton, class _TImage >
20 void 
21 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
22 SetTemplateImage( TImageBase* image )
23 {
24 }
25
26 // -------------------------------------------------------------------------
27 template< class _TSkeleton, class _TImage >
28 const typename
29 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
30 TSkeleton*
31 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
32 GetSkeleton( ) const
33 {
34 }
35
36 // -------------------------------------------------------------------------
37 template< class _TSkeleton, class _TImage >
38 void
39 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
40 SetSkeleton( TSkeleton* skeleton )
41 {
42 }
43
44 // -------------------------------------------------------------------------
45 template< class _TSkeleton, class _TImage >
46 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
47 SkeletonToImageFilter( )
48   : Superclass( ),
49     m_InsideValue( TPixel( 1 ) ),
50     m_OutsideValue( TPixel( 0 ) )
51 {
52   this->SetNumberOfRequiredInputs( 2 );
53 }
54
55 // -------------------------------------------------------------------------
56 template< class _TSkeleton, class _TImage >
57 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
58 ~SkeletonToImageFilter( )
59 {
60 }
61
62 // -------------------------------------------------------------------------
63 template< class _TSkeleton, class _TImage >
64 void cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
65 GenerateData( )
66 {
67   const TSkeleton* sk = this->GetSkeleton( );
68   const TImageBase* im = this->GetTemplateImage( );
69   TImage* out = this->GetOutput( 0 );
70
71   out->SetLargestPossibleRegion( im->GetLargestPossibleRegion( ) );
72   out->SetRequestedRegion( im->GetRequestedRegion( ) );
73   out->SetBufferedRegion( im->GetBufferedRegion( ) );
74   out->SetSpacing( im->GetSpacing( ) );
75   out->SetOrigin( im->GetOrigin( ) );
76   out->SetDirection( im->GetDirection( ) );
77   out->Allocate( );
78   out->FillBuffer( this->m_OutsideValue );
79
80   // Fill skeleton
81   auto mIt = sk->BeginEdgesRows( );
82   for( ; mIt != sk->EndEdgesRows( ); ++mIt )
83   {
84     auto rIt = mIt->second.begin( );
85     for( ; rIt != mIt->second.end( ); ++rIt )
86     {
87       auto eIt = rIt->second.begin( );
88       for( ; eIt != rIt->second.end( ); ++eIt )
89       {
90         auto path = *eIt;
91         for( unsigned int i = 0; i < path->GetSize( ); ++i )
92           out->SetPixel( path->GetVertex( i ), this->m_InsideValue );
93
94       } // rof
95
96     } // rof
97
98   } // rof
99 }
100
101 #endif // __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__
102
103 // eof - $RCSfile$