1 #ifndef TIL_RECURSIVE_FILTER_SUM_H 2 #define TIL_RECURSIVE_FILTER_SUM_H 11 #include <boost/type_traits.hpp> 22 template <
class TRecursiveFilter1,
class TRecursiveFilter2 >
29 typedef typename TRecursiveFilter1::T
T;
34 const TRecursiveFilter1 & filter1,
35 const TRecursiveFilter2 & filter2)
37 m_removeOverlap =
true;
46 void apply(
const std::vector<T> &in, std::vector<T> &out)
const 49 assert(in.size() == out.size());
54 typename std::vector<T>::const_iterator iIn = in.begin();
55 typename std::vector<T>::iterator iOut = out.begin();
56 for (; iIn != in.end(); ++iIn, ++iOut)
58 *iOut = - *iIn * this->bias();
62 m_filter1.apply(in, out);
63 m_filter2.apply(in, out);
80 T bias()
const {
return (m_filter1.getMI()[0] + m_filter2.getMI()[0]) / 2.0; }
82 void removeOverlap(
bool flag) { m_removeOverlap = flag; }
89 TRecursiveFilter1 m_filter1;
90 TRecursiveFilter2 m_filter2;
Sum of two recursive filters, a forward and a backward one.
Belongs to package Box Do not include directly, include til/Box.h instead.
void apply(const std::vector< T > &in, std::vector< T > &out) const
RecursiveFilterSum(const TRecursiveFilter1 &filter1, const TRecursiveFilter2 &filter2)
General macros, definitions and functions.
TRecursiveFilter1::T T
Type of the filter.