線形代数 · 第30回 · 動画2 · インタラクティブ教材

写真の数字の95%は捨てられている:JPEG を支える線形代数

I重要な考え方のまとめ

概念 式 意味
基底変換 x=c1b1+c2b2+⋯+cnbn\mathbf{x} = c_1 \mathbf{b}_1 + c_2 \mathbf{b}_2 + \cdots + c_n \mathbf{b}_n 同じベクトルを新しい語彙で言い直す
係数 ck=bk⋅xc_k = \mathbf{b}_k \cdot \mathbf{x}(正規直交の場合) x\mathbf{x} にパターン bk\mathbf{b}_k がどれだけ含まれているか
しきい値処理 ∣ck∣≥τ\lvert c_k \rvert \geq \tau なら ckc_k を残し、そうでなければ 00 にする 非可逆な段階:情報が消えるのはここ
圧縮率 もともと保存していた数の個数残した係数の個数\dfrac{\text{もともと保存していた数の個数}}{\text{残した係数の個数}} 例:64/3≈21:164/3 \approx 21{:}1

II可視化1 — 空間の中で局在する基底

ハール基底のベクトルは、それぞれ信号の別々の部分を見ています。全体を見るものもあれば、隣り合う 2 つの画素だけを見るものもあります。

💡 信号全体に広がるフーリエの正弦波と違って、ハールのベクトルのほとんどは、ほぼすべての場所でゼロです。この局所性のおかげで、1 つの係数でエッジの位置を特定できるのです。

III可視化2 — 係数を捨てる

なめらかな信号は、少数の大きな係数に収まっています。それだけを残して残りをゼロにしても、違いはほとんどわかりません。

💡 自然な画像のブロックはなめらかなので、エネルギーが少数の低周波の係数に集まります。JPEG がうまくいくのは、基底そのもののおかげではなく、この疎な形(ほとんどの係数がゼロであること)のおかげです。

IV可視化3 — フーリエ対ウェーブレット

なめらかな信号はフーリエ基底で疎になり、鋭いエッジはウェーブレット基底で疎になります。疎になるかどうかは基底しだいです。

💡 JPEG 2000 や FBI の指紋の形式(WSQ)がウェーブレットを使うのはこのためです。指紋はエッジだらけで、エッジはフーリエではなくハールで疎になります。

V確認クイズ

問1

JPEG の処理では、8×8 画素のブロック(64 個の数)をフーリエ基底で書き直して、64 個の係数 c1,c2,…,c64c_1, c_2, \ldots, c_{64} を得ます。

この段階で(しきい値処理をする前に)、何か情報は失われているでしょうか。

✅ 正解です! 基底変換は、同じベクトルを新しい語彙で言い直しているだけです。

❌ 惜しい! 基底変換の段階としきい値処理の段階を混同しないようにしましょう。情報が失われるのはしきい値処理だけです。

解答を見る

解答:

基底変換は、同じベクトルを別の「語彙」で書き直すだけで、何も捨てていません。x\mathbf{x} を元の画素のベクトル、c\mathbf{c} をフーリエ係数のベクトルとすると、いつでも次のように元に戻せます。

x=c1b1+c2b2+⋯+c64b64.\mathbf{x} = c_1 \mathbf{b}_1 + c_2 \mathbf{b}_2 + \cdots + c_{64} \mathbf{b}_{64}.

JPEG で非可逆なのは、小さい係数をゼロにするしきい値処理(第二幕)です。基底変換の段階(第一幕)そのものは、完全に元に戻せます。

問2

8×8 のブロック(64 個の数)を、64 個のフーリエ係数のうち 4 個だけを残して圧縮したとします。圧縮率はいくらでしょうか。

✅ 正解です! 64/4=1664 / 4 = 16 なので、圧縮率は 16:1 です。

❌ 惜しい! 圧縮率 =(元の数の個数)/(保存する数の個数)です。

解答を見る

解答:

圧縮率は、元の値の個数と保存する値の個数を比べたものです。

圧縮率=元の個数残した個数=644=16.\text{圧縮率} = \frac{\text{元の個数}}{\text{残した個数}} = \frac{64}{4} = 16.

