前回までの検証で、位相限定相関法により、2つの画像の上下方向(ティルト)と左右方向(パン)のズレを推定するとともに、風呂の中で思い付いた方法により、回転方向(ロール)のズレを推定し、補正してみました。
しかし、よくよく考えてみると(よくよく考えなくても)、画像Aと画像Bは、まったく同じ画像を合成していることが分かりました。
#画像Bは、より実際の画像に近づいたように見えましたが、画像Aの左と右の画像をそれぞれ同じ角度だけ回転させ、位相限定相関法により合成しているため、2つの画像の間の回転方向のズレは補正されていません。
では、2つの画像があり、この2つの画像の間の回転方向のズレ(画像のロール角)を推定するには、どのようにすれば良いでしょうか。
すぐに思い付くのは、2つの画像を少しずつ回転させ、位相限定相関法により、2つの画像の間の相関係数が最も高くなる角度を拾う方法があります。
しかし、この方法では、分解能を1°とすると、180回も計算しなければならず、とても実時間には間に合いません。仮に二分法が上手くいくとしても、9回も計算しなければなりません。
なにか上手い方法がないかと探していたところ、「対数極座標変換」(Log-Polar Transform)という方法があることが分かりました。
これは、霊長類の視覚の「中心視」をモデル化したものです。(なぜに「中心視」なのかは、後ほど)
対数極座標変換は、以下のような式で表されます。

変換後の画像は、変換前の画像のどの画素に対応するかを計算することから、上記の式を逆変換すると、以下のようになります。

さっそく、評価用の画像を対数極座標変換してみます。

原画像(512×512)。

変換後の画像。
縦方向にグニャ~っとなっていますが、原画像がなんとなく推測できそうなところと、まったく推測できないところがあります。