图像模糊处理

1三:图像模糊处理

总时间范围: 
1000ms

内部存款和储蓄器限制: 
65536kB

描述
加以n行m列的图像各像素点的灰度值,必要用如下方法对其进展模糊化处理:

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

贰.
个中各像素点新灰度值为该像素点及其左右左右相邻多个像素点原灰度值的平均(舍入到最相仿的整数)。

输入
第三行李包裹罗五个整数n和m,表示图像包括像素点的行数和列数。一 <= n <=
100,一 <= m <= 十0。
接下去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>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
int a[10001][10001];
int b[10001][10001];
int main()
{
    int n,m;
    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=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(i==1||i==n||j==1||j==m)
            {
                continue;
            }
            else
            {
                double r=((double)a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5;
                b[i][j]=round(r);
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        cout<<b[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}

 

一三:图像模糊处理

总时间范围: 
1000ms

内部存款和储蓄器限制: 
65536kB

描述
加以n行m列的图像各像素点的灰度值,必要用如下方法对其展开模糊化处理:

  1. 方圆最外面包车型客车像素点灰度值不变;

二.
中间各像素点新灰度值为该像素点及其前后左右紧邻多少个像素点原灰度值的平分(舍入到最左近的平头)。

输入
率先行李包裹涵八个整数n和m,表示图像包涵像素点的行数和列数。一 <= n <=
十0,一 <= 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>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
int a[10001][10001];
int b[10001][10001];
int main()
{
    int n,m;
    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=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            if(i==1||i==n||j==1||j==m)
            {
                continue;
            }
            else
            {
                double r=((double)a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5;
                b[i][j]=round(r);
            }
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        cout<<b[i][j]<<" ";
        cout<<endl;
    }
    return 0;
}