OpenCVという画像処理ライブラリのリファレンスマニュアルを眺めていたところ、cvLogPolarという関数が目に入りました。サンプルプログラムの処理結果画像を見ると元の画像がグニョグニョに変形しており、これはいったい何に使うためのものだろうかと思いつつ、その説明を読むと「画像を対数極座標空間に再マッピングする。… この関数は人間の網膜をモデル化したものであり,オブジェクトトラッキング等のための高速なスケーリングと,回転に不変なテンプレートマッチングに用いることができる。」と書かれておりました。
ふーん…。ハッ! 網膜のモデル化ですとな!!
MacにOpenCVをインストールしてサンプルプログラムがビルドして動くように四苦八苦しながら環境構築してから(ゼロからMakefileを作るときにCC=gccを忘れるとカオスです)、画像を対数極座標空間に再マッピングして保存するプログラムと、その逆をやるプログラムの2本をちょいちょいと作って、実験開始です。
元の画像。OpenCVのサンプル画像と言えばこれ。
対数極座標空間に再マッピング。グニョグニョ。
ギザギザのノイズを書き込んでみる。適当なツールがないのでマウスで手書き。
直交座標空間に戻してみる。
おお! やはり!! 片頭痛の前触れでやってくる閃輝暗点の形状にそっくりです(個人的感想)。本物はギザギザが虹色に高速点滅してるけども。あの前兆って、やっぱり、目から入ってきた情報を脳で組み立て直すときに起きてるってことですかねぇ。しかも、最初は小さくて時間がたつとだんだん広がって視野の外に消えていくので、この極座標上では左側から右側にギザギザ棒が移動しているってことなのかしらね。
というわけで、光の歯車の現象を根拠なしの無理矢理なデジタル変換で表現してみるというネタでした。