0

c# を使用した 1 レベル 5/3 離散 Haar ウェーブレット変換 (DWT) ソース コードのヘルプが必要です。

私はこのプロジェクトを使用しており、前方ウェーブレット変換の方法は次のとおりです。

FWT(double[] data)
    {
        int h = data.Length >> 1;
        for (int i = 0; i < h; i++)
        {
            int k = (i << 1);
            temp[i] = data[k] * s0 + data[k + 1] * s1;
            temp[i + h] = data[k] * w0 + data[k + 1] * w1;
        }
    }
FWT(double[,] data)
{
for (int k = 0; k < 1; k++)
{
    for (int i = 0; i < rows / (k+1); i++)
    {
        for (int j = 0; j < row.Length / (k+1); j++)
            row[j] = data[i, j];

        FWT(row);

        for (int j = 0; j < row.Length / (k+1); j++)
            data[i, j] = row[j];
    }

    for (int j = 0; j < cols / (k+1); j++)
    {
        for (int i = 0; i < col.Length / (k+1); i++)
            col[i] = data[i, j];

        FWT(col);

        for (int i = 0; i < col.Length / (k+1); i++)
            data[i, j] = col[i];
    }
}

}

w0 = 0.5; w1 = -0.5;s0 = 0.5;s1 = 0.5;

論文でこのトピックについて検索しましたが、5/3 または 9/7 ウェーブレット フィルターのアルゴリズムがわかりません。このコードを変更するにはどうすればよいですか? どんな助けでも大歓迎です

4

1 に答える 1

0

役に立つかもしれません: pdf.js での jpeg2000 デコーダーの実装

5-3 コードのコアの実装:

function reversibleTransformFilter(x, offset, length) {
    var len = length >> 1;
    offset = offset | 0;
    var j, n;

    for (j = offset, n = len + 1; n--; j += 2) {
        x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;
    }

    for (j = offset + 1, n = len; n--; j += 2) {
        x[j] += (x[j - 1] + x[j + 1]) >> 1;
    }
};
于 2015-08-02T05:06:58.173 に答える