8月12日の「線形代数の応用例」というブログの中で、ディスプレイ上に表示される画像について、基底画像というものに言及した。
例えば画面がn×n画素で構成されるものとする。最も単純な例として、各画素にn^2次元ベクトル空間上の基底ベクトルeijを対応させる。このeijは、(i,j)画素のみが1で、残りの画素がすべて0とする。
そうすると、たとえば(i,j)画素の濃淡値がfijである全体画像fはベクトルであり、各基底画像fijeijの重ね合わせであるから、
f=f00e00+f01e01+...+fijeij+...+fn-1,n-1en-1,n-1 (1)
と書ける。
基底画像の数はn^2枚にもなる。例えば白黒画像の場合、値が1の画素に対応する基底画像のみを残し、値が0の画素に対応する基底画像を削除すれば、データ圧縮が可能になるが、これでは、あたりまえすぎて面白くも何ともない。
そこで、新たに基底画像を定義して、基底ベクトルの数をn^2個より減らしたい。そうすると、任意の画像fは、次のような基底の重ね合わせとして表せる。
f=c1e1+c2e2+...+cmem (2)
ここでm<n^2である。ここで、係数ciはベクトルeiに掛かる重みであり、eiの個々の要素に掛かる数値ではない。
画像fと基底画像ei(1=<i=<m)の内積をとると、異なる基底画像が互いに直交していれば、
(f,ei)=ci (3)
となるので、画像fが上記のように独立した基底画像の一次結合として展開できるとみて間違いない。
具体的な基底画像の例を示すために、32×32画素で構成される画面を例にとる。
このとき、次のような構成をもつ基底画像e1~e10を想定する。
e1:画素位置(0,0)から(15,31)まで+1、(16,0)から(31,31)まで-1の値をとる(横2分割)。
e2:e1を横4分割し、(0,0)から(7,31)まで+1、(7,0)から(15,31)まで-1の値、(16,0)から(23,31)まで+1、(24,0)から(31,31)まで-1の値をとる。
e3:e1を横8分割し、上記のように+1帯と-1帯を交互につくる。
e4:e1を横16分割し、+1帯と-1帯を交互につくる。
e5:e1を横32分割し、+1帯と-1帯を交互につくる。
e6:e1を縦2分割し、左半分を+1帯、右半分を-1帯とする。
e7:e6を縦4分割し、縦方向に+1帯と-1帯を交互につくる。
e8:e6を縦8分割し、縦方向に+1帯と-1帯を交互につくる。
e9:e6を縦16分割し、縦方向に+1帯と-1帯を交互につくる。
e10:e6を縦32分割し、縦方向に+1帯と-1帯を交互につくる。
ベクトルe1~e10についてeiとejが直交することは、iとjが異なるときeiとejの内積が0になり、iとjが同じとき0でない数になることで確かめられる。
基底画像e1~e10は、sin関数の正値帯を+1に変更し、負値帯を-1に変更したものと考えることができる。e1~e10の順番は、波長の大きさの順になっている(e1が最大波長、e10が最小波長の関数)。あるいは、基底画像e1~e10は、+1と-1の組をベースとしており、最も簡単なウェーブレットとみなしてもよい。
ウェーブレットの解説書、特に数学的に厳密な説明がされる文献は難解である。最も簡単なウェーブレットは、+1と-1の組で構成される関数であり、スケーリングによってそのスケールを拡大・縮小できる(e1が最大スケール、e10が最小スケールの関数)。
なぜこの例のような基底画像を用いるのかという疑問が生じて当然である。人間がつくり出す画像と言っても、それはその根本原理として自然法則に従っているであろう。そうすると、画像はその根底に自然現象にみられる自己相似性という性格を備えているものと仮定できる。言い換えれば、それは、べき乗則に従っているものと考える。そうであれば、その画像に適用可能な最大スケールから最小スケールまでの基底を用意しておけば、その画像を各基底にその重みを掛けたものの一次結合で表現できるであろう、というところか。
この例に現れる基底を用いて(2)式を書き直すと、
f=c1e1+c2e2+...+c10e10 (4)
となる。
画像fが白黒画像とすると、ciはfが基底eiを用いる回数(あるいはeiの重み)とみなすことができる。
32×32画素で構成される白黒画像として、6×6画素の領域に一つの数字パターンを構成し、このような数字1~9,0,1~6の16個から成る数字の配列を設定した。
この白黒画像について、c1~c10を計数すると、次のようになる。
c1:507,c2:495,c3:521,c4:511,c5:491,
c6:517,c7:483,c8:485,c9:531,c10:517
この数字を見て、初めて気付いた。テキストのような単純な白黒画像であれば、基底画像の数も少ないし、わざわざ基底画像を持ち出すまでもなく、白画素、黒画素のラン・レングスを計数してデータ圧縮する方式が有効であるということを。カラー画像であれば、画素の濃淡値の変化が多彩であるので、画像fを(2)式のように基底画像の一次結合に展開し、重みの小さい基底の成分を削除することによって、画像圧縮する方式が有効になるだろう。
テキスト画像、カラー画像ともに、データ圧縮方式は標準化されていて、これ以上深入りしても面白い成果は得られないような気がする。
今後は、参考文献を参考しながら、「意味のある画像」からなる正規直交基底をつくることによって絵画のような画像を解析できないか検討してみたい。
参考文献
金谷健一著「インターネット時代の数学―重ね合わせの原理と応用」(共立出版)
榊原進著「同上―ウェーブレット」(同上)
例えば画面がn×n画素で構成されるものとする。最も単純な例として、各画素にn^2次元ベクトル空間上の基底ベクトルeijを対応させる。このeijは、(i,j)画素のみが1で、残りの画素がすべて0とする。
そうすると、たとえば(i,j)画素の濃淡値がfijである全体画像fはベクトルであり、各基底画像fijeijの重ね合わせであるから、
f=f00e00+f01e01+...+fijeij+...+fn-1,n-1en-1,n-1 (1)
と書ける。
基底画像の数はn^2枚にもなる。例えば白黒画像の場合、値が1の画素に対応する基底画像のみを残し、値が0の画素に対応する基底画像を削除すれば、データ圧縮が可能になるが、これでは、あたりまえすぎて面白くも何ともない。
そこで、新たに基底画像を定義して、基底ベクトルの数をn^2個より減らしたい。そうすると、任意の画像fは、次のような基底の重ね合わせとして表せる。
f=c1e1+c2e2+...+cmem (2)
ここでm<n^2である。ここで、係数ciはベクトルeiに掛かる重みであり、eiの個々の要素に掛かる数値ではない。
画像fと基底画像ei(1=<i=<m)の内積をとると、異なる基底画像が互いに直交していれば、
(f,ei)=ci (3)
となるので、画像fが上記のように独立した基底画像の一次結合として展開できるとみて間違いない。
具体的な基底画像の例を示すために、32×32画素で構成される画面を例にとる。
このとき、次のような構成をもつ基底画像e1~e10を想定する。
e1:画素位置(0,0)から(15,31)まで+1、(16,0)から(31,31)まで-1の値をとる(横2分割)。
e2:e1を横4分割し、(0,0)から(7,31)まで+1、(7,0)から(15,31)まで-1の値、(16,0)から(23,31)まで+1、(24,0)から(31,31)まで-1の値をとる。
e3:e1を横8分割し、上記のように+1帯と-1帯を交互につくる。
e4:e1を横16分割し、+1帯と-1帯を交互につくる。
e5:e1を横32分割し、+1帯と-1帯を交互につくる。
e6:e1を縦2分割し、左半分を+1帯、右半分を-1帯とする。
e7:e6を縦4分割し、縦方向に+1帯と-1帯を交互につくる。
e8:e6を縦8分割し、縦方向に+1帯と-1帯を交互につくる。
e9:e6を縦16分割し、縦方向に+1帯と-1帯を交互につくる。
e10:e6を縦32分割し、縦方向に+1帯と-1帯を交互につくる。
ベクトルe1~e10についてeiとejが直交することは、iとjが異なるときeiとejの内積が0になり、iとjが同じとき0でない数になることで確かめられる。
基底画像e1~e10は、sin関数の正値帯を+1に変更し、負値帯を-1に変更したものと考えることができる。e1~e10の順番は、波長の大きさの順になっている(e1が最大波長、e10が最小波長の関数)。あるいは、基底画像e1~e10は、+1と-1の組をベースとしており、最も簡単なウェーブレットとみなしてもよい。
ウェーブレットの解説書、特に数学的に厳密な説明がされる文献は難解である。最も簡単なウェーブレットは、+1と-1の組で構成される関数であり、スケーリングによってそのスケールを拡大・縮小できる(e1が最大スケール、e10が最小スケールの関数)。
なぜこの例のような基底画像を用いるのかという疑問が生じて当然である。人間がつくり出す画像と言っても、それはその根本原理として自然法則に従っているであろう。そうすると、画像はその根底に自然現象にみられる自己相似性という性格を備えているものと仮定できる。言い換えれば、それは、べき乗則に従っているものと考える。そうであれば、その画像に適用可能な最大スケールから最小スケールまでの基底を用意しておけば、その画像を各基底にその重みを掛けたものの一次結合で表現できるであろう、というところか。
この例に現れる基底を用いて(2)式を書き直すと、
f=c1e1+c2e2+...+c10e10 (4)
となる。
画像fが白黒画像とすると、ciはfが基底eiを用いる回数(あるいはeiの重み)とみなすことができる。
32×32画素で構成される白黒画像として、6×6画素の領域に一つの数字パターンを構成し、このような数字1~9,0,1~6の16個から成る数字の配列を設定した。
この白黒画像について、c1~c10を計数すると、次のようになる。
c1:507,c2:495,c3:521,c4:511,c5:491,
c6:517,c7:483,c8:485,c9:531,c10:517
この数字を見て、初めて気付いた。テキストのような単純な白黒画像であれば、基底画像の数も少ないし、わざわざ基底画像を持ち出すまでもなく、白画素、黒画素のラン・レングスを計数してデータ圧縮する方式が有効であるということを。カラー画像であれば、画素の濃淡値の変化が多彩であるので、画像fを(2)式のように基底画像の一次結合に展開し、重みの小さい基底の成分を削除することによって、画像圧縮する方式が有効になるだろう。
テキスト画像、カラー画像ともに、データ圧縮方式は標準化されていて、これ以上深入りしても面白い成果は得られないような気がする。
今後は、参考文献を参考しながら、「意味のある画像」からなる正規直交基底をつくることによって絵画のような画像を解析できないか検討してみたい。
参考文献
金谷健一著「インターネット時代の数学―重ね合わせの原理と応用」(共立出版)
榊原進著「同上―ウェーブレット」(同上)