16 #ifndef MEDIAN_FILTER_H 17 #define MEDIAN_FILTER_H 51 std::cerr <<
"WARNING: MedianFilter::push: attempt to push NaN" << std::endl;
70 int ix = int((
m_size * percentile) / 100.f);
81 static std::vector<T>
filter(
int size,
const std::vector<T> &in) {
84 for (
int i = 0; i < int(in.size()); ++i) {
87 if (i >= size/2) out.push_back(median);
89 while (out.size() < in.size()) {
91 out.push_back(f.
get());
106 T *point = std::lower_bound(m_sorted, m_sortend, value);
107 const int n = m_sortend - point;
108 for (
int i = n; i > 0; --i) point[i] = point[i-1];
115 T *point = std::lower_bound(m_sorted, m_sortend + 1, value);
116 if (*point != value) {
117 std::cerr <<
"WARNING: MedianFilter::drop: *point is " << *point
118 <<
", expected " << value << std::endl;
120 const int n = m_sortend - point;
121 for (
int i = 0; i < n; ++i) point[i] = point[i+1];