ウェーブレット続き

忘れてたことがひとつ.

昨日書いた,dを捨てた場合の出力のことですが,

input ---> (1.5, 1.2, 1.8, 0.9, 0.5, 1.1, 1.6, 1.4)
result ---> (1.38795, 1.51417, 1.60446, 0.929127, 0.458942, 1.16083, 1.54865, 1.39587)

こんな感じになりました.

ここで,2つ目の1.51417と入力の1.2との差が,他の値に比べて大きいことが分かります.なんでこうなるか.

inputを先頭から順に読んでいくと,1.5,1.2,1.8と,いったん下がってまた上がってることが分かります.というわけで,どうせ1.2から1.8へと上がるんだったら,この1.2はあんまり意味ないっていう捉え方ができます.1.5から1.8を通して見ると,それらは結果的に0.3上がってることになります.ちょうど近似直線を書くような感じです.したがって,この無駄と思われる1.2の情報はdに取り込まれ,「最初の3つはだんだん上がっていく」という特徴だけがcに入ります.ですから,dを捨てて再構成すると,だんだん上がっていくという特徴だけが現れることになります.

これは画像に対しては非常に直感的です.自然画像だと,画像をピクセル単位でみたときに,赤の隣に青があるようなことはほとんどありません.普通は,赤からだんだんと青へ移っていくような形になっています.もしそのような領域に,赤から青への遷移の途中で1ピクセルだけ黒があっても,人間の目にはほとんど赤か青か紫くらいに見えてしまいます.そこでウェーブレット変換して,その黒の情報を捨てて再構成すると,確かに元々黒かったピクセルは赤っぽい色か青いっぽい色になりますが,人間の目には再構成した画像と元の画像はほとんど同じに見えます.画像を構成する情報が単純になるので,符号化したときにビット数を抑えられます.