Mercurial > hg > qm-dsp
diff maths/MedianFilter.h @ 167:a82362d50144
Median filter standalone method, and tests
author | Chris Cannam |
---|---|
date | Mon, 07 Apr 2014 14:04:39 +0100 |
parents | ec9f5b9801bd |
children | 2ca24037ae22 |
line wrap: on
line diff
--- a/maths/MedianFilter.h Mon Apr 07 13:43:48 2014 +0100 +++ b/maths/MedianFilter.h Mon Apr 07 14:04:39 2014 +0100 @@ -20,6 +20,7 @@ #include <cassert> #include <cmath> #include <iostream> +#include <vector> template <typename T> class MedianFilter @@ -70,6 +71,21 @@ for (int i = 0; i < m_size; ++i) m_sorted[i] = 0; } + static std::vector<T> filter(int size, const std::vector<T> &in) { + std::vector<T> out; + MedianFilter<T> f(size); + for (int i = 0; i < int(in.size()); ++i) { + f.push(in[i]); + T median = f.get(); + if (i >= size/2) out.push_back(median); + } + while (out.size() < in.size()) { + f.push(T()); + out.push_back(f.get()); + } + return out; + } + private: const int m_size; T *const m_frame;