给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理: 1. 四周最外侧的像素点灰度值不变; 2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。 第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。 接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
时间: 2024-04-12 17:26:56 浏览: 93
bmp图像处理
```c
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int image[n][m];
int blurredImage[n][m];
// 输入图像像素灰度值
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
scanf("%d", &image[i][j]);
}
}
// 处理图像
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
// 四周最外侧的像素点灰度值不变
if (i == 0 || i == n - 1 || j == 0 || j == m - 1) {
blurredImage[i][j] = image[i][j];
} else {
// 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均
blurredImage[i][j] = (image[i][j] + image[i-1][j] + image[i+1][j] + image[i][j-1] + image[i][j+1]) / 5;
}
}
}
// 输出模糊化处理后的图像
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d ", blurredImage[i][j]);
}
printf("\n");
}
return 0;
}
```
这段代码假设输入的图像像素灰度值都在0~255之间,并且按照从左到右、从上到下的顺序输入。对于其他情况,你可能需要进行错误处理。
阅读全文