OpenCV 4.5.3(日本語機械翻訳)
関数
Imgproc_motion

関数

CV_EXPORTS_W void cv::accumulate (InputArray src, InputOutputArray dst, InputArray mask=noArray())
画像をアキュムレータ画像に追加します.[【詳解】(英語]
CV_EXPORTS_W void cv::accumulateSquare (InputArray src, InputOutputArray dst, InputArray mask=noArray())
アキュムレータ画像に,入力画像の正方形を追加します.[【詳解】(英語]
CV_EXPORTS_W void cv::accumulateProduct (InputArray src1, InputArray src2, InputOutputArray dst, InputArray mask=noArray())
2つの入力画像の要素毎の積を,アキュムレータ画像に加算します.[【詳解】(英語]
CV_EXPORTS_W void cv::accumulateWeighted (InputArray src, InputOutputArray dst, double alpha, InputArray mask=noArray())
ランニングアベレージを更新します。[【詳解】(英語]
CV_EXPORTS_W Point2d cv::phaseCorrelate (InputArray src1, InputArray src2, InputArray window=noArray(), CV_OUT double *response=0)
この関数は,2つの画像の間に生じる並進方向のずれを検出するために利用されます.[【詳解】(英語]
CV_EXPORTS_W void cv::createHanningWindow (OutputArray dst, Size winSize, int type)
この関数は,2次元のハニング窓の係数を求めます.[【詳解】(英語]
CV_EXPORTS_W void cv::divSpectrums (InputArray a, InputArray b, OutputArray c, int flags, bool conjB=false)
1 番目のフーリエ・スペクトルを 2 番目のフーリエ・スペクトルで要素ごとに分割します。[【詳解】(英語]

詳解

関数詳解

accumulate()

CV_EXPORTS_W void cv::accumulate ( InputArray src,
InputOutputArray dst,
InputArray mask = noArray()
)

画像をアキュムレータ画像に追加します.

この関数は, src またはその一部の要素を dst に追加します.

\[\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

この関数は,マルチチャンネル画像をサポートします.各チャンネルは独立して処理されます.

この関数はcv::accumulateこの関数は,例えば,スチルカメラで撮影されたシーンの背景の統計情報を収集し,さらに前景と背景を分離するために利用できます.

引数
src CV_8UC(n), CV_16UC(n), CV_32FC(n), CV_64FC(n)型の入力画像.
dst 入力画像と同じチャンネル数で,CV_32F または CV_64F の深度を持つアキュムレータ画像.
mask オプションの演算マスク.
参照
accumulateSquare,accumulateProduct,accumulateWeighted

accumulateProduct()

CV_EXPORTS_W void cv::accumulateProduct ( InputArray src1,
InputArray src2,
InputOutputArray dst,
InputArray mask = noArray()
)

2つの入力画像の要素毎の積を,アキュムレータ画像に加算します.

この関数は,2つの画像またはその選択領域の積を,累算器 dst に加えます.

\[\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src1} (x,y) \cdot \texttt{src2} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

この関数は,マルチチャンネル画像をサポートします.各チャンネルは独立して処理されます.

引数
src1 1番目の入力画像,1または3チャンネル,8ビットまたは32ビット浮動小数点.
src2 src1 と同じ種類,同じサイズの2番目の入力画像.
dst 入力画像と同じチャンネル数の累算器画像,32ビットまたは64ビット浮動小数点型.
mask オプションの演算マスク.
参照
accumulate,accumulateSquare,accumulateWeighted

accumulateSquare()

CV_EXPORTS_W void cv::accumulateSquare ( InputArray src,
InputOutputArray dst,
InputArray mask = noArray()
)

アキュムレータ画像に,入力画像の正方形を追加します.

この関数は,入力画像 src またはその選択領域を2の累乗で表したものを,累算器 dst に加えます.

\[\texttt{dst} (x,y) \leftarrow \texttt{dst} (x,y) + \texttt{src} (x,y)^2 \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

この関数は,マルチチャンネル画像をサポートします.各チャンネルは独立して処理されます.

引数
src 1または3チャンネル,8ビットまたは32ビット浮動小数点型の入力画像.
dst 入力画像と同じチャンネル数の累算器画像,32ビットまたは64ビット浮動小数点.
mask オプションの演算マスク.
参照
accumulateSquare,accumulateProduct,accumulateWeighted

accumulateWeighted()

CV_EXPORTS_W void cv::accumulateWeighted ( InputArray src,
InputOutputArray dst,
double alpha,
InputArray mask = noArray()
)

ランニングアベレージを更新します。

この関数は,入力画像 src とアキュムレータ dst の加重和を計算し,dst がフレームシーケンスの走行平均となるようにします.

\[\texttt{dst} (x,y) \leftarrow (1- \texttt{alpha} ) \cdot \texttt{dst} (x,y) + \texttt{alpha} \cdot \texttt{src} (x,y) \quad \text{if} \quad \texttt{mask} (x,y) \ne 0\]

つまり,αは更新速度(アキュムレータが以前の画像を「忘れる」速さ)を調整します.この関数は,マルチチャンネル画像をサポートします.各チャンネルは,独立して処理されます.

引数
src 1または3チャンネル,8ビットまたは32ビット浮動小数点型の入力画像.
dst 入力画像と同じチャンネル数の累算器画像,32ビットまたは64ビット浮動小数点.
alpha 入力画像の重み.
mask オプションの演算マスク.
参照
accumulate,accumulateSquare,accumulateProduct

createHanningWindow()

CV_EXPORTS_W void cv::createHanningWindow ( OutputArray dst,
Size winSize,
int type
)

この関数は,2次元のハニング窓の係数を求めます.

詳しくは (http://en.wikipedia.org/wiki/Hann_function) と (http://en.wikipedia.org/wiki/Window_function)を参照してください.

その例を以下に示します。

// create hanning window of size 100x100 and type CV_32F
Mat hann;
createHanningWindow(hann, Size(100, 100), CV_32F);
n-dimensional dense array class
Definition: mat.hpp:802
Template class for specifying the size of an image or rectangle.
Definition: core/types.hpp:316
CV_EXPORTS_W void createHanningWindow(OutputArray dst, Size winSize, int type)
This function computes a Hanning window coefficients in two dimensions.
引数
dst Hannの係数を置く先の配列
winSize ウィンドウサイズの指定(幅と高さの両方が1以上でなければならない)
type 作成される配列の種類

divSpectrums()

CV_EXPORTS_W void cv::divSpectrums ( InputArray a,
InputArray b,
OutputArray c,
int flags,
bool conjB = false
)

1 番目のフーリエ・スペクトルを 2 番目のフーリエ・スペクトルで要素ごとに分割します。

この関数はcv::divSpectrumsは,1 番目の配列を 2 番目の配列で要素ごとに分割します.配列は,実数または複素数のフーリエ変換の結果である,CCSパックされた行列または複素数の行列です.

引数
a 1番目の入力配列.
b src1 と同じサイズ,同じ型の 2 番目の入力配列.
c src1 と同じサイズ,同じ型の出力配列.
flags 操作フラグ.現在,唯一サポートされているフラグはcv::DFT_ROWSこれは, src1 と src2 の各行が独立した1次元フーリエ変換であることを表します.もしこのフラグを使いたくない場合は,単に0を値として追加してください。
conjB 2番目の入力配列を,乗算の前に共役にするか(true),しないか(false)を指定するオプションフラグ.

phaseCorrelate()

CV_EXPORTS_W Point2d cv::phaseCorrelate ( InputArray src1,
InputArray src2,
InputArray window = noArray(),
CV_OUT double * response = 0
)

この関数は,2つの画像の間に生じる並進方向のずれを検出するために利用されます.

この操作では,フーリエシフト定理を利用して,周波数領域で並進方向のずれを検出します.この関数は,動きの推定だけでなく,高速な画像登録にも利用できます.詳細についてはhttp://en.wikipedia.org/wiki/Phase_correlation

与えられた2つの音源アレイのクロスパワースペクトルを求めます.この配列は,必要ならば getOptimalDFTSize によってパディングされます.

この関数は,次のような式を実行します.

  • まず,各画像にハニング窓(参考http://en.wikipedia.org/wiki/Hann_functionを参照してください)を各画像に適用して,可能性のあるエッジ効果を取り除きます.この窓は,処理時間を短縮するために,配列のサイズが変わるまでキャッシュされます.
  • 次に,各入力配列のForward DFTを計算します.

    \[\mathbf{G}_a = \mathcal{F}\{src_1\}, \; \mathbf{G}_b = \mathcal{F}\{src_2\}\]

    ここで$\mathcal{F}$はForward DFTです。
  • 次に,各周波数領域のアレイのクロスパワースペクトルを計算します.

    \[R = \frac{ \mathbf{G}_a \mathbf{G}_b^*}{|\mathbf{G}_a \mathbf{G}_b^*|}\]

  • 次に,この相互相関を逆DFTによって時間領域に変換します。

    \[r = \mathcal{F}^{-1}\{R\}\]

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

    \[(\Delta x, \Delta y) = \texttt{weightedCentroid} \{\arg \max_{(x, y)}\{r\}\}\]

  • ゼロでない場合,応答パラメータは,ピーク位置の周りの5x5セントロイド内のrの要素の合計として計算されます。これは,最大1(ピークが1つであることを意味します)になるように正規化されており,複数のピークがある場合は小さくなります.
引数
src1 ソースとなる浮動小数点配列(CV_32FC1 または CV_64FC1).
src2 ソースとなる浮動小数点配列(CV_32FC1 または CV_64FC1).
window エッジ効果を軽減するためのウィンドウズ係数を持つ浮動小数点型配列(オプション).
response ピーク周辺の5x5セントロイド内の信号電力,0から1の間で指定します(オプション).
戻り値
2つの配列の間で検出された位相差(サブピクセル).
参照
dft,getOptimalDFTSize,idft,mulSpectrums createHanningWindow