好的,所以我试图让用户输入列数和行数,然后让输出显示一个随机数矩阵,然后是一个平滑图像矩阵,该矩阵为数组中的每个像素找到均值滤波器。现在我有它可以给我一个随机数矩阵,但平滑矩阵完全不正常。现在我写的代码只关注有 4 个邻居的整数,但很明显我做错了什么。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
// function that randomly generates numbers
void fillArray(int a[10][20], int m, int n)
{
int random;
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
random=rand()%100;
a[i][j]=random;
}
}
}
// function that prints the first matrix of random numbers
void printarray (int a[10][20], int m, int n)
{
int i,j;
for (i=0;i<m;i++)
{
for (j=0;j<n;j++)
{
printf("%4d", a[i][j]);
}
printf("\n");
}
}
// function that finds the mean for any number and its 4 nieghbors
void smooth (int a[10][20], int m, int n)
{
int i,j;
for (i=1;i<m;i++)
{
for (j=1;j<n;j++)
{
a[i][j]=a[i][j]=(a[i-1][j]+a[i][j-1]+a[i+1][j]+a[i][j+1])/4;
printf("%4d",a[i][j]);
}
printf("\n");
}
}
int main()
{
int a[10][20];
int m,n;
srand(time(NULL));
//User input
printf("please enter number of columns and rows");
scanf("%d %d", &m,&n);
fillArray(a,m,n);
printarray (a,m,n);
printf("The smoothed image is\n");
smooth(a,m,n);
getch();
return 0;
}
现在,如果我输入 3 和 3,我会得到这样的结果:
23 43 54
12 76 89
56 98 24
The smoothed image is
347373849493234343
12 23345345345
2132334565645645645
有人有什么想法吗?