OpenCV 5.0.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 5.0.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
G-API ビデオ処理機能

詳細説明

関数

GMat cv::gapi::BackgroundSubtractor (const GMat &src, const cv::gapi::video::BackgroundSubtractorParams &bsParams)
 ガウス混合モデルベースまたはK近傍法ベースの背景/前景セグメンテーションAlgorithm。この処理は前景マスクを生成する。
 
std::tuple< GArray< GMat >, GScalarcv::gapi::buildOpticalFlowPyramid (const GMat &img, const Size &winSize, const GScalar &maxLevel, bool withDerivatives=true, int pyrBorder=BORDER_REFLECT_101, int derivBorder=BORDER_CONSTANT, bool tryReuseInputImage=true)
 calcOpticalFlowPyrLK に渡すことのできる画像ピラミッドを構築する。
 
std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK (const GArray< GMat > &prevPyr, const GArray< GMat > &nextPyr, const GArray< Point2f > &prevPts, const GArray< Point2f > &predPts, const Size &winSize=Size(21, 21), const GScalar &maxLevel=3, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThresh=1e-4)
 
std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK (const GMat &prevImg, const GMat &nextImg, const GArray< Point2f > &prevPts, const GArray< Point2f > &predPts, const Size &winSize=Size(21, 21), const GScalar &maxLevel=3, const TermCriteria &criteria=TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01), int flags=0, double minEigThresh=1e-4)
 ピラミッドを用いた反復Lucas-Kanade法により、疎な特徴集合に対するオプティカルフローを計算する。
 
GMat cv::gapi::KalmanFilter (const GMat &measurement, const GOpaque< bool > &haveMeasurement, const cv::gapi::KalmanParams &kfParams)
 
GMat cv::gapi::KalmanFilter (const GMat &measurement, const GOpaque< bool > &haveMeasurement, const GMat &control, const cv::gapi::KalmanParams &kfParams)
 標準的なカルマンフィルタアルゴリズム http://en.wikipedia.org/wiki/Kalman_filter
 

関数詳解

◆ BackgroundSubtractor()

GMat cv::gapi::BackgroundSubtractor ( const GMat & src,
const cv::gapi::video::BackgroundSubtractorParams & bsParams )

#include <opencv2/gapi/video.hpp>

ガウス混合ベース、またはK近傍ベースの背景/前景セグメンテーション Algorithm。この操作は前景マスクを生成する。

戻り値
出力画像は前景マスク、すなわち8ビット符号なしのシングルチャンネル(2値)行列 CV_8UC1 である。
覚え書き
機能を表すテキストID は "org.opencv.video.BackgroundSubtractor" である
引数
src入力画像: 浮動小数点フレームをスケーリングせずに使用し、値の範囲は [0,255] であること。
bsParamsBackground Subtractorカーネルの初期化引数のセット。

◆ buildOpticalFlowPyramid()

std::tuple< GArray< GMat >, GScalar > cv::gapi::buildOpticalFlowPyramid ( const GMat & img,
const Size & winSize,
const GScalar & maxLevel,
bool withDerivatives = true,
int pyrBorder = BORDER_REFLECT_101,
int derivBorder = BORDER_CONSTANT,
bool tryReuseInputImage = true )

#include <opencv2/gapi/video.hpp>

calcOpticalFlowPyrLK に渡すことのできる画像ピラミッドを構築する。

覚え書き
関数を表すテキストID は "org.opencv.video.buildOpticalFlowPyramid" である
引数
img8ビット入力画像。
winSizeオプティカルフローアルゴリズムのウィンドウサイズ。calcOpticalFlowPyrLK の winSize 引数以上でなければならない。これはピラミッドの各レベルに必要なパディングを計算するために必要となる。
maxLevel0始まりのピラミッドの最大レベル番号。
withDerivativesピラミッドの各レベルについて勾配を事前計算する場合に設定する。勾配なしでピラミッドが構築された場合、calcOpticalFlowPyrLK が内部でそれらを計算する。
pyrBorderピラミッド層の境界モード。
derivBorder勾配の境界モード。
tryReuseInputImage可能であれば入力画像のROIをピラミッドに含める。false を渡すとデータコピーを強制できる。
戻り値
  • 出力ピラミッド。
  • 構築されるピラミッドのレベル数。maxLevel より少なくなる場合がある。

◆ calcOpticalFlowPyrLK() [1/2]

std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK ( const GArray< GMat > & prevPyr,
const GArray< GMat > & nextPyr,
const GArray< Point2f > & prevPts,
const GArray< Point2f > & predPts,
const Size & winSize = Size(21, 21),
const GScalar & maxLevel = 3,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01),
int flags = 0,
double minEigThresh = 1e-4 )

#include <opencv2/gapi/video.hpp>

これは利便性のために提供されているオーバーロードされたメンバ関数である。上記の関数とは、受け取る引数のみが異なる。

覚え書き
関数を表すテキストID は "org.opencv.video.calcOpticalFlowPyrLKForPyr" である

◆ calcOpticalFlowPyrLK() [2/2]

std::tuple< GArray< Point2f >, GArray< uchar >, GArray< float > > cv::gapi::calcOpticalFlowPyrLK ( const GMat & prevImg,
const GMat & nextImg,
const GArray< Point2f > & prevPts,
const GArray< Point2f > & predPts,
const Size & winSize = Size(21, 21),
const GScalar & maxLevel = 3,
const TermCriteria & criteria = TermCriteria(TermCriteria::COUNT|TermCriteria::EPS, 30, 0.01),
int flags = 0,
double minEigThresh = 1e-4 )

