imgproc_phaseCorrelate

[32/64bit] この関数は,2つの画像間で起こる並進方向のズレを検出するために利用されます.

imgproc_phaseCorrelate p1,p2,p3,p4,p5

p1 = sptr : IntPtr src1
p2 = sptr : IntPtr src2
p3 = sptr : IntPtr window
p4 = var : out double response
p5 = var : out Point2d returnValue

(プラグイン / モジュール : OpenCvSharpExtern.dll)

解説

この操作は,周波数領域で並進シフトを検出するためのフーリエシフト定理を利用しています.これは、動きの推定だけでなく、高速な画像登録にも使用できます。詳しくは http://en.wikipedia.org/wiki/Phase_correlationCalculates the cross-power spectrum of two supplied source arrays をご覧ください。この関数は,次のような処理を行います:まず,各画像に対してハニング窓( http://en.wikipedia.org/wiki/Hann_function を参照してください)を適用し,可能性のあるエッジ効果を取り除きます.この窓は,処理時間を短縮するために,配列のサイズが変わるまでキャッシュされます.


次に,各ソース配列のForward DFTを計算します.


\次のように計算します。





 ここで,\(mathcal{F}\)はForward DFTである.


次に、各周波数領域のアレイのクロスパワースペクトルを計算します。


\R = ????? )








次に、この相互相関を逆DFTにより時間領域に変換します。


\r = ???´Д`???








最後に、ピークの位置を計算し、サブピクセルの精度を実現するために、ピークの周りに5x5の加重セントロイドを計算します。


\♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪\max{(x, y)}\{r\}\]となります。








0でない場合,応答パラメータは,ピーク位置の周りの5x5セントロイド内のrの要素の合計として計算されます.これは,最大値が1(ピークが1つの場合)になるように正規化され,複数のピークがある場合は小さくなります. 参照:odft, getOptimalDFTSize, idft, mulSpectrums createHanningWindow

元関数名(C#): imgproc_phaseCorrelate
元DLLエクスポート名: imgproc_phaseCorrelate
参照元CSファイル: Internal\PInvoke\NativeMethods\imgproc\NativeMethods_imgproc.cs
▼ C言語側関数定義
CVAPI(ExceptionStatus) imgproc_phaseCorrelate(cv::_InputArray *src1, cv::_InputArray *src2,
                                              cv::_InputArray *window, double* response, MyCvPoint2D64f* returnValue)
{
    BEGIN_WRAP
    const auto p = cv::phaseCorrelate(*src1, *src2, *window, response);
    *returnValue = { p.x, p.y };
    END_WRAP
}

情報

プラグイン / モジュールOpenCvSharpExtern.dll
バージョン1.00
作成日2021/11/30
著作者inovia
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_imgproc
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs