图像处理均值算法

均值处理算法

  • 算法思想:

    计算待处理像素的周围元素的均值来代替待处理像素

  • 数学表达式:

    image[i][j] = (imgae[i-1][j-1] + image[i][j-1] + image[i+1][j-1] +
    image[i-1][j] + image[i+1][j] +
    image[i-1][j+1] + image[i][j+1] + image[i+1][j+1])/8

  • 代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
private static int meanfilter(int[][] image) {
try {
Scanner sc = new Scanner(System.in);
System.out.println("请输入图片的m,n:");
int m = sc.nextInt();
int n = sc.nextInt();
image = new int[m][n];
newImage = new int[m][n];
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
image[i][j] = sc.nextInt();
}
}
System.out.println("原图片的数值为:");
System.out.println(Arrays.deepToString(image));
for (int i = 1; i < m - 1; i++) {
for (int j = 1; j < n - 1; j++) {
newImage[i][j] = (image[i - 1][j - 1] + image[i][j - 1] + image[i + 1][j - 1] + image[i - 1][j] + image[i + 1][j] +
image[i - 1][j + 1] + image[i][j + 1] + image[i + 1][j + 1]) / 8;
}
}
System.out.println("经过均值滤波后的图片数值为:");
System.out.println(Arrays.deepToString(newImage));
return 0;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}