// ========================================================================= // @author Leonardo Florez Valencia // @email florez-l@javeriana.edu.co // ========================================================================= #ifndef __fpa__Image__Filter__hxx__ #define __fpa__Image__Filter__hxx__ // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > fpa::Image::Filter< _TInputImage, _TOutputImage >:: Filter( ) : Superclass( ) { } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > fpa::Image::Filter< _TInputImage, _TOutputImage >:: ~Filter( ) { } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > void fpa::Image::Filter< _TInputImage, _TOutputImage >:: GenerateInputRequestedRegion( ) { this->Superclass::GenerateInputRequestedRegion( ); if( this->GetInput( ) ) { TInputImage* input = const_cast< TInputImage* >( this->GetInput( ) ); input->SetRequestedRegionToLargestPossibleRegion( ); } // fi } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > void fpa::Image::Filter< _TInputImage, _TOutputImage >:: EnlargeOutputRequestedRegion( itk::DataObject* output ) { this->Superclass::EnlargeOutputRequestedRegion( output ); output->SetRequestedRegionToLargestPossibleRegion( ); } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > typename fpa::Image::Filter< _TInputImage, _TOutputImage >:: TInputValue fpa::Image::Filter< _TInputImage, _TOutputImage >:: _GetInputValue( const TVertex& vertex ) const { return( this->GetInput( )->GetPixel( vertex ) ); } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > void fpa::Image::Filter< _TInputImage, _TOutputImage >:: _SetOutputValue( const TVertex& vertex, const TOutputValue& value ) { this->GetOutput( )->SetPixel( vertex, value ); } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > void fpa::Image::Filter< _TInputImage, _TOutputImage >:: _ConfigureOutputs( const TOutputValue& init_value ) { const TInputImage* input = this->GetInput( ); TOutputImage* output = this->GetOutput( ); output->SetBufferedRegion( input->GetRequestedRegion( ) ); output->Allocate( ); output->FillBuffer( init_value ); } // ------------------------------------------------------------------------- template< class _TInputImage, class _TOutputImage > typename fpa::Image::Filter< _TInputImage, _TOutputImage >:: TVertices fpa::Image::Filter< _TInputImage, _TOutputImage >:: _GetNeighbors( const TVertex& vertex ) const { typename TInputImage::RegionType region = this->GetInput( )->GetRequestedRegion( ); TVertices vertices; for( unsigned int d = 0; d < TInputImage::ImageDimension; ++d ) { TVertex n = vertex; for( int a = -1; a <= 1; a += 2 ) { n[ d ] = vertex[ d ] + a; if( region.IsInside( n ) ) vertices.push_back( n ); } // rof } // rof return( vertices ); } #endif // __fpa__Image__Filter__hxx__ // eof - $RCSfile$