したがって圧縮率は 16:1 です。再構成すれば 64 個の画素値がすべて得られますが、そのために保存する必要があったのは 4 個の数だけです。

  • ❌ 4:1:これは残した係数の個数にすぎず、比ではありません。
  • ❌ 60:1:これは捨てた個数で、比ではありません。
  • ❌ 64:1:これには係数を 1 個だけ残す必要があります。

問3

指紋の鋭い隆線(エッジや細かいスケールの局所的な特徴がたくさんある)を含む画像を圧縮したいとします。FBI がこの用途に、JPEG のフーリエ型の規格ではなく、ウェーブレットにもとづく規格を選んだことはよく知られています。

ここでウェーブレットがフーリエより適しているのはなぜでしょうか。

✅ 正解です! 空間の中で局在していることが、エッジに対するウェーブレットの強みです。

❌ 惜しい! 鍵になる言葉は局在です。ウェーブレットは、どれだけ波打っているかだけでなく、特徴がどこにあるかまでわかります。

解答を見る

解答:

フーリエ基底のベクトルは、区間全体に広がっています。鋭いエッジ、つまり 1 回だけの急な跳びは、どのフーリエのベクトル 1 本でもとらえられないので、エッジが多くの高周波の係数に「広がって」しまいます。これで疎な形が崩れます。そして、圧縮を可能にしているのはその疎な形なのです。

それに対してハール・ウェーブレットは、空間と周波数の両方で局在しています。位置 4 での跳びは、主に位置 4 にあるウェーブレットを反応させるだけです。必要な係数は多くなく、少数で済みます。

まさにこのため、FBI の指紋圧縮規格(WSQ)は、本人を特定する隆線の細部を保ったまま、指紋 1 つあたりおよそ 15:1 に縮められます。JPEG 2000 がウェーブレットを使うのも同じ理由です。

  • ❌「係数 1 つあたりに多くの情報を保存できる」:どちらの基底でも、係数はただの実数です。
  • ❌「ウェーブレットは可逆」:ウェーブレットによる圧縮でもしきい値処理をするので、非可逆です。
  • ❌「フーリエ係数が存在しない」:係数は存在します。ただ、エッジに対しては有意な係数が多すぎるのです。

問4

正しいか誤りか:R8\mathbb{R}^8 のフーリエ基底とハール・ウェーブレット基底は、R8\mathbb{R}^8 の異なる部分空間を張る。つまり、一方の基底では表せるのに、もう一方では表せないベクトルがある。

✅ 正解です! どちらも同じ空間 R8\mathbb{R}^8 の基底です。ベクトルを別々の語彙で記述しているにすぎません。

❌ 惜しい! 動画を思い出しましょう。フーリエの市松模様は、4 本のハール・ウェーブレットの和に等しいのでした。R8\mathbb{R}^8 のどのベクトルも、どちらの基底でも表せます。

解答を見る

解答:

誤り。 R8\mathbb{R}^8 の基底はどれも、R8\mathbb{R}^8 全体を張ります。それがまさに「基底」の意味です。フーリエ基底とハール・ウェーブレット基底は、同じ空間を別々の語彙で記述しているだけです。

動画では、フーリエの市松模様のベクトルを 4 本のハール・ウェーブレットの和として書き、このことをはっきり示しました。

(1,−1,1,−1,1,−1,1,−1)=(1,−1,0,0,0,0,0,0)+(0,0,1,−1,0,0,0,0)+(0,0,0,0,1,−1,0,0)+(0,0,0,0,0,0,1,−1).(1, -1, 1, -1, 1, -1, 1, -1) = (1, -1, 0, 0, 0, 0, 0, 0) + (0, 0, 1, -1, 0, 0, 0, 0) + (0, 0, 0, 0, 1, -1, 0, 0) + (0, 0, 0, 0, 0, 0, 1, -1).

一方の基底で表せるベクトルは、どれももう一方でも表せます。違うのは、どのベクトルが疎になるか(ゼロでない係数が少なくなるか)です。

  • なめらかな信号は、フーリエ基底で疎になる。
  • 鋭い信号や局所的な信号は、ハール基底で疎になる。

空間は同じでも、得意なことが違うのです。

正解数:0 / 4