]> Creatis software - FrontAlgorithms.git/blob - lib/fpa/Image/Filter.hxx
...
[FrontAlgorithms.git] / lib / fpa / Image / Filter.hxx
1 // =========================================================================
2 // @author Leonardo Florez Valencia
3 // @email florez-l@javeriana.edu.co
4 // =========================================================================
5
6 #ifndef __fpa__Image__Filter__hxx__
7 #define __fpa__Image__Filter__hxx__
8
9 // -------------------------------------------------------------------------
10 template< class _TInputImage, class _TOutputImage >
11 fpa::Image::Filter< _TInputImage, _TOutputImage >::
12 Filter( )
13   : Superclass( )
14 {
15 }
16
17 // -------------------------------------------------------------------------
18 template< class _TInputImage, class _TOutputImage >
19 fpa::Image::Filter< _TInputImage, _TOutputImage >::
20 ~Filter( )
21 {
22 }
23
24 // -------------------------------------------------------------------------
25 template< class _TInputImage, class _TOutputImage >
26 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
27 GenerateInputRequestedRegion( )
28 {
29   this->Superclass::GenerateInputRequestedRegion( );
30   if( this->GetInput( ) )
31   {
32     TInputImage* input = const_cast< TInputImage* >( this->GetInput( ) );
33     input->SetRequestedRegionToLargestPossibleRegion( );
34
35   } // fi
36 }
37
38 // -------------------------------------------------------------------------
39 template< class _TInputImage, class _TOutputImage >
40 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
41 EnlargeOutputRequestedRegion( itk::DataObject* output )
42 {
43   this->Superclass::EnlargeOutputRequestedRegion( output );
44   output->SetRequestedRegionToLargestPossibleRegion( );
45 }
46
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
52 {
53   return( this->GetInput( )->GetPixel( vertex ) );
54 }
55
56 // -------------------------------------------------------------------------
57 template< class _TInputImage, class _TOutputImage >
58 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
59 _SetOutputValue( const TVertex& vertex, const TOutputValue& value )
60 {
61   this->GetOutput( )->SetPixel( vertex, value );
62 }
63
64 // -------------------------------------------------------------------------
65 template< class _TInputImage, class _TOutputImage >
66 void fpa::Image::Filter< _TInputImage, _TOutputImage >::
67 _ConfigureOutputs( const TOutputValue& init_value )
68 {
69   const TInputImage* input = this->GetInput( );
70   TOutputImage* output = this->GetOutput( );
71   output->SetBufferedRegion( input->GetRequestedRegion( ) );
72   output->Allocate( );
73   output->FillBuffer( init_value );
74 }
75
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
81 {
82   typename TInputImage::RegionType region =
83     this->GetInput( )->GetRequestedRegion( );
84
85   TVertices vertices;
86   for( unsigned int d = 0; d < TInputImage::ImageDimension; ++d )
87   {
88     TVertex n = vertex;
89     for( int a = -1; a <= 1; a += 2 )
90     {
91       n[ d ] = vertex[ d ] + a;
92       if( region.IsInside( n ) )
93         vertices.push_back( n );
94
95     } // rof
96
97   } // rof
98   return( vertices );
99 }
100
101 #endif // __fpa__Image__Filter__hxx__
102
103 // eof - $RCSfile$