其他分享
首页 > 其他分享> > 信息学奥赛一本通(1128:图像模糊处理)

信息学奥赛一本通(1128:图像模糊处理)

作者:互联网

1128:图像模糊处理


时间限制: 1000 ms         内存限制: 65536 KB
提交数: 26756     通过数: 11417

【题目描述】

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

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

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

【输入】

第一行包含两个整数nn和mm,表示图像包含像素点的行数和列数。1≤n≤100,1≤m≤1001≤n≤100,1≤m≤100。

接下来nn行,每行mm个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0∼2550∼255之间。

【输出】

nn行,每行mm个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。

【输入样例】

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<stdio.h>
#include<math.h>
#define N 110
int a[N][N],b[N][N];
int main()
{
	int m,n;
	int i,j;
	
	scanf("%d%d",&n,&m);
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			scanf("%d",&a[i][j]);
	
	for(i=0;i<n;i++)     
	{
		for(j=0;j<m;j++)
			if(i==0 || i==n-1 || j==0 || j==m-1)
	    		b[i][j]=a[i][j];
	  		else
	  			b[i][j]=round((a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j-1]+a[i][j+1])/5.0);
	}
	
	for(i=0;i<n;i++)
	{
		for(j=0;j<m;j++)
		  	printf("%d ",b[i][j]);
	  	printf("\n");
	}
    return 0;
}

http://ybt.ssoier.cn:8088/problem_show.php?pid=1128

标签:1128,信息学,mm,50,int,灰度,奥赛,100,像素点
来源: https://blog.csdn.net/lvcheng0309/article/details/117124567