NOI / 1.8编程基础之多维数组
13:图像模糊处理
1.描述
给定n行m列的图像各像素点的灰度值,要求用如下方法对其进行模糊化处理:
1. 四周最外侧的像素点灰度值不变;
2. 中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)。
2.输入
第一行包含两个整数n和m,表示图像包含像素点的行数和列数。1 <= n <= 100,1 <= m <= 100。
接下来n行,每行m个整数,表示图像的每个像素点灰度。相邻两个整数之间用单个空格隔开,每个元素均在0~255之间。
3.输出
n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开
4. 样例输入
4 5
100 0 100 0 50
50 100 200 0 0
50 50 100 100 200
100 100 50 50 100
5.样例输出
100 0 100 0 50
50 80 100 60 0
50 80 100 90 200
100 100 50 50 100
6.题意
模糊化处理给定n行m列的图像各像素点的灰度值
7.思路
四周最外侧的像素点直接输出,中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均。
8.代码实现
#include<bits/stdc++.h>
using namespace std;
int main(){
int m,n,j=0,i;
double sum=0;
double a[105][105];
cin>>m>>n;
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
cin>>a[i][j];//四周最外侧的像素点直接输出
}
}
for(i=1;i<=m;i++){
for(j=1;j<=n;j++){
if(i==1||j==1||i==m||j==n){
cout<<a[i][j]<<" ";
}
else{
sum=(a[i][j]+a[i-1][j]+a[i+1][j]+a[i][j+1]+a[i][j-1])/5;//中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均
cout<<int(sum+0.5)<<" ";//舍入到最接近的整数
}
}
cout<<endl;
}
return 0;
}
时郁涵
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律