spacial median filter rejecting abnormal signals.
Dependents: medianFilterTest WIPV
MEDIAN_FILTER.cpp@0:4487376ead1c, 2016-04-22 (annotated)
- Committer:
- adam_z
- Date:
- Fri Apr 22 13:40:21 2016 +0000
- Revision:
- 0:4487376ead1c
- Child:
- 1:a46f56a22432
moving median filter specified with window size.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
adam_z | 0:4487376ead1c | 1 | #include "mbed.h" |
adam_z | 0:4487376ead1c | 2 | #include <algorithm> |
adam_z | 0:4487376ead1c | 3 | #include "MEDIAN_FILTER.h" |
adam_z | 0:4487376ead1c | 4 | |
adam_z | 0:4487376ead1c | 5 | |
adam_z | 0:4487376ead1c | 6 | medianFilter::medianFilter(int windowSize):windowSize_(windowSize) |
adam_z | 0:4487376ead1c | 7 | { |
adam_z | 0:4487376ead1c | 8 | |
adam_z | 0:4487376ead1c | 9 | } |
adam_z | 0:4487376ead1c | 10 | float medianFilter::medianValue(float data) |
adam_z | 0:4487376ead1c | 11 | { |
adam_z | 0:4487376ead1c | 12 | int i; |
adam_z | 0:4487376ead1c | 13 | for(i=0; i<windowSize_-1; i++) { |
adam_z | 0:4487376ead1c | 14 | array[i] = array[i+1]; |
adam_z | 0:4487376ead1c | 15 | } |
adam_z | 0:4487376ead1c | 16 | array[windowSize_-1] = data; |
adam_z | 0:4487376ead1c | 17 | |
adam_z | 0:4487376ead1c | 18 | int j=0; |
adam_z | 0:4487376ead1c | 19 | float x[windowSize_]; |
adam_z | 0:4487376ead1c | 20 | for(j=0;j<windowSize_;j++) x[j] = array[j]; |
adam_z | 0:4487376ead1c | 21 | sort(x, x + windowSize_ - 1); |
adam_z | 0:4487376ead1c | 22 | |
adam_z | 0:4487376ead1c | 23 | return(x[windowSize_/2]); // return median value |
adam_z | 0:4487376ead1c | 24 | |
adam_z | 0:4487376ead1c | 25 | } |