前々回では、画像をフーリエ変換し、その周波数スペクトルから位相情報を抽出し、逆フーリエ変換することにより、位相画像(輪郭画像のようなもの)を生成しました。
2つの画像があり、この2つの画像の間が「どれぐらいずれているか」(画像のシフト量)を推定しようとする際、この位相画像を用いて推定する方法があります。
「位相限定相関法」(POC; Phase Only Correlation Method)です。
その名のとおり、2つの画像の位相に注目して相関を取り、2つの画像の間の「類似度」を測る方法です。
位相限定相関法の概念については、以下のサイトに分かりやすくまとめられています。
位相限定相関法の処理手順は、以下のようになります。
2つの画像をフーリエ変換し、その周波数スペクトルから位相情報を抽出します。抽出された2つの位相情報から、その畳み込み(合成積)を取り、振幅で正規化します。これを逆フーリエ変換することにより、位相限定相関画像を得ます。
画像Aをfa、画像Bをfbとすると、それぞれの画像の離散フーリエ変換(Discrete Fourier Transform)は、以下の式で表されます。
得られた空間周波数スペクトル(複素平面)同士の畳み込み(合成積)を取り、その振幅の絶対値で除することにより正規化します。
(掛け合わせるもう片方の複素平面は、複素共役とします)
この合成積の複素平面を逆離散フーリエ変換することにより、位相限定相関画像rabを得ます。
この位相限定相関画像におけるピークを示す位置が、そのまま2つの画像のシフト量を表しています。
さっそく、OpenCVで位相限定相関法を試すことにしますが、その前に、評価用の画像として、以下の2つの画像を用意しました。
評価用の画像の原画像(1920×1080)です。