多重解像度解析 リフティングスキーム

多重解像度解析

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/02/16 06:10 UTC 版)

リフティングスキーム

1996年に Wim Sweldens が新しい離散ウェーブレット変換の計算方法であるリフティングスキーム英語版: lifting scheme)を発表した[4]。信号を偶数番目の要素と奇数番目の要素に分け、偶数番目の要素で奇数番目の要素を予測し、予測とのズレを高周波成分とし、残差を低周波成分とする手法である。論文の中で、自由に双直交ウェーブレット関数を定義できること、計算が高速化する事を長所に挙げている。ハールウェーブレットと双直交ウェーブレットを扱える。

定義

閉部分空間の系列 が次の条件1〜5を満たすとき、 は多重解像度解析を成すという。 の閉包を表す。

  1. ならば
  2. が存在して においてRiesz基底を成す。すなわち、任意の に対して数列 がただ一つ存在して、 と表される。さらに定数 が存在して、任意の に対して不等式 が成立する。

最後の条件はより厳しい条件として、

5'. が存在して、正規直交基底となる。

が用いられる事も多い。ここではこの条件5'を用いる。

条件1は空間が入れ子になっていることを意味する。条件2は を空間 への直交射影作用素とすると、全ての に対して であることを意味する。条件3は条件1の全ての空間がスケール変換で得られる事を意味する。条件4は平行移動に対して空間が普遍であることを意味する。

閉部分空間の集まりが条件1〜5'を満たすときには、いつでも正規直交ウェーブレット による の基底 が存在し、 が成立する。

プログラム例

Python(ハールウェーブレット)

ハールウェーブレットの離散ウェーブレット変換は下記のリフティングスキーム英語版の数式にて行える[5]。入力を x として、 は入力 x の先頭を1番目として偶数番目の要素、つまり、x[1::2] は奇数番目の要素、つまり、x[0::2]。c が低周波成分(基底関数がスケーリング関数)、d が高周波成分(基底関数がウェーブレット関数)。

ハールウェーブレットの離散ウェーブレット変換のソースコードは下記のようになる。入力は x で NumPy の配列で与える。多重解像度解析をしたい場合は、x = c して長さが1になるまで繰り返す。 の形の基底関数の係数にしたい場合は、c *= sqrt(2)d /= sqrt(2) をする。

d = x[0::2] - x[1::2]
c = x[1::2] + d / 2

ハールウェーブレットの逆離散ウェーブレット変換のソースコード。

x[1::2] = c - d / 2
x[0::2] = d + x[1::2]

Python(Bior2.2双直交ウェーブレット)

Bior2.2双直交ウェーブレット(2階Bスプライン、線形スプライン)の離散ウェーブレット変換は下記のリフティングスキームの数式にて行える[5] は一つ次の要素、 は一つ前の要素を表す。

Bior2.2の離散ウェーブレット変換のソースコード。配列の境界で足りない分は対称パディングで埋めている。

y = np.pad(x, (4, 2), "symmetric")
d = y[2::2] - (y[1:-2:2] + y[3::2]) / 2
c = y[3:-2:2] + (d[:-1] + d[1:]) / 4
d = d[1:]

Bior2.2の逆離散ウェーブレット変換のソースコード。

x[1::2] = c[1:] - (d[:-1] + d[1:]) / 4
x[0] = 2 * d[0] + x[1]
x[2::2] = d[1:-1] + (x[1:-2:2] + x[3::2]) / 2

Java

もっとも単純な例である。ハールウェーブレットによる多重解像度解析をJavaで記述した。

/**
 * 注意:このメソッドは input 配列を破壊する。
 * input.length は2以上の2のべき乗でないといけない。
 */
public static int[] calc(int[] input) {
    int[] output = new int[input.length];

    // length は 2^n で n は1つずつ減っていく
    for (int length = input.length >> 1; ; length >>= 1) {
        for (int i = 0; i < length; i++) {
            int a = input[i * 2];
            int b = input[i * 2 + 1];
            output[i] = a + b;
            output[i + length] = a - b;
        }

        if (length == 1)
            return output;

        // 次の反復のために配列を入れ替える
        System.arraycopy(output, 0, input, 0, length << 1);
    }
}

下記コードは上記を逆ウェーブレット変換する。

/**
 * 注意:このメソッドは output 配列を破壊する。
 * output.length は2以上の2のべき乗でないといけない。
 */
public static int[] inverse(int[] output) {
    int[] input = new int[output.length];

    for (int length = 1; ; length *= 2) {
        for (int i = 0; i < length; i++) {
            int a = output[i];
            int b = output[i + length];
            input[i * 2] = (a + b) / 2;
            input[i * 2 + 1] = (a - b) / 2;
        }

        if (length == output.length >> 1)
            return input;

        // 次の反復のために配列を入れ替える
        System.arraycopy(input, 0, output, 0, length << 1);
    }
}

C言語

C言語による、CDF 9/7 ウェーブレット変換(JPEG-2000で利用)のリフティングを用いた高速な実装は、dwt97.c を参照。


  1. ^ Stephane G. Mallat (1989). “A theory for multiresolution signal decomposition: the wavelet representation”. Pattern Analysis and Machine Intelligence, IEEE Transactions on 11 (7): 674-693. doi:10.1109/34.192463. http://www.cmap.polytechnique.fr/~mallat/papiers/MallatTheory89.pdf. 
  2. ^ DiscreteWaveletTransform—Wolfram言語ドキュメント
  3. ^ Single-level discrete 1-D wavelet transform - MATLAB dwt - MathWorks 日本
  4. ^ Wim Sweldens (April 1996). “The Lifting Scheme: A Custom-Design Construction of Biorthogonal Wavelets”. Applied and Computational Harmonic Analysis 3 (2): 186–200. doi:10.1006/acha.1996.0015. 
  5. ^ a b Lifting Method for Constructing Wavelets - MATLAB & Simulink - MathWorks 日本





英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「多重解像度解析」の関連用語

多重解像度解析のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



多重解像度解析のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの多重解像度解析 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS