medianFilter 2020Ver

Dependents:   Tourobo2022_TBCMotorDriver

MedianFilter.cpp

Committer:
YutaTogashi
Date:
2020-03-24
Revision:
1:5942768f10c1
Parent:
0:039669d0faad

File content as of revision 1:5942768f10c1:

#include "MedianFilter.h"

MedianFilter::MedianFilter() {}

void MedianFilter::sort(void *base,size_t n,size_t size,bool form) {
    if(form == 0)   qsort(base,n,size,MedianFilter::ascending_order);
    else            qsort(base,n,size,MedianFilter::descending_order);
}

int MedianFilter::getIntValue(int array[],size_t size) {
    int number = size / 2;
    if(number % 2) return array[number];
    else           return (int)(((array[number-1] + array[number]) / 2.0f));
}

float MedianFilter::getFloatValue(float array[],size_t size) {
    int number = size / 2;
    if(number % 2) return array[number];
    else           return ((array[number-1] + array[number]) / 2.0f);
}

int MedianFilter::ascending_order(const void *c1, const void *c2) {
    int tmp1 = *(int *)c1;
    int tmp2 = *(int *)c2;
    
    if( tmp1 < tmp2 )  return -1;
    if( tmp1 == tmp2 ) return  0;
    if( tmp1 > tmp2 )  return  1;
    return 0;
}

int MedianFilter::descending_order(const void *c1, const void *c2) {
    int tmp1 = *(int *)c1;
    int tmp2 = *(int *)c2;
    
    if( tmp1 < tmp2 )  return 1;
    if( tmp1 == tmp2 ) return  0;
    if( tmp1 > tmp2 )  return  -1;
    return 0;
}