DCT4回目 DCT係数を計算する所

///// 変換 /////////////////////////////////////////////////////////

                      7
Su(u) = 1/2 * C(u) * Σ  * Sx(x) * cos( (2x+1)uπ/16 )
                     x=0
但し、C(u)は、
    u=0  の時、1/√2
    u≠0 の時、1     です。

まず、1番目の波(DC成分と呼ばれ、実際には波ではなく、直線です)の成分、Su[0]の値を出す所。
上記の公式では、u = 0 となります。

よって、

                      7
Su(0) = 1/2 * 1/√2 * Σ  * Sx(x) * cos( (2x+1)*0*π/16 )
                     x=0
                        

となりますので、
Σの中のcos() の中はゼロとなり、結果的に、

Su[0] = 1/2( 1/√2*Sx[0] + 1/√2*Sx[1] + ・・・・・・ + 1/√2*Sx[7] )

となります。
この値は、1/√2 に対して各要素が、どういう位置関係に居るのか?という値を個別に出していって、足したものでしょう。
この値を、全部足してしまう所に、私の不思議があります。
各要素に対する値を個別に保存しておくのならば、元に戻せるというのも納得です。
ですが、実際には全部足してしまうので、平均値(のような値)しか残りません。

元々の値が、
例1)100,100,100,100,100,100,100,100 というように一定の値であれば、足してしまっても構いませんが、
例2)0,100,100,100,100,100,100,200, というような値であっても、例1)と計算結果は同じになります・・・

※だから、8つの波で同様に値を出すのでしょうけど・・・

まぁ、次へ進みます

次は、2番目の波へ進みます。
同様に、公式に u=1 を代入すると以下となります。

              7
Su(1) = 1/2 * Σ Sx(x) * cos( (2x+1)*π/16 )
             x=0
                        

ここで、cos() の中の値は、以下の様に変化します。
π*1/16, π*3/16, π*5/16, π*7/16, π*9/16, π*11/16, π*13/16, π*15/16

これは、ラジアンという単位で表されているようなので(初耳です)、高校時代の記憶通りに、(度:°)に変換すると
11.25°, 33.75°, 56.25°, 78.75°, 101.25°, 123.75°, 146.25°, 168.75°

これは、360°を16分割した22.5°区切りの真ん中の値かな?
0°-22.5°,22.5°-45°,45°-77.5°,77.5°-90°,90°-112.5°,112.5°-135°,135°-157.5°,157.5°-180°
まぁ、これは置いておいて

cos()を実際の値に直してみると

0.9808, 0.8315, 0.5556, 0.1951, -0.1951, -0.5556, -0.8315, -0.9808

となります。


この値で一つ感じるのは、
0番目と7番目、1番目と6番目、2番目と5番目、3番目と4番目、が、正負が逆になっています
なので、値が一定なら打ち消しあって 0 となります。


この事から、入力値が一定なら、Su[0] = 何らかの値、Su[1]、Su[2]、・・・ = 0 となるので、
元の値が復元出来そうな事は、何となく感じました。
ただ、以前、入力値がバラバラの時も復元出来るという所は不明です。

まぁ結局、計算は

Su(1) = 1/2( 0.9808*Sx[0] + 0.8315*Sx[1] + ・・・・・・ + -0.8315*Sx[6] + -0.9808*Sx[7])

となります。
これも、やっている事は、Su(0)の時と変わらず、
0.9808, 0.8315, 0.5556,・・・・ というのは、波を表しているので、
これに対して、対応する要素の値との位置関係を求めているだけでしょう。

これも、個別の値を保持しているのなら分かりますが・・・全部足してしまうので、
結局残る値は、全体的に見てどうか?という事ですよね????

うーーーん。
これ以降の、弟3、弟4・・・の波に関しても、波の波形が変わるだけなので、以下に表とグラフを載せておきます。

【コサイン内の角度】

x=0 x=1 x=2 x=3 x=4 x=5 x=6 x=7
u=0
u=1 11.25° 33.75° 56.25° 78.75° 101.25° 123.75° 146.25° 168.75°
u=2 22.5° 67.5° 112.5° 157.5° 202.5° 247.5° 292.5° 337.5°
u=3 33.75° 101.25° 168.75° 236.25° 303.75° 11.25° 78.75° 146.25°
u=4 45° 135° 225° 315° 45° 135° 225° 315°
u=5 56.25° 168.75° 281.25° 33.75° 146.25° 258.75° 11.25° 123.75°
u=6 67.5° 202.5° 337.5° 112.5° 247.5° 22.5° 157.5° 292.5°
u=7 78.75° 236.25° 33.75° 191.25° 348.75° 146.25° 303.75° 101.25°

【コサインの実数値】

x=0 x=1 x=2 x=3 x=4 x=5 x=6 x=7
u=0 0.7071 0.7071 0.7071 0.7071 0.7071 0.7071 0.7071 0.7071
u=1 0.9808 0.8315 0.5556 0.1951 -0.1951 -0.5556 -0.8315 -0.9808
u=2 0.9239 0.3827 -0.3827 -0.9239 -0.9239 -0.3827 0.3827 0.9239
u=3 0.8315 -0.1951 -0.9808 -0.5556 0.5556 0.9808 0.1951 -0.8315
u=4 0.7071 -0.7071 -0.7071 0.7071 0.7071 -0.7071 -0.7071 0.7071
u=5 0.5556 -0.9808 0.1951 0.8315 -0.8315 -0.1951 0.9808 -0.5556
u=6 0.3827 -0.9239 0.9239 -0.3827 -0.3827 0.9239 -0.9239 0.3827
u=7 0.1951 -0.5556 0.8315 -0.9808 0.9808 -0.8315 0.5556 -0.1951


【コサインの値に対するグラフ(実際の値を繋げたグラフ)】
DCTは、入力された値を、このグラフの各波に分解していると思います。

【コサインの値に対するグラフ(滑らかなグラフ)】

【各波を1枚に重ねたグラフ(実際の値を繋げたグラフ)】

【各波を1枚に重ねたグラフ(滑らかなグラフ)】