中值滤波,就是先排序,然后找到中位值,下边是c语言的实现,供参考
// 交换两个数的值
void swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
//实现中值滤波
int mid_filt(int data[], int size)
{
int temp[size];
// 复制数组
for (int i = 0; i < size; i++)
temp[i] = data[i];
// 冒泡排序
for (int i = 0; i < size – 1; i++)
for (int j = 0; j < size – 1 – i; j++)
if (temp[j] > temp[j + 1])
swap(&temp[j], &temp[j + 1]);
//基数返回中位数
if (size % 2 == 1)
return temp[size / 2];
//偶数返回中间两个中的平均值
else
return (temp[size / 2] + temp[(size / 2) – 1]) / 2;
}