+++ /dev/null
-#ifndef __fpa__Image__Functors__SimpleNeighborhood__hxx__
-#define __fpa__Image__Functors__SimpleNeighborhood__hxx__
-
-// -------------------------------------------------------------------------
-template< unsigned int _VDim >
-typename fpa::Image::Functors::SimpleNeighborhood< _VDim >::
-TOutput fpa::Image::Functors::SimpleNeighborhood< _VDim >::
-Evaluate( const TIndex& center ) const
-{
- if( this->m_Offsets.size( ) == 0 )
- {
- if( this->m_Order == 1 )
- this->_1stCombination( );
- else
- this->_2ndCombination( );
-
- } // fi
-
- TOutput res;
- typename TImage::RegionType reg = this->m_Image->GetRequestedRegion( );
- for( int i = 0; i < this->m_Offsets.size( ); ++i )
- {
- TIndex idx = center + this->m_Offsets[ i ];
- if( reg.IsInside( idx ) && idx != center )
- res.push_back( idx );
-
- } // rof
- return( res );
-}
-
-// -------------------------------------------------------------------------
-template< unsigned int _VDim >
-fpa::Image::Functors::SimpleNeighborhood< _VDim >::
-SimpleNeighborhood( )
- : Superclass( ),
- m_Order( 1 )
-{
-}
-
-// -------------------------------------------------------------------------
-template< unsigned int _VDim >
- fpa::Image::Functors::SimpleNeighborhood< _VDim >::
-~SimpleNeighborhood( )
-{
-}
-
-// -------------------------------------------------------------------------
-template< unsigned int _VDim >
-void fpa::Image::Functors::SimpleNeighborhood< _VDim >::
-_1stCombination( ) const
-{
- for( int d = 0; d < TImage::ImageDimension; ++d )
- {
- typename TIndex::OffsetType off;
- off.Fill( 0 );
- for( int i = -1; i <= 1; i += 2 )
- {
- off[ d ] = i;
- this->m_Offsets.push_back( off );
-
- } // rof
-
- } // rof
-}
-
-// -------------------------------------------------------------------------
-template< unsigned int _VDim >
-void fpa::Image::Functors::SimpleNeighborhood< _VDim >::
-_2ndCombination( ) const
-{
- std::vector< std::vector< std::vector< int > > > M;
- M.push_back( std::vector< std::vector< int > >( ) );
-
- std::vector< int > base;
- base.push_back( -1 );
- base.push_back( 0 );
- base.push_back( 1 );
- int dim = TImage::ImageDimension;
-
- M.push_back( std::vector< std::vector< int > >( ) );
- for( int j = 0; j < base.size( ); ++j )
- M[ 1 ].push_back( std::vector< int >( 1, base[ j ] ) );
-
- for( int i = 2; i <= dim; ++i )
- {
- M.push_back( std::vector< std::vector< int > >( ) );
- for( int j = 0; j < base.size( ); ++j )
- {
- for( int k = 0; k < M[ i - 1 ].size( ); ++k )
- {
- M[ i ].push_back( std::vector< int >( 1, base[ j ] ) );
- for( int l = 0; l < M[ i - 1 ][ k ].size( ); ++l )
- M[ i ].back( ).push_back( M[ i - 1 ][ k ][ l ] );
-
- } // rof
-
- } // rof
-
- } // rof
-
- for( int i = 0; i < M[ dim ].size( ); ++i )
- {
- TOffset off;
- for( int j = 0; j < M[ dim ][ i ].size( ); ++j )
- off[ j ] = M[ dim ][ i ][ j ];
- this->m_Offsets.push_back( off );
-
- } // rof
-}
-
-#endif // __fpa__Image__Functors__SimpleNeighborhood__hxx__
-
-// eof - $RCSfile$