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;