DCT
偶関数を位相をずらさない振幅の異なるcosの足し合わせで再現しちゃおうの変換
代わりに出来上がる周波数スペクトルはcosの振幅と二値化された位相(0 or π)の情報しかない
ちなみに定義域のマイナス方面に情報を含まない関数も偶関数と見なしちゃえば、周波数スペクトルに変換できる
DFTは周期拡張で端に不連続が出るがDCTは偶対称拡張なので端が繋がるのでデータ圧縮用途的に都合よいらしい
色々形式があるがメジャーなのはDCT-II
逆変換
の時だけある事情で特別扱い ← ToDo
当然なので色んな高速化の手段が考えられてる
クーリー–テューキー使う方法
ANN で DCT を解く
JPEGのDCTを使ったデータ圧縮
シェーダでDCT解くとき、GPGPUが使えるなら共有メモリを使っていい感じに解けるが、使えないならマルチパスで解く
周波数インデックスを自身のピクセル位置から算出する感じになる
横成分のdct → 縦成分のdct → 縦成分のidct → 横成分のidct
また、 ブロックサイズが 8x8 で固定の場合 cos の項は与えられるデータに依らないので事前計算で用意したテーブルを用いて計算する方が軽く済む
でどれを参照するか決める
DCTで得たスペクトルを量子化することでエントロピーが下がり後の操作でのデータ圧縮に繋がる
この時の量子化もいい感じになるようなテーブルがあるそうな