1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
6 #ifndef __fpa__Image__Filter__hxx__
7 #define __fpa__Image__Filter__hxx__
9 // -------------------------------------------------------------------------
10 template< class _TInputImage, class _TOutputImage >
11 fpa::Image::Filter< _TInputImage, _TOutputImage >::
17 // -------------------------------------------------------------------------
18 template< class _TInputImage, class _TOutputImage >
19 fpa::Image::Filter< _TInputImage, _TOutputImage >::
24 // -------------------------------------------------------------------------
25 template< class _TInputImage, class _TOutputImage >
26 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
27 GenerateInputRequestedRegion( )
29 this->Superclass::GenerateInputRequestedRegion( );
30 if( this->GetInput( ) )
32 TInputImage* input = const_cast< TInputImage* >( this->GetInput( ) );
33 input->SetRequestedRegionToLargestPossibleRegion( );
38 // -------------------------------------------------------------------------
39 template< class _TInputImage, class _TOutputImage >
40 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
41 EnlargeOutputRequestedRegion( itk::DataObject* output )
43 this->Superclass::EnlargeOutputRequestedRegion( output );
44 output->SetRequestedRegionToLargestPossibleRegion( );
47 // -------------------------------------------------------------------------
48 template< class _TInputImage, class _TOutputImage >
49 typename fpa::Image::Filter< _TInputImage, _TOutputImage >::
50 TInputValue fpa::Image::Filter< _TInputImage, _TOutputImage >::
51 _GetInputValue( const TVertex& vertex ) const
53 return( this->GetInput( )->GetPixel( vertex ) );
56 // -------------------------------------------------------------------------
57 template< class _TInputImage, class _TOutputImage >
58 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
59 _SetOutputValue( const TVertex& vertex, const TOutputValue& value )
61 this->GetOutput( )->SetPixel( vertex, value );
64 // -------------------------------------------------------------------------
65 template< class _TInputImage, class _TOutputImage >
66 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
67 _ConfigureOutputs( const TOutputValue& init_value )
69 const TInputImage* input = this->GetInput( );
70 TOutputImage* output = this->GetOutput( );
71 output->SetBufferedRegion( input->GetRequestedRegion( ) );
73 output->FillBuffer( init_value );
76 // -------------------------------------------------------------------------
77 template< class _TInputImage, class _TOutputImage >
78 typename fpa::Image::Filter< _TInputImage, _TOutputImage >::
79 TVertices fpa::Image::Filter< _TInputImage, _TOutputImage >::
80 _GetNeighbors( const TVertex& vertex ) const
82 typename TInputImage::RegionType region =
83 this->GetInput( )->GetRequestedRegion( );
86 for( unsigned int d = 0; d < TInputImage::ImageDimension; ++d )
89 for( int a = -1; a <= 1; a += 2 )
91 n[ d ] = vertex[ d ] + a;
92 if( region.IsInside( n ) )
93 vertices.push_back( n );
101 #endif // __fpa__Image__Filter__hxx__