描述
給定m行n列的圖像各像素點的灰度值,要求用如下方法對其進行模糊化處理:
1.四周最外側的像素點灰度值不變;
2.中間各像素點新灰度值爲該像素點及其上下左右相鄰四個像素點原灰度值的平均(舍入到最接近的整數)。
格式
輸入格式
第一行包含兩個整數n和m,表示圖像包含像素點的行數和列數。1≤n≤100,1≤m≤100。 接下來n行,每行m個整數,表示圖像的每個像素點灰度。相鄰兩個整數之間用單個空格隔開,每個元素均在0~255之間。
輸出格式
m行,每行n個整數,爲模糊處理後的圖像。相鄰兩個整數之間用單個空格隔開。
樣例
輸入樣例
4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100
輸出樣例
100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100
限制
時間限制: 1000 ms
內存限制: 65536 KB
#include <stdio.h>
// 要點: 小數 四捨五入存整+ 0.5
int main()
{
int i,j,n,m;
int arr[101][101],arr1[101][101];
scanf("%d %d",&n,&m);
for(i = 1;i <= n;i++)
for( j = 1;j <= m;j++)
scanf("%d",&arr[i][j]);
for(i = 1;i <= n;i++)
for( j = 1;j <= m;j++)
if(i==1||i==n||j==1||j==m)
arr1[i][j] = arr[i][j];
else
arr1[i][j] = (int)((arr[i][j+1]+arr[i][j-1]+arr[i+1][j]+arr[i-1][j]+arr[i][j])/5.0+0.5);
for(i = 1;i <= n;i++){
for( j = 1;j <= m;j++)
printf("%d ",arr1[i][j]);
printf("\n");
}
return 0;
}