我必须编写一个程序,“将图像作为输入,由2d数组像素值表示(为简单起见,每个像素可以用整数表示)。通过应用均值滤波器输出得到的平滑图像数组中的每个像素“。
我只是在学习数组,但我对如何开始这个程序感到迷茫。每当我搜索这个主题时,它就会变得非常混乱,因为我发现的每个例子或概念都在使用或谈论实际图像。由于我的程序使用整数,我很难区分需要什么和不需要什么。基本上我理解前提(至少我认为我这样做),每个数字必须取其周围4个数字的平均值,但在基本概念之外,我对于需要做什么感到茫然。任何帮助,建议或示例都会很棒。
感谢
答案 0 :(得分:0)
0)加载图片?或者你给了整数数组?
1)我们从2D数组开始,生成副本:int I[N][M]; int New[N][M];
2)遍历值:
for (i = 0; i < N; i++){
for (j = 0; j < M; j++){
3)做你的东西
New[i][j] = sum(I[i-1][j] + I[i][j-1]...)/4;
显然这是最简单的方法,但它看起来像是在课堂上所以应该没问题
答案 1 :(得分:0)
一个关键概念:
int values[20][20];
float intermediates[20][20];
for (int y = 1; y < 19; y++)
for (int x = 1; x < 19; x++)
intermediates = (float)values[y][x];
int means[20][20];
for (int y = 1; y < 19; y++)
for (int x = 1; x < 19; x++)
means[y][x] = (int) ( (float) (intermediates[y-1][x-1] + intermediates[y-1][x] + intermediates[y-1][x+1] + intermediates[y][x-1] + intermediates[y][x] + intermediates[y][x+1] + intermediates[y+1][x-1] + intermediates[y+1][x] + intermediates[y+1][x+1]) / 9.0F); // Divisor is 9 because we added nine values and we're getting the mean
现在有4个极端情况:中间体[0] [0],中间体[0] [19]等,然后是所有方面。
首先将值复制到“中间人”中,因为我不想把(浮动)放在所有内容之前。