2

画像のフィルタリング関数を書き込もうとしていますが、その数学理論をすべてコードに変換する方法が頭に浮かびません (または覚えていません)。

次の関数があるとします。ここで、配列内の int は0との間の整数です255(単純にするためにかなりのグレースケール ピクセルです)。

private int[][] resample(int[][] input, int oldWidth, int oldHeight,
        width, int height) 
{
    int[][] output = createArray(width, height);
        // Assume createArray creates an array with the given dimension

    for (int x = 0; x < width; ++x) {
        for (int y = 0; y < height; ++y) {
            output[x][y] = input[x][y];
            // right now the output will be "cropped"
            // instead of resampled
        }
    }

    return output;
}

現在、フィルターの使用方法を理解しようとして立ち往生しています。ウィキペディアを試してみましたが、そこにある記事特に 役に立ちません。誰でもこれについて手がかりを得ることができますか、または簡単なコードサンプルを知っていますか?

4

1 に答える 1

2

最も簡単なアプローチは、次のような最近傍ダウンサンプリングです。

for (int x = 0; x < width; ++x) {
    for (int y = 0; y < height; ++y) {
        output[x][y] = input[x*width/oldWidth][y*height/oldHeight];
    }
}

しかし、これでは良い結果が得られないため、元の領域のより正確な色を取得するために、いくつかの入力ピクセルを使用してそれらを平均化する他のアプローチが必要になる場合があります。

于 2009-10-20T13:25:20.317 に答える