4. 【编程题】(10.0分)均值滤波 题目:由256种不同浓淡的灰色描绘的图像称为灰度图,其中每个 像素是用整数0~255编码表示这256种灰色,整个灰度图表示为 一个各个像素灰度值构成的整形矩阵。但由于各种干扰因素的 影响,图像像素信息中常含有噪声。 在数字图像处理领域中,均值滤波是一种简单有效的去噪技术, 具体方法是:对目标像素给一个滤波模板,该模板包括了其周围 临近像素(如3×3模板是以目标像素为中心的周围8个像素, 加上自身共9个像素构成一个滤波模板),再用模板中的全体像素 的平均值来代替原来像素值。请以3×3为滤波模板,完成下面函数: mean_filter(int srcImage[SIZE][SIZE], int dstImage[SIZE][SIZE]), 实现上述的灰度图均值滤波过程,其中参数srcImage为原始灰度图, 均值滤波后结果图像存储在dstImage。 注意:原始图像中四个边缘上的像素值保持不变! 说明:简化起见,题目中所有图像都是4×4的矩阵。
时间: 2024-04-14 14:27:23 浏览: 108
图像处理之均值滤波程序
3星 · 编辑精心推荐
```c
#define SIZE 4
void mean_filter(int srcImage[SIZE][SIZE], int dstImage[SIZE][SIZE]) {
// 遍历图像像素
for (int i = 0; i < SIZE; i++) {
for (int j = 0; j < SIZE; j++) {
// 处理边缘像素,直接复制到目标图像
if (i == 0 || i == SIZE - 1 || j == 0 || j == SIZE - 1) {
dstImage[i][j] = srcImage[i][j];
}
// 对内部像素进行均值滤波
else {
int sum = 0;
for (int m = i - 1; m <= i + 1; m++) {
for (int n = j - 1; n <= j + 1; n++) {
sum += srcImage[m][n];
}
}
dstImage[i][j] = sum / 9;
}
}
}
}
```
这个函数实现了一个3×3的均值滤波器。它遍历原始图像中的每个像素,并根据滤波模板计算出目标图像中对应位置的像素值。对于边缘像素,直接复制到目标图像中;对于内部像素,计算其周围9个像素的平均值,并将结果存储在目标图像中。
阅读全文