高速DCT実装


7

次の2つの論文にある高速8x8 DCTアルゴリズム図に従う方法を理解するのに苦労しています。

(1)Chenらによる離散コサイン変換の高速計算アルゴリズム

そして

(2)Loefflerらによる11の乗算を伴う実用的な高速1-D DCTアルゴリズム

特に、(2)のアルゴリズムを示す2番目の図は次のようになります。

ここに画像の説明を入力してください

このアルゴリズムの操作の説明は次のとおりです。

ここに画像の説明を入力してください

この定式化について私が持っているいくつかの質問があります、そして私は答えをどこに見つけるかわかりません:

  1. (2)このアルゴリズムは、ある値でスケーリングされるDCTを生成することを示唆しています C=2。これは、CDC係数の計算における乗算を回避するために、任意に選択されました。本当に唯一の要件はCDCTCDCT=4N2。だから私の質問はこれです:このアルゴリズムを使用した出力係数のスケーリング係数は何ですか?それらはDCTの元の定義とは異なるように見えますが、どの程度かはわかりません(主に、この図と元のDCTの定式化の間に実際に関係が見られないためです)。

    Fk=2ckNΣ=0N1fcos2+1πk2N
    どこ ck=12 ために k=0 そして ck=1 ために k0
  2. この論文は、IDCTの実行はまったく同じアルゴリズムを使用して実行できるが、出力を入力に、またはその逆に変換できると述べています。まず、DCT係数は、IDCTを実行する前にビット逆順に並べるべきですか?次に、回転ブロック(図の四角形)の場合、逆演算は次のようにしないでください。

    O0=0kcosπ2N1kπ2NO1=1kπ2N+1kcosπ2N
    私の推論はこれです:回転の逆 θ によるローテーションです θ。したがって、角度をその逆に置き換えるだけで、恒等式を使用しますcosθ=cosθ そして θ=θ。3番目に、IDCT後の変換された値の倍率は何ですか?(2)言う2N2、しかし経験的に、これは正しい結果を生み出していません。
  3. アルゴリズムを実行した後、各レーンの結果が値に格納されていると仮定しますd0 ... d7。次のうち正しいものはどれですか。

    output [0] = d0またはoutput [0] = d0
    出力[4] = d1出力[1] = d4
    出力[2] = d2出力[2] = d2
    出力[6] = d3出力[3] = d6
    出力[7] = d4出力[4] = d7
    出力[3] = d5出力[5] = d3
    出力[5] = d6出力[6] = d5
    出力[1] = d7出力[7] = d1 

この質問を改善する方法がある場合、または他の場所で質問する必要がある場合は、お知らせください。


実質的に....あなたが実際に必要が事前に計算DCT値のセットと、それらの予め計算されたものにその結果が準拠するまで、あなたの実装を調整何であるかの質問のこれらの種類を答えるために
FAT32

私はそれらすべての質問を持っています、そしてもっと...あなたはそれを理解したことがありますか?ものの形を抽出しようとするCの実装を見つけました。答えがあれば何か書こう。
Pepijn

回答:


4

わかりました。この問題を何日か見つめた後、私は次の貧しい魂に少しのガイダンスを提供できることを願っています。

  1. はい、スケーリングは異なります。scipy.fftpack.dctDC項と比較すると12 その他の用語 22。しかし、明らかにそれはすべて逆変換でうまくキャンセルします。
  2. 逆の入力順序は、出力されるとおりです。ビットが逆になります。文字通り、図をめくってラインをつなぎます。そして、はい、あなたは罪がマイナスになることは正しいです。倍率は8、FWIWです。
  3. 逆の出力順序は、順方向変換の入力順序と同じです。そうバツ[]=DCTDCTバツ[]8

また、グラフにエラーがあり、 2c6 偶数回転ブロック用。


これらの質問にお答えいただきありがとうございます。これに対する私の元々の動機は2D圧縮アルゴリズムのコンテキストにあったので、出力の相対的な順序についてはまだ少し不明確です(出力を0から7にして、最小のものから取得できるようにしたい)最大に)。それらはかなりビット反転されていません:3-> 5、5-> 6、7-> 1はビット反転ではありません(またはここで誤解しました)。
Mokosha

1
順序はen.wikipedia.org/wiki/Bit-reversal_permutationと一致するので、それがあります。もちろん、好きなように並べ替えることができます。追加コストを回避するために、ジグザグのステップでこれを直接考慮することをお勧めします。
Pepijn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.