vspline 1.1.0
Generic C++11 Code for Uniform B-Splines
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize > Struct Template Reference

class to provide b-spline prefiltering, using 'iir_filter' above. The actual filter object has to interface with the data handling routine ('present', see filter.h). So this class functions as an adapter, combining the code needed to set up adequate buffers and creation of the actual IIR filter itself. The interface to the data handling routine is provided by inheriting from class buffer_handling More...

#include <prefilter.h>

Inheritance diagram for vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >:
vspline::buffer_handling< _vtype, _math_ele_type, vspline::vector_traits< _math_ele_type >::size > vspline::iir_filter< _vtype< _math_ele_type, vspline::vector_traits< _math_ele_type >::size > > vspline::iir_filter_specs

Public Types

typedef _math_ele_type math_ele_type
 
typedef buffer_handling< _vtype, _math_ele_type, _vsize > buffer_handling_type
 
using allocator_t = typename vspline::allocator_traits< vtype > ::type
 
typedef _vtype< _math_ele_type, _vsize > simdized_math_type
 
typedef vspline::iir_filter< simdized_math_typefilter_type
 
typedef iir_filter_specs arg_type
 

Public Member Functions

 bspl_prefilter (const iir_filter_specs &specs, size_t size)
 
void operator() ()
 
void solve (const in_buffer_type &input, out_buffer_type &output)
 solve() takes two buffers, one to the input data and one to the output space. The containers must have the same size. It's safe to use solve() in-place. More...
 
void solve (out_buffer_type &data)
 for in-place operation we use the same filter routine. More...
 
- Public Member Functions inherited from vspline::buffer_handling< _vtype, _math_ele_type, vspline::vector_traits< _math_ele_type >::size >
void get (const tractor &src, std::ptrdiff_t offset=0, int ni=vsize) const
 fetch data from 'source' into the buffer 'in_window' More...
 
void put (const tractor &trg, std::ptrdiff_t offset=0, int ni=vsize) const
 deposit result data from 'out_window' into target memory More...
 
- Public Member Functions inherited from vspline::iir_filter< _vtype< _math_ele_type, vspline::vector_traits< _math_ele_type >::size > >
int get_support_width () const
 calling code may have to set up buffers with additional space around the actual data to allow filtering code to 'run up' to the data, shedding margin effects in the process. For an IIR filter, this is theoretically infinite , but since we usually work to a specified precision, we can pass 'horizon' - horizon[0] containing the largest of the horizon values. More...
 
void solve (const in_buffer_type &input, out_buffer_type &output)
 solve() takes two buffers, one to the input data and one to the output space. The containers must have the same size. It's safe to use solve() in-place. More...
 
void solve (out_buffer_type &data)
 for in-place operation we use the same filter routine. More...
 
 iir_filter (const iir_filter_specs &specs)
 The last bit of work left is the constructor. This simply passes the specs to the base class constructor, as iir_filter inherits from the specs type. More...
 
- Public Member Functions inherited from vspline::iir_filter_specs
 iir_filter_specs (vspline::bc_code _bc, int _npoles, const xlf_type *_pole, xlf_type _tolerance, xlf_type _boost=xlf_type(1))
 

Static Public Member Functions

template<typename in_type , typename out_type = in_type, typename math_type = out_type>
static vspline::iir_filter< in_type, out_type, math_type > get_raw_filter (const iir_filter_specs &specs)
 

Public Attributes

vigra::MultiArray< 1, vtype, allocator_tbuffer
 
- Public Attributes inherited from vspline::iir_filter_specs
vspline::bc_code bc
 
int npoles
 
const xlf_typepole
 
xlf_type tolerance
 
xlf_type boost
 

Additional Inherited Members

- Static Public Attributes inherited from vspline::iir_filter< _vtype< _math_ele_type, vspline::vector_traits< _math_ele_type >::size > >
static const bool is_single_pass
 
- Protected Types inherited from vspline::buffer_handling< _vtype, _math_ele_type, vspline::vector_traits< _math_ele_type >::size >
enum  
 
typedef _math_ele_type dtype
 
typedef _vtype< dtype, vsizevtype
 
- Protected Member Functions inherited from vspline::buffer_handling< _vtype, _math_ele_type, vspline::vector_traits< _math_ele_type >::size >
void init (vigra::MultiArrayView< 1, vtype > &_in_window, vigra::MultiArrayView< 1, vtype > &_out_window)
 
- Protected Attributes inherited from vspline::buffer_handling< _vtype, _math_ele_type, vspline::vector_traits< _math_ele_type >::size >
vigra::MultiArrayView< 1, vtypein_window
 
vigra::MultiArrayView< 1, vtypeout_window
 
- Static Protected Attributes inherited from vspline::buffer_handling< _vtype, _math_ele_type, vspline::vector_traits< _math_ele_type >::size >
static const std::ptrdiff_t bf_stride
 

Detailed Description

template<template< typename, size_t > class _vtype, typename _math_ele_type, size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
struct vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >

class to provide b-spline prefiltering, using 'iir_filter' above. The actual filter object has to interface with the data handling routine ('present', see filter.h). So this class functions as an adapter, combining the code needed to set up adequate buffers and creation of the actual IIR filter itself. The interface to the data handling routine is provided by inheriting from class buffer_handling

Definition at line 911 of file prefilter.h.

Member Typedef Documentation

◆ allocator_t

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
using vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::allocator_t = typename vspline::allocator_traits < vtype > :: type

Definition at line 929 of file prefilter.h.

◆ arg_type

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
typedef iir_filter_specs vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::arg_type

Definition at line 944 of file prefilter.h.

◆ buffer_handling_type

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
typedef buffer_handling< _vtype , _math_ele_type , _vsize > vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::buffer_handling_type

Definition at line 921 of file prefilter.h.

◆ filter_type

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
typedef vspline::iir_filter< simdized_math_type > vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::filter_type

Definition at line 938 of file prefilter.h.

◆ math_ele_type

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
typedef _math_ele_type vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::math_ele_type

Definition at line 917 of file prefilter.h.

◆ simdized_math_type

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
typedef _vtype< _math_ele_type , _vsize > vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::simdized_math_type

Definition at line 937 of file prefilter.h.

Constructor & Destructor Documentation

◆ bspl_prefilter()

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::bspl_prefilter ( const iir_filter_specs specs,
size_t  size 
)
inline

Definition at line 951 of file prefilter.h.

Member Function Documentation

◆ get_raw_filter()

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
template<typename in_type , typename out_type = in_type, typename math_type = out_type>
static vspline::iir_filter< in_type, out_type, math_type > vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::get_raw_filter ( const iir_filter_specs specs)
inlinestatic

Definition at line 978 of file prefilter.h.

◆ operator()()

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
void vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::operator() ( )
inline

Definition at line 964 of file prefilter.h.

◆ solve() [1/2]

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
void vspline::iir_filter< in_type, out_type, _math_type >::solve ( const in_buffer_type &  input,
out_buffer_type &  output 
)
inline

solve() takes two buffers, one to the input data and one to the output space. The containers must have the same size. It's safe to use solve() in-place.

Definition at line 259 of file prefilter.h.

◆ solve() [2/2]

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
void vspline::iir_filter< in_type, out_type, _math_type >::solve ( out_buffer_type &  data)
inline

for in-place operation we use the same filter routine.

Definition at line 267 of file prefilter.h.

Member Data Documentation

◆ buffer

template<template< typename, size_t > class _vtype, typename _math_ele_type , size_t _vsize = vspline::vector_traits<_math_ele_type>::size>
vigra::MultiArray< 1 , vtype , allocator_t > vspline::bspl_prefilter< _vtype, _math_ele_type, _vsize >::buffer

Definition at line 932 of file prefilter.h.


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