修复C中的边界问题

时间:2012-10-03 20:49:24

标签: c matrix boundary

我正在编写一个使用均值滤波器的图像平滑程序,但我似乎无法修复最后几个边界问题。我使用的是整数而不是图像。我为1个左手角返回正确的值,以及中间整数,左侧整数以及顶部和底部整数。目前我被困在右侧的整数组中,导致边界问题。

void side2(int a[10][20], int c[10][20], int m, int n)
{
    int i,j;
    for (i=1;i<m-1;i++) {
        for (j=0;j<n-1;j++) {
            c[i][j]=(0+0+a[i-1][j]+a[i+1][j]+a[i][j+1])/3;        
        }         
    } 
}

这只是计算右侧的功能,而不是任何一个角落。

这是我得到的输出。要求用户输入列和行的数字,这将输出随机数生成的矩阵,然后输出平滑后的图像和平均滤波器的结果。你可以看到右边是古怪的,我似乎无法找到边界的正确值。有人可以帮我找到正确的界限,这样我就可以停止获取这些古怪的数字。

please enter number of columns and rows
5 5
66  49  74  73  44
47  73  69  27  97
96  63  79  68  35
82  86  28  22  14
59   3  24   5  22
The smoothed image is
48  71  63  482009141880
78  60  60  79764514
64  79  55  28696626048
80  31  41  29  19
42  56  12  222009815

1 个答案:

答案 0 :(得分:2)

您需要将某些内容写入您无法进行过滤的边框。目前,你没有写任何东西,例如c[1][n-1],所以你只是得到了未初始化的垃圾。