foggia2004

平均灰度

给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

1. 四周最外侧的像素点灰度值不变;

2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。

 1 #include <iostream>
 2 #include <stdio.h>
 3 using namespace std;
 4 
 5 int main(int argc, char** argv) {
 6     //freopen("c:\\test.txt","r",stdin);
 7     
 8     long n,m,i,j,sum=0;
 9     cin>>n>>m;
10 
11     if(n>100 || m>100) return -1;
12     int ary[n][m],ary_new[n][m];
13     for(i=0;i<n;i++)
14     {
15         for(j=0;j<m;j++)
16         {
17             cin>>ary[i][j];
18             ary_new[i][j]=ary[i][j];
19         }
20     }
21 
22     for(i=1;i<n-1;i++)  //略去第一行和最后一行 
23     {
24         for(j=1;j<m-1;j++)  //略去第一列和最后一列 
25         {
26             sum=sum+ary[i-1][j];  //
27             sum=sum+ary[i+1][j];  //
28             sum=sum+ary[i][j-1];  //
29             sum=sum+ary[i][j+1];  //
30             sum=sum+ary[i][j];    //自己 
31             ary_new[i][j]=(int)(sum/5.0+0.5);
32             sum=0;
33         }
34     }
35     
36     for(i=0;i<n;i++)
37     {
38         for(j=0;j<m;j++)
39         {
40             cout<<ary_new[i][j]<<" ";
41         }
42         cout<<"\n";
43     }
44     
45     return 0;
46 }

 

posted on 2016-04-26 20:05  foggia2004  阅读(740)  评论(0)    收藏  举报

导航