13:图像模糊处理(1.8编程基础之多维数组)

来源:互联网 发布:maven 打包java环境 编辑:程序博客网 时间:2024/06/16 02:47

13:图像模糊处理

总时间限制: 1000ms 内存限制: 65536kB
描述
给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:

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

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

输入
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
输出
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
样例输入
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

#include<iostream>using namespace std;//http://noi.openjudge.cn/ch0108/13///题目中的舍入到最接近的整数并不是在开玩笑,四舍五入//用的一个浮点数和整数来比较,如果超过0.5就加一 int n,m,a[200][200],b[200][200];int main(){    cin>>n>>m;    for(int i=1;i<=n;i++){        for(int j=1;j<=m;j++){            cin>>a[i][j];            b[i][j]=a[i][j];        }    }    for(int i=2;i<n;i++){        for(int j=2;j<m;j++){            double t1=1.0*(a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5;            int t2=(a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5;            if(t1>=t2+0.5){                b[i][j]=t2+1;            }            else b[i][j]=t2;        }    }    for(int i=1;i<=n;i++){        for(int j=1;j<=m;j++){            cout<<b[i][j]<<" ";        }        cout<<endl;    }}
原创粉丝点击