OpenCV 4.5.3(日本語機械翻訳)
クラス | 型定義 | 列挙型 | 関数
Optical Flow Algorithms

クラス

class cv::optflow::DualTVL1OpticalFlow
"Dual TV L1" Optical Flow Algorithm.[【詳解】(英語]
class cv::optflow::PCAPrior
このクラスは,結果として得られるオプティカルフローに対して,学習済みの事前情報を与えるために利用できます.解は,この事前情報に基づいて正則化されます.事前に "learn_prior.py" スクリプトを用いて,適切な事前ファイルを生成しておく必要があります.[【詳解】(英語]
class cv::optflow::OpticalFlowPCAFlow
PCAFlow アルゴリズム.[【詳解】(英語]
class cv::optflow::RLOFOpticalFlowParameter
これは、ロバスト・ローカル・オプティカル・フロー(RLOF)アルゴリズ ムのパラメータを保存し、設定するために使用されます。[【詳解】(英語]
class cv::optflow::DenseRLOFOpticalFlow
ロバストな局所オプティカルフロー(RLOF)アルゴリズムと,疎から密への補間スキームに基づく,高速な密なオプティカルフロー計算.[【詳解】(英語]
class cv::optflow::SparseRLOFOpticalFlow
スパースオプティカルフローの計算や,ロバストローカルオプティカルフロー(RLOF)アルゴリズムによる特徴量の追跡に利用されるクラスです.[【詳解】(英語]
struct cv::optflow::GPCPatchDescriptor
struct cv::optflow::GPCPatchSample
class cv::optflow::GPCTrainingSamples
学習サンプルをカプセル化したクラス。[【詳解】(英語]
struct cv::optflow::GPCTrainingParams
トレーニングパラメータをカプセル化したクラス.[【詳解】(英語]
struct cv::optflow::GPCMatchingParams
マッチングパラメータをカプセル化したクラス。[【詳解】(英語]
class cv::optflow::GPCTree
個々の木を表すクラス.[【詳解】(英語]
class cv::optflow::GPCForest< T >
class cv::optflow::GPCDetails

型定義

typedef std::vector< GPCPatchSample > cv::optflow::GPCSamplesVector

列挙型

enum cv::optflow::SupportRegionType { cv::optflow::SR_FIXED = 0 , cv::optflow::SR_CROSS = 1 }
enum cv::optflow::SolverType { cv::optflow::ST_STANDART = 0 , cv::optflow::ST_BILINEAR = 1 }
enum cv::optflow::InterpolationType { cv::optflow::INTERP_GEO = 0 , cv::optflow::INTERP_EPIC = 1 , cv::optflow::INTERP_RIC = 2 }
enum cv::optflow::GPCDescType { cv::optflow::GPC_DESCRIPTOR_DCT = 0 , cv::optflow::GPC_DESCRIPTOR_WHT }
Global Patch Collider用のディスクリプタタイプ.[【詳解】(英語]

関数

CV_EXPORTS_W void cv::optflow::calcOpticalFlowSF (InputArray from, InputArray to, OutputArray flow, int layers, int averaging_block_size, int max_flow)
CV_EXPORTS_W void cv::optflow::calcOpticalFlowSF (InputArray from, InputArray to, OutputArray flow, int layers, int averaging_block_size, int max_flow, double sigma_dist, double sigma_color, int postprocess_window, double sigma_dist_fix, double sigma_color_fix, double occ_thr, int upscale_averaging_radius, double upscale_sigma_dist, double upscale_sigma_color, double speed_up_thr)
SimpleFlow "アルゴリズムを用いてオプティカルフローを計算します。[【詳解】(英語]
CV_EXPORTS_W void cv::optflow::calcOpticalFlowSparseToDense (InputArray from, InputArray to, OutputArray flow, int grid_step=8, int k=128, float sigma=0.05f, bool use_post_proc=true, float fgs_lambda=500.0f, float fgs_sigma=1.5f)
PyrLKスパースマッチ補間に基づく高速高密度オプティカルフロー.[【詳解】(英語]
CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_DeepFlow ()
DeepFlowオプティカルフローアルゴリズムの実装[【詳解】(英語]
CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_SimpleFlow ()
SimpleFlowアルゴリズムへの追加インターフェースcalcOpticalFlowSF()
CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_Farneback ()
Farnebackアルゴリズムへの追加インターフェースcalcOpticalFlowFarneback()
CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_SparseToDense ()
SparseToDenseFlow アルゴリズムへの追加インターフェース -calcOpticalFlowSparseToDense()
CV_EXPORTS_W Ptr< DualTVL1OpticalFlow > cv::optflow::createOptFlow_DualTVL1 ()
のインスタンスを作成します。cv::DenseOpticalFlow
CV_EXPORTS_W void cv::motempl::updateMotionHistory (InputArray silhouette, InputOutputArray mhi, double timestamp, double duration)
シルエットが動くことで、モーションヒストリー画像を更新します。[【詳解】(英語]
CV_EXPORTS_W void cv::motempl::calcMotionGradient (InputArray mhi, OutputArray mask, OutputArray orientation, double delta1, double delta2, int apertureSize=3)
モーションヒストリー画像のグラデーションの向きを計算します。[【詳解】(英語]
CV_EXPORTS_W double cv::motempl::calcGlobalOrientation (InputArray orientation, InputArray mask, InputArray mhi, double timestamp, double duration)
選択された領域におけるグローバルな動きの方向性を計算します。[【詳解】(英語]
CV_EXPORTS_W void cv::motempl::segmentMotion (InputArray mhi, OutputArray segmask, CV_OUT std::vector< Rect > &boundingRects, double timestamp, double segThresh)
モーション履歴画像を、独立した別々の動作に対応するいくつかの部分に分割します(例:左手、右手)。[【詳解】(英語]
CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_PCAFlow ()
PCAFlowのインスタンスを作成する
CV_EXPORTS_W void cv::optflow::calcOpticalFlowDenseRLOF (InputArray I0, InputArray I1, InputOutputArray flow, Ptr< RLOFOpticalFlowParameter > rlofParam=Ptr< RLOFOpticalFlowParameter >(), float forwardBackwardThreshold=0, Size gridStep=Size(6, 6), InterpolationType interp_type=InterpolationType::INTERP_EPIC, int epicK=128, float epicSigma=0.05f, float epicLambda=100.f, int ricSPSize=15, int ricSLICType=100, bool use_post_proc=true, float fgsLambda=500.0f, float fgsSigma=1.5f, bool use_variational_refinement=false)
ロバストな局所オプティカルフロー(RLOF)アルゴリズムと,疎から密への補間スキームに基づく,高速な密なオプティカルフロー計算.[【詳解】(英語]
CV_EXPORTS_W void cv::optflow::calcOpticalFlowSparseRLOF (InputArray prevImg, InputArray nextImg, InputArray prevPts, InputOutputArray nextPts, OutputArray status, OutputArray err, Ptr< RLOFOpticalFlowParameter > rlofParam=Ptr< RLOFOpticalFlowParameter >(), float forwardBackwardThreshold=0)
に似たロバストローカルオプティカルフロー(RLOF)を用いて,疎な特徴セットに対する高速オプティカルフローを計算します.optflow::calcOpticalFlowPyrLK().[【詳解】(英語]
CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_DenseRLOF ()
Dense RLOF アルゴリズムへの追加インターフェイス -optflow::calcOpticalFlowDenseRLOF()
CV_EXPORTS_W Ptr< SparseOpticalFlow > cv::optflow::createOptFlow_SparseRLOF ()
Sparse RLOFアルゴリズムへの追加インターフェース -optflow::calcOpticalFlowSparseRLOF()
void cv::optflow::GPCForest< T >::findCorrespondences (InputArray imgFrom, InputArray imgTo, std::vector< std::pair< Point2i, Point2i > > &corr, const GPCMatchingParams params=GPCMatchingParams()) const
2つの画像間の対応関係を見つける。[【詳解】(英語]

詳解

Dense optical flow algorithms compute motion for each point:

Motion templates is alternative technique for detecting motion and computing its direction. See samples/motempl.py.

Functions reading and writing .flo files in "Middlebury" format, see: http://vision.middlebury.edu/flow/code/flow-code/README.txt

列挙型詳解

GPCDescType

Global Patch Collider用のディスクリプタタイプ.

列挙値
gpc_descriptor_dct

品質は良いが遅い

GPC_DESCRIPTOR_WHT

品質は悪いが、より高速

InterpolationType

列挙値
INTERP_GEO

高速な測地線補間,参照[Geistert2016] を参照してください。

INTERP_EPIC

ximgproc::EdgeAwareInterpolator によるエッジ保存補間。[Revaud2015】を参照してください。],Geistert2016 を参照してください.

INTERP_RIC

ximgproc::RICInterpolatorを用いたSLICベースのロバスト補間、参照[Hu2017] を参照してください。.

SolverType

列挙値
ST_STANDART

標準的な反復精緻化を行う

ST_BILINEAR

で説明されているように、双一次方程式の解法に基づいて最適化された反復精製を適用します。[Senst2013] [Senst2014

SupportRegionType

列挙値
SR_FIXED

一定のサポート領域を適用

SR_CROSS

で説明されているクロスベースのセグメンテーションによって得られた適応的なサポート領域を適用する。[Senst2014] [Senst2014

関数詳解

calcGlobalOrientation()

CV_EXPORTS_W double cv::motempl::calcGlobalOrientation ( InputArray orientation,
InputArray mask,
InputArray mhi,
double timestamp,
double duration
)

選択された領域におけるグローバルな動きの方向性を計算します。

引数
orientation 関数 calcMotionGradient で算出された動きのグラデーション方位画像
mask マスク画像。calcMotionGradient で計算された有効なグラデーションマスクと、方向を計算する必要がある領域のマスクを組み合わせたものかもしれません。
mhi updateMotionHistory によって算出されるモーションヒストリー画像。
timestamp updateMotionHistory に渡される Timestamp。
duration updateMotionHistory に渡される,ミリ秒単位のモーショントラックの最大継続時間.

この関数は、選択された領域における平均的な動きの方向を計算し、0度から360度の間の角度を返します。この平均方向は,mhi に記録されている,最近の動きの重みが大きく,過去に発生した動きの重みが小さい,重み付けされた方位ヒストグラムから計算されます.

calcMotionGradient()

CV_EXPORTS_W void cv::motempl::calcMotionGradient ( InputArray mhi,
OutputArray mask,
OutputArray orientation,
double delta1,
double delta2,
int apertureSize = 3
)

モーションヒストリー画像のグラデーションの向きを計算します。

引数
mhi モーションヒストリーの1チャンネル浮動小数点画像.
mask タイプが CV_8UC1 で, mhi と同じサイズの出力マスク画像.非0の要素は,動きのグラデーションデータが正しいピクセルを示します.
orientation mhi と同じ型,同じサイズの,動き勾配の方位画像を出力します.この画像の各ピクセルは,0°から360°までの動きの方向を表しています.
delta1 画素の近傍における mhi 値の差の最小値(または最大値)。
delta2 1つのピクセル近傍における,mhi の値の差の最大値(あるいは最小値)を求めます.つまり,この関数は,最小 ($m(x,y)$)と最大値($M(x,y)$) の mhi 値を求めます.$3 \times 3$の近傍領域における最小( )と最大( )の mhi値を求め,以下の場合にのみ,その動きの方向をマークします.$(x, y)$の動きの向きを,以下の場合にのみ有効だとマークします

\[\min ( \texttt{delta1} , \texttt{delta2} ) \le M(x,y)-m(x,y) \le \max ( \texttt{delta1} , \texttt{delta2} ).\]

apertureSize Sobel演算子のアパーチャサイズ.

この関数は,各ピクセルにおけるグラデーションの向きを計算します.$(x, y)$となります。

\[\texttt{orientation} (x,y)= \arctan{\frac{d\texttt{mhi}/dy}{d\texttt{mhi}/dx}}\]

実際には,計算された角度が度単位で測定され,0から360の全範囲をカバーするように,fastAtan2とphaseが利用されます.また,計算された角度が有効であるピクセルを示すために,マスクが塗りつぶされます.

覚え書き
  • (Python) モーションテンプレート技術の実行例は、opencv_source_code/samples/python2/motempl.py にあります。

calcOpticalFlowDenseRLOF()

CV_EXPORTS_W void cv::optflow::calcOpticalFlowDenseRLOF ( InputArray I0,
InputArray I1,
InputOutputArray flow,
Ptr< RLOFOpticalFlowParameter > rlofParam = Ptr<RLOFOpticalFlowParameter >(),
float forwardBackwardThreshold = 0,
Size gridStep = Size(6, 6),
InterpolationType interp_type = InterpolationType::INTERP_EPIC,
int epicK = 128,
float epicSigma = 0.05f,
float epicLambda = 100.f,
int ricSPSize = 15,
int ricSLICType = 100,
bool use_post_proc = true,
float fgsLambda = 500.0f,
float fgsSigma = 1.5f,
bool use_variational_refinement = false
)

ロバストな局所オプティカルフロー(RLOF)アルゴリズムと,疎から密への補間スキームに基づく,高速な密なオプティカルフロー計算.

RLOF は,以下の文献に記載されている高速な局所オプティカルフロー手法です.[Senst2012] [Senst2013 [Senst2013] [Senst2014 [Senst2014] [Senst2014および[Senst2016] を参照してください。で提案されているピラミッド型反復ルーカス-カナード法に似ています。[Bouguet00].. 詳細や実験は以下の論文に記載されています。[Senst2019]を参照してください。. に由来する実装です.optflow::calcOpticalFlowPyrLK().

疎から密への補間スキームにより,RLOFを用いて密なオプティカルフローを高速に計算することができます(参照[Geistert2016] を参照してください。). この方式では,以下の手順で計算を行います.

  1. 規則的にサンプリングされたグリッドでシードされた動きベクトルが計算されます.このグリッドのスパース性は、setGridStepで設定できます。
  2. (光学的に)誤った動きのベクトルは、前方後方の信頼度に基づいてフィルタリングされます。閾値は、setForwardBackwardで設定できます。閾値が0以上の場合にのみフィルターが適用されますが、後ろ向きの流れを推定するためにランタイムが2倍になります。
  3. ベクトルフィールド補間は、高密度のベクトルフィールドを得るために、モーションベクトルセットに適用されます。
引数
I0 最初の 8 ビットの入力画像を処理します。クロスベースRLOFを使用する場合(以下を選択することでoptflow::RLOFOpticalFlowParameter::supportRegionType= SupportRegionType::SR_CROSS) 画像は8ビットの3チャンネル画像でなければなりません。
I1 second 8-bit input image. クロスベースRLOFを使用する場合(=SupportRegionType::SR_CROSSを選択)、画像は8ビットの3チャンネル画像でなければならない。optflow::RLOFOpticalFlowParameter::supportRegionType= SupportRegionType::SR_CROSS) 画像は8ビットの3チャンネル画像でなければなりません。
flow I0 と同じサイズで,タイプが CV_32FC2 であるフロー画像が計算されます.
rlofParam 見るoptflow::RLOFOpticalFlowParameter
forwardBackwardThreshold 前方後方信頼度チェックのための閾値.各格子点に対して$ \mathbf{x} $動きベクトル$ d_{I0,I1}(\mathbf{x}) $が計算されます。もし,前方後方の誤差

\[ EP_{FB} = || d_{I0,I1} + d_{I1,I0} || \]

がこの関数で指定された閾値よりも大きい場合,その動きベクトルは次のベクトルフィールド補間では使用されません.$ d_{I1,I0} $は後ろ向きの流れを表します。フォワードバックワードテストは、スレッショルド>0の場合にのみ適用されることに注意してください。これにより、モーション推定のランタイムが2倍になる可能性があります。
gridStep モーションベクトルを生成するためのグリッドのサイズ.各格子点に対して,動きベクトルが計算されます.いくつかのモーションベクトルは、前方後方のしきい値(0以上に設定されている場合)のために削除されます。残りは、ベクトルフィールド補間のベースとなります。
interp_type 密なオプティカルフローの計算に使われる補間手法.2つの補間アルゴリズムがサポートされています.
  • INTERP_GEOは、高速測地線補間を適用します。[Geistert2016] を参照してください。.
  • INTERP_EPIC_RESIDUALは,エッジ保存補間を適用します.[Revaud2015】を参照してください。],Geistert2016 を参照してください.
epicK ximgproc::EdgeAwareInterpolatorを参照してください。それぞれのパラメータを設定します。
epicSigma ximgproc::EdgeAwareInterpolatorを参照してください。それぞれのパラメータを設定します。
epicLambda ximgproc::EdgeAwareInterpolatorを参照してください。それぞれのパラメータを設定します。
ricSPSize ximgproc::RICInterpolator を参照すると,それぞれのパラメータが設定されます.
ricSLICType ximgproc::RICInterpolator を参照すると,それぞれのパラメータが設定されます.
use_post_proc ximgproc::fastGlobalSmootherFilter()パラメータを有効にします。
fgsLambda それぞれのximgproc::fastGlobalSmootherFilter()パラメータを設定します。
fgsSigma それぞれのximgproc::fastGlobalSmootherFilter()パラメータを設定します。
use_variational_refinement を有効にするVariationalRefinement

パラメータについては[Senst2012] [Senst2013,[Senst2013] [Senst2014,[Senst2014] [Senst2014,[Senst2016] を参照してください。. RLOFの設定についてはoptflow::RLOFOpticalFlowParameterを参照してください。

覚え書き
グリッドサイズを(1,1)に設定し、forward backward threshold <= 0に設定すると、密なオプティカルフローフィールドが純粋にRLOFで計算されます。
SIMD並列化はSSE4.1でコンパイルした場合のみ可能です。
なお,出力において,もしI0およびI1の間に対応が見つからない場合はフローは0になります。
参照
optflow::DenseRLOFOpticalFlow,optflow::RLOFOpticalFlowParameter

calcOpticalFlowSF() [1/2]

CV_EXPORTS_W void cv::optflow::calcOpticalFlowSF ( InputArray from,
InputArray to,
OutputArray flow,
int layers,
int averaging_block_size,
int max_flow
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

calcOpticalFlowSF() [2/2]

CV_EXPORTS_W void cv::optflow::calcOpticalFlowSF ( InputArray from,
InputArray to,
OutputArray flow,
int layers,
int averaging_block_size,
int max_flow,
double sigma_dist,
double sigma_color,
int postprocess_window,
double sigma_dist_fix,
double sigma_color_fix,
double occ_thr,
int upscale_averaging_radius,
double upscale_sigma_dist,
double upscale_sigma_color,
double speed_up_thr
)

SimpleFlow "アルゴリズムを用いてオプティカルフローを計算します。

引数
from 1枚目の8ビット3チャンネル画像。
to 前の画像と同じ大きさの2枚目の8ビット3チャンネル画像
flow 前の画像と同じサイズで,タイプが CV_32FC2 である,計算されたフロー画像.
layers レイヤー数
averaging_block_size ピクセルに対するコスト関数を計算する際に,合計するブロックのサイズ
max_flow 各層で探索する最大のフロー
sigma_dist ベクトル スムーズ 空間シグマパラメータ
sigma_color ベクトルスムースカラーシグマパラメータ
postprocess_window 後処理のクロスバイラテラルフィルターのウィンドウサイズ
sigma_dist_fix 後処理のクロスバイラテラルフィルタの空間シグマ
sigma_color_fix 後処理クロスバイラテラルフィルタのカラーシグマ
occ_thr オクルージョン検出用閾値
upscale_averaging_radius バイラテラルアップスケール処理のウィンドウサイズ
upscale_sigma_dist バイラテラルアップスケール処理の空間シグマ
upscale_sigma_color バイラテラルアップスケール処理のカラーシグマ
speed_up_thr 不規則な流れを持つ点を検出するための閾値 - アップスケール後に流れを再計算すべき場所

参照[Tao2012].. また,プロジェクトの現場ではhttp://graphics.berkeley.edu/papers/Tao-SAN-2012-05/.

覚え書き
  • simpleFlowアルゴリズムを用いた例は,samples/simpleflow_demo.cppにあります.

calcOpticalFlowSparseRLOF()

CV_EXPORTS_W void cv::optflow::calcOpticalFlowSparseRLOF ( InputArray prevImg,
InputArray nextImg,
InputArray prevPts,
InputOutputArray nextPts,
OutputArray status,
OutputArray err,
Ptr< RLOFOpticalFlowParameter > rlofParam = Ptr<RLOFOpticalFlowParameter >(),
float forwardBackwardThreshold = 0
)

に似たロバストローカルオプティカルフロー(RLOF)を用いて,疎な特徴セットに対する高速オプティカルフローを計算します.optflow::calcOpticalFlowPyrLK().

RLOF は,以下の文献に記載されている高速な局所オプティカルフロー手法です.[Senst2012] [Senst2013 [Senst2013] [Senst2014 [Senst2014] [Senst2014および[Senst2016] を参照してください。で提案されているピラミッド型反復ルーカス-カナード法に似ています。[Bouguet00].. 詳細や実験は以下の論文に記載されています。[Senst2019]を参照してください。. に由来する実装です.optflow::calcOpticalFlowPyrLK().

引数
prevImg 最初の 8 ビットの入力画像を処理します。クロスベースRLOFを使用する場合(以下を選択することでoptflow::RLOFOpticalFlowParameter::supportRegionType= SupportRegionType::SR_CROSS) 画像は8ビットの3チャンネル画像でなければなりません。
nextImg second 8-bit input image. クロスベースRLOFを使用する場合(=SupportRegionType::SR_CROSSを選択)、画像は8ビットの3チャンネル画像でなければならない。optflow::RLOFOpticalFlowParameter::supportRegionType= SupportRegionType::SR_CROSS) 画像は8ビットの3チャンネル画像でなければなりません。
prevPts フローを求める2次元点のベクトル.点の座標は,単精度浮動小数点数でなければなりません.
nextPts 2番目の画像における入力特徴の計算された新しい位置を含む,(単精度浮動小数点座標の)2次元点の出力ベクトル.optflow::RLOFOpticalFlowParameter::useInitialFlow変数が真の場合,このベクトルは入力と同じサイズでなければならず,初期化点の対応関係が含まれていなければなりません.
status output status vector (of unsigned chars); ベクトルの各要素は,対応する特徴のフローが forward backward チェックに合格した場合に 1 にセットされます.
err ベクトルの各要素には、対応するフィーチャーの forward-backward エラーが設定される。
rlofParam 見るoptflow::RLOFOpticalFlowParameter
forwardBackwardThreshold フォワードバックワード信頼度チェックのしきい値。forewardBackwardThreshold <=0であれば,前方チェックが行われます。
覚え書き
SIMD並列化はSSE4.1でコンパイルした場合のみ可能です。

パラメータについては[Senst2012] [Senst2013,[Senst2013] [Senst2014,[Senst2014] [Senst2014および[Senst2016] を参照してください。. RLOFの設定についてはoptflow::RLOFOpticalFlowParameterを参照してください。

calcOpticalFlowSparseToDense()

CV_EXPORTS_W void cv::optflow::calcOpticalFlowSparseToDense ( InputArray from,
InputArray to,
OutputArray flow,
int grid_step = 8,
int k = 128,
float sigma = 0.05f,
bool use_post_proc = true,
float fgs_lambda = 500.0f,
float fgs_sigma = 1.5f
)

PyrLKスパースマッチ補間に基づく高速高密度オプティカルフロー.

引数
from 1枚目の8ビット3チャンネルまたは1チャンネル画像.
to fromと同じサイズの2枚目の8ビット3チャンネルまたは1チャンネル画像
flow from と同じサイズで, CV_32FC2 型の計算されたフロー画像.
grid_step 疎なマッチング計算で利用される stride.通常,この値を小さくすると,より高い品質が得られますが,アルゴリズムは遅くなります.
k 局所的にアフィンなモデルをフィッティングする際に考慮される,最近接マッチの数.低い値にすると、品質が多少低下する代わりに、アルゴリズムが著しく高速になります。
sigma 局所的に重み付けされたアフィンフィッティングにおいて、重みの減少速度を定義するパラメータ。高い値は細かいディテールを保持するのに役立ち、低い値は出力フローのノイズを取り除くのに役立ちます。
use_post_proc は,補間後の後処理に ximgproc::fastGlobalSmootherFilter() を使うかどうかを定義します.
fgs_lambda ximgproc::fastGlobalSmootherFilter()の各パラメータを参照してください。
fgs_sigma ximgproc::fastGlobalSmootherFilter()の各パラメータを参照してください。

createOptFlow_DeepFlow()

CV_EXPORTS_W Ptr< DenseOpticalFlow > cv::optflow::createOptFlow_DeepFlow ( )

DeepFlowオプティカルフローアルゴリズムの実装

このクラスは、[Weinzaepfel2013]で説明されているDeepFlowオプティカルフローアルゴリズムを実装しています。[Weinzaepfel2013] を参照してください。. こちらもご覧くださいhttp://lear.inrialpes.fr/src/deepmatching/. パラメーター - クラスのフィールド - クラスのインスタンスを作成した後に変更することができます。

  • member float alpha 滑らかさの仮定の重み
  • member float delta 色の恒常性の仮定の重さ
  • member float gamma グラデーション恒常性の重み
  • member float sigma ガウシアンスムージングパラメータ
  • member int minSize ピラミッド内の画像の最小寸法(いずれかの寸法がこのサイズに達するまで、次にピラミッド内のより小さな画像が生成されます)。
  • member float downscaleFactor 画像ピラミッド内でのスケーリングファクター(<1でなければなりません)
  • member int fixedPointIterations ピラミッドの各レベルで何回反復するか
  • member int sorIterations Succesive Over-Relaxation(ソルバー)の反復回数
  • member float omega SORにおける緩和係数

findCorrespondences()

template<int T>
void cv::optflow::GPCForest< T >::findCorrespondences ( InputArray imgFrom,
InputArray imgTo,
std::vector< std::pair< Point2i, Point2i > > & corr,
const GPCMatchingParams params = GPCMatchingParams()
) const

2つの画像間の対応関係を見つける。

引数
[in]. imgFrom シーケンス内の1枚目の画像
[in]. imgTo シーケンス内の2枚目の画像
[out]. corr 対応する点のペアを持つ出力ベクトル
[in]. params 微調整のための追加マッチングパラメーター。

segmentMotion()

CV_EXPORTS_W void cv::motempl::segmentMotion ( InputArray mhi,
OutputArray segmask,
CV_OUT std::vector< Rect > & boundingRects,
double timestamp,
double segThresh
)

モーション履歴画像を、独立した別々の動作に対応するいくつかの部分に分割します(例:左手、右手)。

引数
mhi モーションヒストリー画像。
segmask 見つかったマスクを保存する画像、シングルチャンネル、32ビット浮動小数点。
boundingRects モーション連結成分の ROI を含むベクトル
timestamp 現在の時刻(ミリ秒またはその他の単位)。
segThresh モーション履歴の「ステップ」の間隔以上にすることが推奨される,セグメント化の閾値.

この関数は、すべてのモーションセグメントを見つけ出し、segmaskに個別の値(1,2,...)でマークします。また,モーションに接続されたコンポーネントのROIを含むベクトルを計算します.その後,calcGlobalOrientation を用いて,特定のコンポーネントの抽出されたマスクを利用して,各コンポーネントの動きの方向を計算することができます.

updateMotionHistory()

CV_EXPORTS_W void cv::motempl::updateMotionHistory ( InputArray silhouette,
InputOutputArray mhi,
double timestamp,
double duration
)

シルエットが動くことで、モーションヒストリー画像を更新します。

引数
silhouette 動きが発生した部分のピクセルが0ではないシルエットマスク。
mhi この関数によって更新されるモーションヒストリー画像(シングルチャンネル,32 ビット浮動小数点).
timestamp 現在の時刻(ミリ秒またはその他の単位)。
duration timestamp と同じ単位で表される,モーショントラックの最大継続時間.

この関数は,以下のように動き履歴画像を更新する.

\[\texttt{mhi} (x,y)= \forkthree{\texttt{timestamp}}{if \‍(\texttt{silhouette}(x,y) \ne 0\‍)}{0}{if \‍(\texttt{silhouette}(x,y) = 0\‍) and \‍(\texttt{mhi} < (\texttt{timestamp} - \texttt{duration})\‍)}{\texttt{mhi}(x,y)}{otherwise}\]

つまり,動きが発生したMHIピクセルには,現在のtimestampが設定され,前回かなり前に動きが発生したピクセルはクリアされます.

この関数は, calcMotionGradient や calcGlobalOrientation と共に,以下で説明されているモーションテンプレート技術を実装しています。[Davis97]やおよび[Bradski00].