aimsalgo  5.1.2
Neuroimaging image processing
aims::IIRFilterBase Class Referenceabstract

Base class for separable infinite impulse response filters. More...

#include <aims/signalfilter/iirfilter.h>

Inheritance diagram for aims::IIRFilterBase:
Collaboration diagram for aims::IIRFilterBase:

Public Member Functions

 IIRFilterBase ()
 Constructor / Destructor / Copy. More...
 
 IIRFilterBase (const IIRFilterBase &other)
 
virtual ~IIRFilterBase ()
 
IIRFilterBaseoperator= (const IIRFilterBase &other)
 
template<typename T >
carto::VolumeRef< double > execute (const carto::VolumeRef< T > &in) const
 Execution. More...
 
carto::VolumeRef< double > execute (carto::VolumeRef< double > &in, bool inplace=false) const
 
virtual void filter1d (const carto::VolumeRef< double > in, carto::VolumeRef< double > out, int dir=-1) const =0
 Actual 1d filter that should be implemented by derived classes. More...
 
virtual const std::vector< bool > & directions () const
 Parameters. More...
 
virtual void setDirections (const std::vector< bool > &dir)
 
virtual void setDirections (bool dirx, bool diry, bool dirz, bool dirt)
 
virtual void setDirectionX (bool dirx)
 default: true More...
 
virtual void setDirectionY (bool diry)
 default: true More...
 
virtual void setDirectionZ (bool dirz)
 default: true More...
 
virtual void setDirectionT (bool dirt)
 default: false More...
 
virtual const FilterType::Boundaryboundary () const
 Because the filter is infinite, the signal must be extended outisde the image domain. More...
 
virtual void setBoundary (const FilterType::Boundary &boundary)
 
virtual void setVerbose (int verbose=1)
 Verbosity level. More...
 
virtual void setQuiet ()
 Set verbosity level to 0 -> Remove all possible traces. More...
 

Protected Member Functions

virtual void filter (carto::VolumeRef< double > vol) const
 Helpers. More...
 
virtual void filter1d (carto::VolumeRef< double > vol, int dir=-1, carto::VolumeRef< double > tmp=carto::VolumeRef< double >((carto::Volume< double > *) 0)) const
 redirection for in place fitlering More...
 
virtual double & at (carto::VolumeRef< double > &vector, long k, int dir) const
 Fast access : k must be in [0, size-1]. More...
 
virtual const double & at (const carto::VolumeRef< double > &vector, long k, int dir) const
 Fast access : k must be in [0, size-1]. More...
 
virtual double at (const carto::VolumeRef< double > &vector, long k, int dir, long fullsize, int binf) const
 Mirror access : k can be outside [0, size - 1]. More...
 
virtual long mirrorCoeff (long i, long size) const
 If i is outside [0, size-1], it is mirrored to fall inside. More...
 
virtual long selectCoeff (long i, long fullsize, int binf) const
 If i is outside [binf, fullsize-1], it is mirrored to fall inside. More...
 
virtual long computeK0 (double pole, double tolerance=-1.) const
 compute K0 so that pole^K0 < precision More...
 

Protected Attributes

int _verbose
 
std::vector< bool > _dir
 
FilterType::Boundary _boundary
 
FilterType::CopyType _copy
 

Detailed Description

Base class for separable infinite impulse response filters.

This class implements all shared functionalities such as recursive calls to 1D filters, axis of filtering, border strategy, verbosity. Actual IIR implementations should derive from this class and implement the filter1d() method.

See also
CausalIIRFilter, CausalAllPoleIIRFilter, CausalSinglePoleIIRFilter, AntiCausalWarperIIRFilter, SymAllPoleIIRFilter

Definition at line 57 of file iirfilter.h.

Constructor & Destructor Documentation

◆ IIRFilterBase() [1/2]

aims::IIRFilterBase::IIRFilterBase ( )

Constructor / Destructor / Copy.

◆ IIRFilterBase() [2/2]

aims::IIRFilterBase::IIRFilterBase ( const IIRFilterBase other)

◆ ~IIRFilterBase()

virtual aims::IIRFilterBase::~IIRFilterBase ( )
virtual

Member Function Documentation

◆ at() [1/3]

virtual double& aims::IIRFilterBase::at ( carto::VolumeRef< double > &  vector,
long  k,
int  dir 
) const
protectedvirtual

Fast access : k must be in [0, size-1].

◆ at() [2/3]

virtual const double& aims::IIRFilterBase::at ( const carto::VolumeRef< double > &  vector,
long  k,
int  dir 
) const
protectedvirtual

Fast access : k must be in [0, size-1].

◆ at() [3/3]

virtual double aims::IIRFilterBase::at ( const carto::VolumeRef< double > &  vector,
long  k,
int  dir,
long  fullsize,
int  binf 
) const
protectedvirtual

Mirror access : k can be outside [0, size - 1].

If borders are allocated, they will be used, else outside values will be infered according to the border strategy. However, for spline interpolation, note that border values should mirror inside values. It is the caller role to ensure that eventual borders are properly filled.

