aimsalgo 6.0.0
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.
 
 IIRFilterBase (const IIRFilterBase &other)
 
virtual ~IIRFilterBase ()
 
IIRFilterBaseoperator= (const IIRFilterBase &other)
 
template<typename T>
carto::VolumeRef< double > execute (const carto::VolumeRef< T > &in) const
 Execution.
 
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.
 
virtual const std::vector< bool > & directions () const
 Parameters.
 
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
 
virtual void setDirectionY (bool diry)
 default: true
 
virtual void setDirectionZ (bool dirz)
 default: true
 
virtual void setDirectionT (bool dirt)
 default: false
 
virtual const FilterType::Boundaryboundary () const
 Because the filter is infinite, the signal must be extended outisde the image domain.
 
virtual void setBoundary (const FilterType::Boundary &boundary)
 
virtual void setVerbose (int verbose=1)
 Verbosity level.
 
virtual void setQuiet ()
 Set verbosity level to 0 -> Remove all possible traces.
 

Protected Member Functions

virtual void filter (carto::VolumeRef< double > vol) const
 Helpers.
 
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
 
virtual double & at (carto::VolumeRef< double > &vector, long k, int dir) const
 Fast access : k must be in [0, size-1].
 
virtual const double & at (const carto::VolumeRef< double > &vector, long k, int dir) const
 Fast access : k must be in [0, size-1].
 
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].
 
virtual long mirrorCoeff (long i, long size) const
 If i is outside [0, size-1], it is mirrored to fall inside.
 
virtual long selectCoeff (long i, long fullsize, int binf) const
 If i is outside [binf, fullsize-1], it is mirrored to fall inside.
 
virtual long computeK0 (double pole, double tolerance=-1.) const
 compute K0 so that pole^K0 < precision
 

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.

Referenced by IIRFilterBase(), and operator=().

◆ IIRFilterBase() [2/2]

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

References IIRFilterBase().

◆ ~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.

Referenced by setBoundary().

◆ 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::CausalSinglePoleIIRFilter, and aims::SymAllPoleIIRFilter.

◆ 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)

References IIRFilterBase().

◆ 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

References boundary().

◆ 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: