【HALCON】phase_correlation_fft 関数について - FFTによる位相相関法の実装
2024-09-06
2024-09-06
HALCON
のphase_correlation_fft
関数は、フーリエ変換(FFT: Fast Fourier Transform)を利用して2つの画像間の平行移動を位相相関法で計算するためのツールです。この関数は、2つの画像が互いにどれだけ平行にシフトしているかを高精度で検出し、画像の位置合わせや動きの検出に使用されます。位相相関法は、画像の変位を効率的に測定できるため、物体追跡や画像の復元において非常に有効です。
phase_correlation_fft 関数の概要
phase_correlation_fft
関数は、2つの画像のフーリエ変換を使って位相相関法を適用し、平行移動(X方向およびY方向)を計算します。位相相関法は、主に画像の変位を求めるために使用され、従来の相関法に比べて計算コストが低く、ノイズに強いという利点があります。これにより、画像の位置合わせや動体検出が効率的に行えます。
基本構文
phase_correlation_fft(ImageFFT1, ImageFFT2, Move)
-
ImageFFT1
最初の画像のフーリエ変換結果。 -
ImageFFT2
2番目の画像のフーリエ変換結果。 -
Move
画像間の平行移動量(X方向とY方向の移動を示す)。
使用方法
以下に、phase_correlation_fft
関数を使って2つの画像間の平行移動を計算する基本的な例を示します。
* 画像の読み込み
read_image(Image1, 'image1.tiff')
read_image(Image2, 'image2.tiff')
* 画像のフーリエ変換を実行
fft_image(Image1, ImageFFT1)
fft_image(Image2, ImageFFT2)
* 位相相関法による平行移動の計算
phase_correlation_fft(ImageFFT1, ImageFFT2, Move)
* 結果の表示
disp_message(WindowHandle, 'Move: ' + Move, 'window', 12, 12, 'black', 'true')
この例では、image1.tiff
とimage2.tiff
という2つの画像を読み込み、それぞれフーリエ変換を適用します。次に、phase_correlation_fft
関数で2つの画像間の平行移動を計算し、結果を画面に表示しています。
応用例
phase_correlation_fft
関数は、以下のような場面で特に有効です。
-
画像の位置合わせ
撮影された2つの画像が互いに平行にずれている場合、そのずれを正確に検出し、画像の位置を合わせることができます。たとえば、異なるタイミングで撮影された画像を比較する場合に有用です。 -
動体検出と物体追跡
物体が画像内でどれだけ移動したかを検出することで、動体追跡や監視システムに応用できます。 -
画像復元や安定化
撮影中に発生したカメラのブレを補正し、画像を安定化させるために使用されます。画像の位置がずれた場合、その移動量を検出し補正することで、クリアな画像を再構築できます。
主な引数
ImageFFT1
: 最初の画像のフーリエ変換結果を指定します。ImageFFT2
: 2番目の画像のフーリエ変換結果を指定します。Move
: 2つの画像間の平行移動量(X方向およびY方向)を出力します。この値を使用して画像の位置合わせや修正を行います。
まとめ
HALCON
のphase_correlation_fft
関数は、フーリエ変換を使用して2つの画像間の平行移動を高精度で検出するための強力なツールです。画像の位置合わせや動体追跡、画像の復元など、多くの画像処理タスクに応用でき、特にノイズの影響を受けにくい高精度な結果が得られます。効率的な画像処理において、重要な役割を果たします。