中位值平均滤波算法C代码
时间: 2023-08-06 13:27:12 浏览: 51
以下是中位值平均滤波算法的 C 代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int cmpfunc(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
void median_filter(int data[], int size, int window_size, int filtered_data[]) {
int half_size = window_size / 2;
for (int i = half_size; i < size - half_size; i++) {
int window[window_size];
for (int j = 0; j < window_size; j++) {
window[j] = data[i - half_size + j];
}
qsort(window, window_size, sizeof(int), cmpfunc);
int sum = 0;
for (int j = 0; j < window_size; j++) {
sum += window[j];
}
filtered_data[i] = sum / window_size;
}
}
int main() {
int data[] = {1, 3, 5, 2, 4, 6, 8, 7, 9, 10};
int size = sizeof(data) / sizeof(int);
int window_size = 3;
int filtered_data[size - window_size + 1];
median_filter(data, size, window_size, filtered_data);
for (int i = 0; i < size - window_size + 1; i++) {
printf("%d ", filtered_data[i]);
}
return 0;
}
```
其中,函数 `median_filter` 接受四个参数:`data` 是待滤波的数据,`size` 是 `data` 数组的大小,`window_size` 是窗口大小,`filtered_data` 是存放滤波后的数据的数组。函数中使用了 `qsort` 函数进行中位数的计算。在 `main` 函数中,我们对一个简单的测试数据进行了滤波,并输出了滤波后的结果。
阅读全文