// ------------------------------------------------------------------------- // @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) // ------------------------------------------------------------------------- #ifndef __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__ #define __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__ // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > const typename cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: TImageBase* cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: GetTemplateImage( ) const { } // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > void cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: SetTemplateImage( TImageBase* image ) { } // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > const typename cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: TSkeleton* cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: GetSkeleton( ) const { } // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > void cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: SetSkeleton( TSkeleton* skeleton ) { } // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: SkeletonToImageFilter( ) : Superclass( ), m_InsideValue( TPixel( 1 ) ), m_OutsideValue( TPixel( 0 ) ) { this->SetNumberOfRequiredInputs( 2 ); } // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: ~SkeletonToImageFilter( ) { } // ------------------------------------------------------------------------- template< class _TSkeleton, class _TImage > void cpExtensions::Algorithms::SkeletonToImageFilter< _TSkeleton, _TImage >:: GenerateData( ) { const TSkeleton* sk = this->GetSkeleton( ); const TImageBase* im = this->GetTemplateImage( ); TImage* out = this->GetOutput( 0 ); out->SetLargestPossibleRegion( im->GetLargestPossibleRegion( ) ); out->SetRequestedRegion( im->GetRequestedRegion( ) ); out->SetBufferedRegion( im->GetBufferedRegion( ) ); out->SetSpacing( im->GetSpacing( ) ); out->SetOrigin( im->GetOrigin( ) ); out->SetDirection( im->GetDirection( ) ); out->Allocate( ); out->FillBuffer( this->m_OutsideValue ); // Fill skeleton auto mIt = sk->BeginEdgesRows( ); for( ; mIt != sk->EndEdgesRows( ); ++mIt ) { auto rIt = mIt->second.begin( ); for( ; rIt != mIt->second.end( ); ++rIt ) { auto eIt = rIt->second.begin( ); for( ; eIt != rIt->second.end( ); ++eIt ) { auto path = *eIt; for( unsigned int i = 0; i < path->GetSize( ); ++i ) out->SetPixel( path->GetVertex( i ), this->m_InsideValue ); } // rof } // rof } // rof } #endif // __cpExtensions__Algorithms__SkeletonToImageFilter__hxx__ // eof - $RCSfile$