medianFilter 2020Ver

Dependents:   Tourobo2022_TBCMotorDriver

Committer:
YutaTogashi
Date:
Tue Mar 24 15:40:42 2020 +0000
Revision:
1:5942768f10c1
Parent:
0:039669d0faad
20200325 Add_readme

Who changed what in which revision?

UserRevisionLine numberNew contents of line
YutaTogashi 0:039669d0faad 1 #include "MedianFilter.h"
YutaTogashi 0:039669d0faad 2
YutaTogashi 0:039669d0faad 3 MedianFilter::MedianFilter() {}
YutaTogashi 0:039669d0faad 4
YutaTogashi 0:039669d0faad 5 void MedianFilter::sort(void *base,size_t n,size_t size,bool form) {
YutaTogashi 0:039669d0faad 6 if(form == 0) qsort(base,n,size,MedianFilter::ascending_order);
YutaTogashi 0:039669d0faad 7 else qsort(base,n,size,MedianFilter::descending_order);
YutaTogashi 0:039669d0faad 8 }
YutaTogashi 0:039669d0faad 9
YutaTogashi 0:039669d0faad 10 int MedianFilter::getIntValue(int array[],size_t size) {
YutaTogashi 0:039669d0faad 11 int number = size / 2;
YutaTogashi 0:039669d0faad 12 if(number % 2) return array[number];
YutaTogashi 0:039669d0faad 13 else return (int)(((array[number-1] + array[number]) / 2.0f));
YutaTogashi 0:039669d0faad 14 }
YutaTogashi 0:039669d0faad 15
YutaTogashi 0:039669d0faad 16 float MedianFilter::getFloatValue(float array[],size_t size) {
YutaTogashi 0:039669d0faad 17 int number = size / 2;
YutaTogashi 0:039669d0faad 18 if(number % 2) return array[number];
YutaTogashi 0:039669d0faad 19 else return ((array[number-1] + array[number]) / 2.0f);
YutaTogashi 0:039669d0faad 20 }
YutaTogashi 0:039669d0faad 21
YutaTogashi 0:039669d0faad 22 int MedianFilter::ascending_order(const void *c1, const void *c2) {
YutaTogashi 0:039669d0faad 23 int tmp1 = *(int *)c1;
YutaTogashi 0:039669d0faad 24 int tmp2 = *(int *)c2;
YutaTogashi 0:039669d0faad 25
YutaTogashi 0:039669d0faad 26 if( tmp1 < tmp2 ) return -1;
YutaTogashi 0:039669d0faad 27 if( tmp1 == tmp2 ) return 0;
YutaTogashi 0:039669d0faad 28 if( tmp1 > tmp2 ) return 1;
YutaTogashi 0:039669d0faad 29 return 0;
YutaTogashi 0:039669d0faad 30 }
YutaTogashi 0:039669d0faad 31
YutaTogashi 0:039669d0faad 32 int MedianFilter::descending_order(const void *c1, const void *c2) {
YutaTogashi 0:039669d0faad 33 int tmp1 = *(int *)c1;
YutaTogashi 0:039669d0faad 34 int tmp2 = *(int *)c2;
YutaTogashi 0:039669d0faad 35
YutaTogashi 0:039669d0faad 36 if( tmp1 < tmp2 ) return 1;
YutaTogashi 0:039669d0faad 37 if( tmp1 == tmp2 ) return 0;
YutaTogashi 0:039669d0faad 38 if( tmp1 > tmp2 ) return -1;
YutaTogashi 0:039669d0faad 39 return 0;
YutaTogashi 0:039669d0faad 40 }