前回の位相画像を用いた相関方法をやります。


参考サイトはこちら

計算の仕方は位相画像のように行いますが、
相関を計算する際に画像Gの方を複素共役とります。


fを画像その1、gを画像その2としてます。
Tex2Img_1345873619.png

Tex2Img_1346229170.png

POC

そして、Rを逆フーリエ変換すれば求められます。
他の相関方法よりもするどいピークが出るようです。



【ソース】

今回も、楽だったのでOctaveで書いてます(;´∀`)


function [py px maxval CPOC] = POC(A, At)
	B=fft2(A);
	Bt=conj(fft2(At));

	FFTR = B.*Bt;
	FFTRN = (FFTR./abs(FFTR));

	CPOC = real(ifft2(FFTRN));
	[py,px maxval] = max2d(CPOC);
	py = py - 1;
	px = px - 1;
	%printf("move (%d,%d)\n", px-1, py-1);
ちなみに、max2dは自前の関数です。
以下のように最大値とどの場所にあるかを示すようなっています。


function [py,px maxintensity] = max2d(data)
% search max value and (x,y) in 2D matrix
	[mm,x] = max(data);
	[mx,y] = max(mm);

	maxintensity = mx;
	py = x(y);
	px = y;



【テスト結果】

画像はnashruddin.com - Phase Correlation in OpenCVさんから拝借したもので、行いました。


結果は以下のようになるようです。

相関値:0.6344
移動距離:(6,15)


【入力画像】
1.jpg 2.jpg



【位相限定相関のグラフ】
graph.png

上の、位相限定相関のグラフのピークの場所の値と座標を取得します。
私が計算した結果は、

相関値:0.62530
移動距離:(6,15)

となり相関値が若干違いましたが、正解でした。
ノイズにも強い手法らしいので。便利そうです。

Related Entries
Comments
Post a comment
Contributor
Comment
Trackbacks URL
URL
Permalink
Trackbacks
FC2カウンター
プロフィール

詠み人知らず

Author:詠み人知らず
プログラム好きな名もなき凡人がお送りしています。(得意とは言っていない
最近の興味はPython、C#、Matlab(Octave)、画像処理、AR(拡張現実)、統計などなど・・・

気分で思いついたことを書くため話題に一貫性がないかもしれません。

カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
最新記事
タグクラウドとサーチ

カテゴリ
最新コメント
最新トラックバック
月別アーカイブ