解题思路:
一、需求分析
1.n行m列的图像各像素点的灰度值
解读:定义一个二维数组int[][] image用来存储初始的图像灰度值;定义两个全局变量分别表示图像的行列数;
2.四周最外侧的像素点灰度值不变
解读:用for循环获取二维数组中记载的图像灰度值,并用if语句进行判断是否为最外侧,最外侧的情况有四种: 行的最上侧、行的最下侧、列的最右侧以及列的最左侧,因为平行关系用异或||逻辑运算符即可;
3.中间各像素点新灰度值为该像素点及其上下左右相邻四个像素点原灰度值的平均(舍入到最接近的整数)
解读:定义局部变量sum便于将该点以及邻近四个点求和,再求平均值。因为题目要求舍入到最接近的整数,需调用Math.round()方法
扩展:Math.round() 是 Java 中的数学方法,用于执行四舍五入的操作。它会将浮点数或双精度数取最接近的整数值。
4.n行,每行m个整数,为模糊处理后的图像。相邻两个整数之间用单个空格隔开。
解读:输出语句外加一个空字符串完成连接操作
二、过程设计
1.blur是指使图像或物体失去清晰度、模糊不清的效果,可以作为名词或动词使用。在上述代码中,“blur” 就是指对图像进行模糊化处理,使其变得模糊不清。(见名知义)
2.运用for循环给image数组键盘录入初始图像灰度值
3.因为需要对图像进行模糊化处理,所以需要定义一个新的数组blurredImage,用来接收处理后的图像灰度值;需要注意题目中最外侧情况的判断,将判断后不满足最外侧的数据进行求和,并将求和结果求平均值并四舍五入,最后赋值给数组blurredImage
4.将处理后得到的数组blurredImage,循环获取其中的值,并加一个空字符连接System.out.print(blurredImage[i][j] + " "),当一行中数据获取完后进行换行操作 System.out.println();
5.该题我认为不容易理解的是最外侧情况的判断,需要仔细思考
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt(); // 图像行数
int m = scanner.nextInt(); // 图像列数
int[][] image = new int[n][m]; // 存储图像灰度值的二维数组
// 读取图像的灰度值
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
image[i][j] = scanner.nextInt();
}
}
// 处理图像,进行模糊化
int[][] blurredImage = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (i == 0 || j == 0 || i == n - 1 || j == m - 1) {
// 最外侧像素点保持不变
blurredImage[i][j] = image[i][j];
} else {
// 对中间像素点进行模糊化处理,计算平均灰度值
int sum = image[i][j] + image[i - 1][j] + image[i + 1][j] + image[i][j - 1] + image[i][j + 1];
blurredImage[i][j] = Math.round(sum / 5.0f);
}
}
}
// 输出模糊化处理后的图像
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(blurredImage[i][j] + " ");
}
System.out.println();
}
}
}
0.0分
0 人评分
2^k进制数 (C++代码)使用递归方法浏览:722 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:610 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:677 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1817 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:520 |
C语言训练-求1+2!+3!+...+N!的和 (C语言代码)万恶的long long浏览:882 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:708 |
企业奖金发放 (C语言代码)浏览:2327 |
单词个数统计 (C语言代码)浏览:1014 |
字符串比较 (C语言代码)浏览:693 |