Add bin segmenter

This commit is contained in:
Chris Cannam
2022-05-19 09:16:13 +01:00
parent d6aa3a59c2
commit 4241c0f6a4
4 changed files with 165 additions and 30 deletions

View File

@@ -80,6 +80,27 @@ public:
v_zero(m_sorted, P::m_size);
}
// Convenience function that applies a given filter to an array
// in-place. Array must have length equal to getSize(). Modifies
// both the filter and the array.
//
static void filter(MovingMedian<T> &mm, T *v) {
int n = mm.getSize();
int lag = n / 2;
mm.reset();
for (int i = 0; i < lag; ++i) {
mm.push(v[i]);
}
for (int i = lag; i < n; ++i) {
mm.push(v[i]);
v[i-lag] = mm.get();
}
for (int i = n; i < n + lag; ++i) {
mm.push(T());
v[i-lag] = mm.get();
}
}
private:
T *const m_frame;
T *const m_sorted;