0

平均フィルターを使用する画像平滑化プログラムを作成していますが、最後のいくつかの境界の問題を修正できないようです。画像の代わりに整数を使用しています。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
4

1 に答える 1

2

フィルターを実行できない境界線に何かを書き込む必要があります。現在、たとえば に何も書き込んでいないc[1][n-1]ため、初期化されていないジャンクが得られます。

于 2012-10-03T20:53:28.087 に答える