用c语言写一个均值滤波函数,并详细注释
时间: 2023-05-20 21:05:38 浏览: 411
C语言写的简单均值滤波算法
5星 · 资源好评率100%
好的,以下是用C语言编写的均值滤波函数的代码及注释:
```c
#include <stdio.h>
// 定义均值滤波函数
void mean_filter(int* data, int data_size, int window_size) {
int half_window = window_size / 2; // 窗口大小的一半
int sum = 0; // 窗口内数据的总和
int count = 0; // 窗口内数据的个数
// 遍历每个数据点
for (int i = 0; i < data_size; i++) {
// 将当前数据点加入窗口
sum += data[i];
count++;
// 如果窗口已经满了,就计算窗口内数据的均值
if (count == window_size) {
int mean = sum / window_size;
// 将均值赋给窗口中心的数据点
data[i - half_window] = mean;
// 将窗口内第一个数据点移除
sum -= data[i - window_size + 1];
count--;
}
}
}
int main() {
// 测试数据
int data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int data_size = sizeof(data) / sizeof(int);
int window_size = 3;
// 打印原始数据
printf("Original data: ");
for (int i = 0; i < data_size; i++) {
printf("%d ", data[i]);
}
printf("\n");
// 进行均值滤波
mean_filter(data, data_size, window_size);
// 打印滤波后的数据
printf("Filtered data: ");
for (int i = 0; i < data_size; i++) {
printf("%d ", data[i]);
}
printf("\n");
return 0;
}
```
注释中详细解释了每个变量和每个步骤的含义和作用,希望能够帮助你理解这个均值滤波函数的实现。
阅读全文