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
17 dynamic_cast< const TImageBase* >(
18 this->itk::ProcessObject::GetInput( 0 )
23 // -------------------------------------------------------------------------
24 template< class _TSkeleton, class _TImage >
26 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
27 SetTemplateImage( const TImageBase* image )
29 this->itk::ProcessObject::SetNthInput(
30 0, const_cast< TImageBase* >( image )
34 // -------------------------------------------------------------------------
35 template< class _TSkeleton, class _TImage >
37 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
39 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
43 dynamic_cast< const TSkeleton* >(
44 this->itk::ProcessObject::GetInput( 1 )
49 // -------------------------------------------------------------------------
50 template< class _TSkeleton, class _TImage >
52 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
53 SetSkeleton( const TSkeleton* skeleton )
55 this->itk::ProcessObject::SetNthInput(
56 1, const_cast< TSkeleton* >( skeleton )
60 // -------------------------------------------------------------------------
61 template< class _TSkeleton, class _TImage >
62 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
63 SkeletonToImageFilter( )
65 m_InsideValue( TPixel( 1 ) ),
66 m_OutsideValue( TPixel( 0 ) )
68 this->SetNumberOfRequiredInputs( 2 );
71 // -------------------------------------------------------------------------
72 template< class _TSkeleton, class _TImage >
73 cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
74 ~SkeletonToImageFilter( )
78 // -------------------------------------------------------------------------
79 template< class _TSkeleton, class _TImage >
80 void cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >::
83 const TSkeleton* sk = this->GetSkeleton( );
84 const TImageBase* im = this->GetTemplateImage( );
85 TImage* out = this->GetOutput( 0 );
87 out->SetLargestPossibleRegion( im->GetLargestPossibleRegion( ) );
88 out->SetRequestedRegion( im->GetRequestedRegion( ) );
89 out->SetBufferedRegion( im->GetBufferedRegion( ) );
90 out->SetSpacing( im->GetSpacing( ) );
91 out->SetOrigin( im->GetOrigin( ) );
92 out->SetDirection( im->GetDirection( ) );
94 out->FillBuffer( this->m_OutsideValue );
97 auto mIt = sk->BeginEdgesRows( );
98 for( ; mIt != sk->EndEdgesRows( ); ++mIt )
100 auto rIt = mIt->second.begin( );
101 for( ; rIt != mIt->second.end( ); ++rIt )
103 auto eIt = rIt->second.begin( );
104 for( ; eIt != rIt->second.end( ); ++eIt )
107 for( unsigned int i = 0; i < path->GetSize( ); ++i )
108 out->SetPixel( path->GetVertex( i ), this->m_InsideValue );
117 #endif // __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__