|
|
| SymAllPoleIIRFilter (const double gain=0., const std::vector< double > &poles=std::vector< double >()) |
| Constructor / Destructor / Copy. More...
|
|
| SymAllPoleIIRFilter (const SymAllPoleIIRFilter &other) |
|
virtual | ~SymAllPoleIIRFilter () |
|
SymAllPoleIIRFilter & | operator= (const SymAllPoleIIRFilter &other) |
|
|
virtual void | filter1d (const carto::VolumeRef< double > in, carto::VolumeRef< double > out, int dir=-1) const |
| Execution. More...
|
|
|
const double & | gain () const |
| Parameters. More...
|
|
const std::vector< double > & | poles () const |
|
void | setPoles (const std::vector< double > &poles) |
|
void | addPole (const double &pole) |
|
void | setGain (const double &gain) |
| Relative to Unser & al, gain = c0. More...
|
|
void | setModePreciseGain (bool precise=true) |
| If this mode is activated, provided gain should be c * prod(-poles). More...
|
|
| IIRFilterBase () |
| Constructor / Destructor / Copy. More...
|
|
| IIRFilterBase (const IIRFilterBase &other) |
|
virtual | ~IIRFilterBase () |
|
IIRFilterBase & | operator= (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 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::Boundary & | boundary () 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...
|
|
|
|
void | computeK0 () |
| Helpers. More...
|
|
void | computePreciseGain () |
|
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...
|
|
Symmetric, all-pole, infinite impulse response Filter.
Special case of Infinite Impulse Response filter: Separable filter whose transfer function is of the form H(z) = c / P(z) with the coefficients of P symmetric, i.e. p(k) = p(-k)
This implementation follows that of Unser, Aldroubi & Eden, "B-Spline Signal Processing: Part II -
Efficient Design and Applications" in IEEE Transactions on Signal Processing (1993)
To diminish rounding errors, it is possible to give the gain value c * prod( -p(k) ) instead of c, and enable the precise mode with setModePreciseGain().
- Note
- If borders are allocated, they will be used, else inside values will be mirrored in the outside. 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.
Definition at line 417 of file iirfilter.h.