#include <opencv2/gapi/video.hpp>

ピラミッドを用いた反復的なLucas-Kanade法により、疎な特徴セットのオプティカルフローを計算する。

[38] を参照。

覚え書き
関数のテキストIDは "org.opencv.video.calcOpticalFlowPyrLK" である。
引数
prevImg1枚目の8ビット入力画像(GMat)、または buildOpticalFlowPyramid で構築されたピラミッド(GArray<GMat>)。
nextImg2枚目の入力画像(GMat)、または prevImg と同じサイズ・同じ型のピラミッド(GArray<GMat>)。
prevPtsフローを求める対象となる2D点の GArray。点の座標は単精度浮動小数点数でなければならない。
predPtsフロー探索の初期値となる2D点の GArray。OPTFLOW_USE_INITIAL_FLOW フラグが渡された場合にのみ意味を持つ。その場合、ベクトルは入力と同じサイズでなければならない。
winSize各ピラミッドレベルにおける探索ウィンドウのサイズ。
maxLevel0始まりのピラミッドの最大レベル番号。0に設定するとピラミッドは使用されず(単一レベル)、1に設定すると2レベル、以下同様となる。入力にピラミッドが渡された場合、アルゴリズムはピラミッドが持つだけのレベルを使用するが、maxLevel を超えることはない。
criteria反復探索アルゴリズムの終了条件を指定する引数(指定した最大反復回数 criteria.maxCount に達したとき、または探索ウィンドウが criteria.epsilon 未満しか移動しなくなったとき)。
flags操作フラグ:
  • OPTFLOW_USE_INITIAL_FLOW nextPts に格納された初期推定値を使用する。このフラグが設定されていない場合、prevPts が nextPts にコピーされ、初期推定値とみなされる。
  • OPTFLOW_LK_GET_MIN_EIGENVALS 誤差尺度として最小固有値を使用する(minEigThreshold の説明を参照)。このフラグが設定されていない場合、元の点と移動後の点の周辺パッチ間の L1 距離をウィンドウ内のピクセル数で割った値が誤差尺度として使用される。
minEigThreshアルゴリズムは、オプティカルフロー方程式の 2x2 正規行列(この行列は [38] では空間勾配行列と呼ばれる)の最小固有値を、ウィンドウ内のピクセル数で割った値を計算する。この値が minEigThreshold より小さい場合、対応する特徴はフィルタで除外され、そのフローは処理されない。これにより、悪い点を取り除いて性能を向上させることができる。
戻り値
  • 2番目の画像における入力特徴の計算された新しい位置を格納した、2D点(単精度浮動小数点座標)の GArray
  • ステータスの GArray (unsigned char 型)。対応する特徴のフローが見つかった場合、ベクトルの各要素は1に設定され、見つからなかった場合は0に設定される。
  • 誤差の GArray (double 型)。ベクトルの各要素には対応する特徴の誤差が設定される。誤差指標の種類は flags パラメータで設定できる。フローが見つからなかった場合は誤差が定義されない(そのようなケースを見つけるには status パラメータを使用する)。

◆ KalmanFilter() [1/2]

GMat cv::gapi::KalmanFilter ( const GMat & measurement,
const GOpaque< bool > & haveMeasurement,
const cv::gapi::KalmanParams & kfParams )

#include <opencv2/gapi/video.hpp>

これはオーバーロードされたメンバ関数であり、利便性のために提供されている。受け取る引数が上記の関数と異なるだけである。動的システムに制御入力が存在しない、標準的なカルマンフィルタアルゴリズムの場合。この場合、controlMatrix は空であり、制御ベクトルは存在しない。

覚え書き
関数のテキストIDは "org.opencv.video.KalmanFilterNoControl" である。
引数
measurement入力行列: 観測値を含む32ビットまたは64ビット浮動小数点のシングルチャンネル行列。
haveMeasurement特定の反復で観測値を得るかどうかを示す動的な入力フラグ。
kfParamsKalmanフィルタカーネルの初期化引数のセット。
戻り値
出力行列は予測または補正された状態である。32ビットまたは64ビットの浮動小数点1チャンネル行列 CV_32FC1 または CV_64FC1 のいずれかである。
参照
cv::KalmanFilter

◆ KalmanFilter() [2/2]

GMat cv::gapi::KalmanFilter ( const GMat & measurement,
const GOpaque< bool > & haveMeasurement,
const GMat & control,
const cv::gapi::KalmanParams & kfParams )

#include <opencv2/gapi/video.hpp>

標準的なカルマンフィルタアルゴリズム http://en.wikipedia.org/wiki/Kalman_filter

覚え書き
関数のテキストIDは "org.opencv.video.KalmanFilter" である。
引数
measurement入力行列: 観測値を含む32ビットまたは64ビット浮動小数点のシングルチャンネル行列。
haveMeasurement特定の反復で観測値を得るかどうかを示す動的な入力フラグ。
control入力行列: 動的システムを変化させるための制御データを含む32ビットまたは64ビット浮動小数点のシングルチャンネル行列。
kfParamsKalmanフィルタカーネルの初期化引数のセット。
戻り値
出力行列は予測または補正された状態である。32ビットまたは64ビットの浮動小数点1チャンネル行列 CV_32FC1 または CV_64FC1 のいずれかである。

観測行列が与えられた場合(haveMeasurements == true)、cv::KalmanFilter::predict(control) -> cv::KalmanFilter::correct(measurement) というパイプラインに対応する補正された状態が返される。そうでない場合は、cv::KalmanFilter::predict(control) の呼び出しに対応する予測された状態が返される。

参照
cv::KalmanFilter