c语言实现一个均值滤波
时间: 2023-05-25 13:01:31 浏览: 172
A:
均值滤波是数字图像处理中一种基本的滤波方法,用于去除噪声、平滑图像等。在C语言中实现均值滤波可以使用以下代码:
```c
#include <stdio.h>
// 定义滤波函数
void mean_filter(int img[][5], int width, int height)
{
int filter_size = 3; // 定义滤波器尺寸
int filter[3][3] = { // 定义3x3的滤波器
{1, 1, 1},
{1, 1, 1},
{1, 1, 1}
};
int filter_sum = 9; // 计算滤波器像素值和
// 创建新的处理后的图像矩阵
int new_img[height][width];
// 对图像遍历并应用滤波器
for(int i=1; i<height-1; i++)
{
for(int j=1; j<width-1; j++)
{
int sum = 0;
for(int k=0; k<filter_size; k++)
{
for(int l=0; l<filter_size; l++)
{
sum += img[i-1+k][j-1+l] * filter[k][l];
}
}
new_img[i][j] = sum / filter_sum;
}
}
// 输出处理后的图像矩阵
printf("After Mean Filter:\n");
for(int i=0; i<height; i++)
{
for(int j=0; j<width; j++)
{
printf("%d ", new_img[i][j]);
}
printf("\n");
}
}
// 主函数
int main()
{
// 定义5x5的图像矩阵
int img[5][5] = {
{0, 0, 0, 0, 0},
{0, 1, 3, 4, 0},
{0, 2, 5, 2, 0},
{0, 4, 1, 0, 0},
{0, 0, 0, 0, 0}
};
// 调用均值滤波函数
mean_filter(img, 5, 5);
return 0;
}
```
在这个例子中,我们定义了一个3x3的平均滤波器,然后将其应用于一个5x5的图像矩阵。处理之后,输出处理后的图像矩阵。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)