Base class for separable infinite impulse response filters.
More...
#include <aims/signalfilter/iirfilter.h>
|
|
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...
|
|
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.
◆ IIRFilterBase() [1/2]
aims::IIRFilterBase::IIRFilterBase |
( |
| ) |
|
Constructor / Destructor / Copy.
◆ IIRFilterBase() [2/2]
aims::IIRFilterBase::IIRFilterBase |
( |
const IIRFilterBase & |
other | ) |
|
◆ ~IIRFilterBase()
virtual aims::IIRFilterBase::~IIRFilterBase |
( |
| ) |
|
|
virtual |
◆ 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()
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]
- Note
- if inplace : 0 copy
- else : 1 copy (+ 1 if the result is assigned to a different volume type)
◆ execute() [2/2]
◆ 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]
redirection for in place fitlering
◆ filter1d() [2/2]
◆ 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=()
◆ 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()
◆ 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 |
◆ setDirectionX()
virtual void aims::IIRFilterBase::setDirectionX |
( |
bool |
dirx | ) |
|
|
virtual |
◆ setDirectionY()
virtual void aims::IIRFilterBase::setDirectionY |
( |
bool |
diry | ) |
|
|
virtual |
◆ setDirectionZ()
virtual void aims::IIRFilterBase::setDirectionZ |
( |
bool |
dirz | ) |
|
|
virtual |
◆ 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 |
◆ _boundary
◆ _copy
◆ _dir
std::vector<bool> aims::IIRFilterBase::_dir |
|
protected |
◆ _verbose
int aims::IIRFilterBase::_verbose |
|
protected |
The documentation for this class was generated from the following file: