1 // -------------------------------------------------------------------------
2 // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co)
3 // -------------------------------------------------------------------------
5 #ifndef __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__
6 #define __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__
8 // -------------------------------------------------------------------------
9 template< class _TSkeleton, class _TImage >
11 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
13 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
14 GetTemplateImage( ) const
18 // -------------------------------------------------------------------------
19 template< class _TSkeleton, class _TImage >
21 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
22 SetTemplateImage( TImageBase* image )
26 // -------------------------------------------------------------------------
27 template< class _TSkeleton, class _TImage >
29 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
31 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
36 // -------------------------------------------------------------------------
37 template< class _TSkeleton, class _TImage >
39 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
40 SetSkeleton( TSkeleton* skeleton )
44 // -------------------------------------------------------------------------
45 template< class _TSkeleton, class _TImage >
46 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
47 SkeletonToImageFilter( )
49 m_InsideValue( TPixel( 1 ) ),
50 m_OutsideValue( TPixel( 0 ) )
52 this->SetNumberOfRequiredInputs( 2 );
55 // -------------------------------------------------------------------------
56 template< class _TSkeleton, class _TImage >
57 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
58 ~SkeletonToImageFilter( )
62 // -------------------------------------------------------------------------
63 template< class _TSkeleton, class _TImage >
64 void cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
67 const TSkeleton* sk = this->GetSkeleton( );
68 const TImageBase* im = this->GetTemplateImage( );
69 TImage* out = this->GetOutput( 0 );
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( ) );
78 out->FillBuffer( this->m_OutsideValue );
81 auto mIt = sk->BeginEdgesRows( );
82 for( ; mIt != sk->EndEdgesRows( ); ++mIt )
84 auto rIt = mIt->second.begin( );
85 for( ; rIt != mIt->second.end( ); ++rIt )
87 auto eIt = rIt->second.begin( );
88 for( ; eIt != rIt->second.end( ); ++eIt )
91 for( unsigned int i = 0; i < path->GetSize( ); ++i )
92 out->SetPixel( path->GetVertex( i ), this->m_InsideValue );
101 #endif // __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__