◆ boundary()

virtual const FilterType::Boundary& aims::IIRFilterBase::boundary ( ) const
virtual

Because the filter is infinite, the signal must be extended outisde the image domain.

This extension can be by mirroring inside voxels about the borders, by using the nearest inside voxels or by using null values.

◆ computeK0()

virtual long aims::IIRFilterBase::computeK0 ( double  pole,
double  tolerance = -1. 
) const
protectedvirtual

compute K0 so that pole^K0 < precision

◆ directions()

virtual const std::vector<bool>& aims::IIRFilterBase::directions ( ) const
virtual

Parameters.

Axis slong which the fitlering is performed. By default, filtering is performed along the X, Y and Z axes.

◆ execute() [1/2]

carto::VolumeRef<double> aims::IIRFilterBase::execute ( carto::VolumeRef< double > &  in,
bool  inplace = false 
) const
Note
  • if inplace : 0 copy
  • else : 1 copy (+ 1 if the result is assigned to a different volume type)

◆ execute() [2/2]

template<typename T >
carto::VolumeRef<double> aims::IIRFilterBase::execute ( const carto::VolumeRef< T > &  in) const

Execution.

Apply the filtering process to a volume. Under certain conditions, it can be done in place (the input volume will contain the result). Else an output volume will be created.

Note
1 copy (+ 1 if the result is assigned to a different volume type)

Referenced by aims::SplinePyramidBuilder::execute(), and aims::InterpolatedVolume::setVolume().

◆ filter()

virtual void aims::IIRFilterBase::filter ( carto::VolumeRef< double >  vol) const
protectedvirtual

Helpers.

Generic multidimensional filter. Calls filter1d successively in each direction.

◆ filter1d() [1/2]

virtual void aims::IIRFilterBase::filter1d ( carto::VolumeRef< double >  vol,
int  dir = -1,
carto::VolumeRef< double >  tmp = carto::VolumeRef< double >((carto::Volume< double > *) 0) 
) const
protectedvirtual

redirection for in place fitlering

◆ filter1d() [2/2]

virtual void aims::IIRFilterBase::filter1d ( const carto::VolumeRef< double >  in,
carto::VolumeRef< double >  out,
int  dir = -1 
) const
pure virtual

Actual 1d filter that should be implemented by derived classes.

Implemented in aims::SymAllPoleIIRFilter, and aims::CausalSinglePoleIIRFilter.

◆ mirrorCoeff()

virtual long aims::IIRFilterBase::mirrorCoeff ( long  i,
long  size 
) const
protectedvirtual

If i is outside [0, size-1], it is mirrored to fall inside.

◆ operator=()

IIRFilterBase& aims::IIRFilterBase::operator= ( const IIRFilterBase other)

◆ selectCoeff()

virtual long aims::IIRFilterBase::selectCoeff ( long  i,
long  fullsize,
int  binf 
) const
protectedvirtual

If i is outside [binf, fullsize-1], it is mirrored to fall inside.

◆ setBoundary()

virtual void aims::IIRFilterBase::setBoundary ( const FilterType::Boundary boundary)
virtual

◆ setDirections() [1/2]

virtual void aims::IIRFilterBase::setDirections ( bool  dirx,
bool  diry,
bool  dirz,
bool  dirt 
)
virtual

◆ setDirections() [2/2]

virtual void aims::IIRFilterBase::setDirections ( const std::vector< bool > &  dir)
virtual

◆ setDirectionT()

virtual void aims::IIRFilterBase::setDirectionT ( bool  dirt)
virtual

default: false

◆ setDirectionX()

virtual void aims::IIRFilterBase::setDirectionX ( bool  dirx)
virtual

default: true

◆ setDirectionY()

virtual void aims::IIRFilterBase::setDirectionY ( bool  diry)
virtual

default: true

◆ setDirectionZ()

virtual void aims::IIRFilterBase::setDirectionZ ( bool  dirz)
virtual

default: true

◆ setQuiet()

virtual void aims::IIRFilterBase::setQuiet ( )
virtual

Set verbosity level to 0 -> Remove all possible traces.

◆ setVerbose()

virtual void aims::IIRFilterBase::setVerbose ( int  verbose = 1)
virtual

Verbosity level.

Default value is carto::verbose that is usually set at the command level.

Referenced by aims::SplinePyramidBuilder::execute().

Member Data Documentation

◆ _boundary

FilterType::Boundary aims::IIRFilterBase::_boundary
protected

Definition at line 151 of file iirfilter.h.

◆ _copy

FilterType::CopyType aims::IIRFilterBase::_copy
protected

Definition at line 152 of file iirfilter.h.

◆ _dir

std::vector<bool> aims::IIRFilterBase::_dir
protected

Definition at line 150 of file iirfilter.h.

◆ _verbose

int aims::IIRFilterBase::_verbose
protected

Definition at line 149 of file iirfilter.h.


The documentation for this class was generated from the following file: