均值滤波C++代码实现
时间: 2023-10-25 12:11:56 浏览: 125
以下是均值滤波的C代码实现:
```c
#include <stdio.h>
#define ROWS 5
#define COLS 5
void mean_filter(int img[ROWS][COLS], int filtered_img[ROWS][COLS])
{
int i, j, k, l, sum;
for(i=0; i<ROWS; i++)
{
for(j=0; j<COLS; j++)
{
sum = 0;
for(k=-1; k<=1; k++)
{
for(l=-1; l<=1; l++)
{
if(i+k>=0 && i+k<ROWS && j+l>=0 && j+l<COLS)
{
sum += img[i+k][j+l];
}
}
}
filtered_img[i][j] = sum / 9;
}
}
}
int main()
{
int img[ROWS][COLS] = {{10, 20, 30, 40, 50},
{60, 70, 80, 90, 100},
{110, 120, 130, 140, 150},
{160, 170, 180, 190, 200},
{210, 220, 230, 240, 250}};
int filtered_img[ROWS][COLS];
mean_filter(img, filtered_img);
printf("Original Image:\n");
for(int i=0; i<ROWS; i++)
{
for(int j=0; j<COLS; j++)
{
printf("%d ", img[i][j]);
}
printf("\n");
}
printf("Filtered Image:\n");
for(int i=0; i<ROWS; i++)
{
for(int j=0; j<COLS; j++)
{
printf("%d ", filtered_img[i][j]);
}
printf("\n");
}
return 0;
}
```
在上面的代码中,我们定义了一个5x5的图像,并使用`mean_filter`函数对其进行均值滤波。`mean_filter`函数中嵌套了四个循环,其中前两个循环用于遍历图像中的每个像素,后两个循环用于计算周围像素的平均值。我们使用一个if语句来确保不会越界。最后,我们打印原始图像和过滤后的图像。
阅读全文