写真内の相互情報量

さて、画像処理では区分的に滑らかであるという仮定をよく用います。これは我々から見た世界が大方はっきりした境界を持つ物体と透明な空気によって成りなっているという(まっとうな)前提から導かれます。で、多くの場合(主にCG)もっとてきとうに、とりあえずbilinear補間使おうとか、Mitchellフィルタかけておこう、となるわけです。

さて、実際の画像はどうなっているのでしょうか?ここでは画像内の全てのピクセルの組み合わせについて相互情報量を計算することで、ある点が近くの別の点にどのぐらい影響を及ぼすか、ということを調べて見ることにします。基底の形に直接対応するわけではありませんが、参考程度にはなるでしょう。

というわけで、前(Scene Completion Using Millions of Photographs)にも使った、flickrから持ってきた風景写真10万枚ほどを次のように処理します。

  1. アスペクト比が1.3から1.4に収まってるものを選ぶ
  2. 40x30に縮小
  3. RGBからL*a*b*に変換後、L*を16階調に量子化
  4. 全てのピクセル対について、16x16でヒストグラム作成

もにょもにょっとすると相互情報量が計算できます。有効な(1の条件を満たす)画像数は62498枚でした。自分自身との相互情報量が最大で、これは高々4bitになります。

(青〜赤 : 0bit〜4bit)
拡大してみると、赤い点があるのが分かります。とはいえほとんど真っ青なので、スケールを変えてみましょう。

(青〜赤 : 0bit〜1bit+)
まず目につくのは上下に帯状に見られる横に長い形です。これは空と地面に対応していると言えるでしょう。で、真ん中のほうは円対称かというとそうでもなく、ちょっと+っぽい形をしています。これはやはり鉛直方向と写真の向きを合わせているからでしょうか?

ちょっと離れてみると、心なしか右のほうが赤っぽいように感じます。これは利き手の偏りと関係があるのでしょうか。今回はflickrから引っ張ってきたのである程度「写真」として、それなりの芸術性が含まれているとは思うのですが、もし無意識に右側(利き手の側?)に物体が来るような姿勢を取るのであればおもしろいことです。