これはロバスト局所オプティカルフロー (RLOF) アルゴリズムの引数を格納および設定するために使用される。 続き...
#include <opencv2/optflow/rlofflow.hpp>
ロバスト局所オプティカルフロー (RLOF) アルゴリズムの引数を格納・設定するために使用される。
RLOFは [244] [245] [246] および [247] で説明されている高速な局所オプティカルフロー手法であり、[38] で提案されているピラミッド型反復Lucas-Kanade法に類似している。詳細と実験は以下の学位論文 [248] に記載されている。この実装は optflow::calcOpticalFlowPyrLK() から派生したものである。このRLOF実装は改良されたピラミッド型反復Lucas-Kanadeとみなすことができ、複数の改良モジュールを含んでいる。ピラミッド型反復Lucas-Kanadeに対する主な改良点は次のとおりである:
- 動き境界や出現・消失するピクセルにおける精度を改善するための、よりロバストな再降下型M推定器フレームワーク([244] を参照)。
- 動き境界での精度を改善し、コロナ効果、すなわち動き/物体境界におけるPLKの過平滑化を低減するための、適応的サポート領域戦略。[246] で提案されたクロスベースのセグメンテーション戦略 (SR_CROSS) は、サポート領域の最適な形状を得るために単純なセグメンテーション手法を用いる。
- 照明変化(屋外シーンや影)に対処するため、輝度一定性の仮定に基づくオプティカルフロー方程式に、Gennert and Negahdaripourの照明モデルが採用されている([247] を参照)。このモデルは useIlluminationModel 変数によってオン/オフを切り替えられる。
- 反復精緻化に対する大域的動き事前分布の初期化([247] を参照)を用いることで、大きな変位に対する精度を大幅に改善できる。この初期化は useGlobalMotionPrior 変数によってオン/オフを切り替えられる。
RLOFは、特徴の集合を追跡するための SparseOpticalFlow クラスまたは関数インターフェースを用いて、あるいは密なオプティカルフローを計算するための DenseOpticalFlow クラスまたは関数インターフェースを用いて計算できる。
- 参照
- optflow::DenseRLOFOpticalFlow, optflow::calcOpticalFlowDenseRLOF(), optflow::SparseRLOFOpticalFlow, optflow::calcOpticalFlowSparseRLOF()
◆ RLOFOpticalFlowParameter()
| cv::optflow::RLOFOpticalFlowParameter::RLOFOpticalFlowParameter |
( |
| ) |
|
|
inline |
◆ create()
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.create( | | ) -> | retval |
| cv.optflow.RLOFOpticalFlowParameter_create( | | ) -> | retval |
◆ getCrossSegmentationThreshold()
| int cv::optflow::RLOFOpticalFlowParameter::getCrossSegmentationThreshold |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getCrossSegmentationThreshold( | | ) -> | retval |
◆ getGlobalMotionRansacThreshold()
| float cv::optflow::RLOFOpticalFlowParameter::getGlobalMotionRansacThreshold |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getGlobalMotionRansacThreshold( | | ) -> | retval |
◆ getLargeWinSize()
| int cv::optflow::RLOFOpticalFlowParameter::getLargeWinSize |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getLargeWinSize( | | ) -> | retval |
◆ getMaxIteration()
| int cv::optflow::RLOFOpticalFlowParameter::getMaxIteration |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getMaxIteration( | | ) -> | retval |
◆ getMaxLevel()
| int cv::optflow::RLOFOpticalFlowParameter::getMaxLevel |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getMaxLevel( | | ) -> | retval |
◆ getMinEigenValue()
| float cv::optflow::RLOFOpticalFlowParameter::getMinEigenValue |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getMinEigenValue( | | ) -> | retval |
◆ getNormSigma0()
| float cv::optflow::RLOFOpticalFlowParameter::getNormSigma0 |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getNormSigma0( | | ) -> | retval |
◆ getNormSigma1()
| float cv::optflow::RLOFOpticalFlowParameter::getNormSigma1 |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getNormSigma1( | | ) -> | retval |
◆ getSmallWinSize()
| int cv::optflow::RLOFOpticalFlowParameter::getSmallWinSize |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getSmallWinSize( | | ) -> | retval |
◆ getSolverType()
| SolverType cv::optflow::RLOFOpticalFlowParameter::getSolverType |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getSolverType( | | ) -> | retval |
◆ getSupportRegionType()
| SupportRegionType cv::optflow::RLOFOpticalFlowParameter::getSupportRegionType |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getSupportRegionType( | | ) -> | retval |
◆ getUseGlobalMotionPrior()
| bool cv::optflow::RLOFOpticalFlowParameter::getUseGlobalMotionPrior |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getUseGlobalMotionPrior( | | ) -> | retval |
◆ getUseIlluminationModel()
| bool cv::optflow::RLOFOpticalFlowParameter::getUseIlluminationModel |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getUseIlluminationModel( | | ) -> | retval |
◆ getUseInitialFlow()
| bool cv::optflow::RLOFOpticalFlowParameter::getUseInitialFlow |
( |
| ) |
const |
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.getUseInitialFlow( | | ) -> | retval |
◆ setCrossSegmentationThreshold()
| void cv::optflow::RLOFOpticalFlowParameter::setCrossSegmentationThreshold |
( |
int | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setCrossSegmentationThreshold( | val | ) -> | None |
◆ setGlobalMotionRansacThreshold()
| void cv::optflow::RLOFOpticalFlowParameter::setGlobalMotionRansacThreshold |
( |
float | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setGlobalMotionRansacThreshold( | val | ) -> | None |
◆ setLargeWinSize()
| void cv::optflow::RLOFOpticalFlowParameter::setLargeWinSize |
( |
int | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setLargeWinSize( | val | ) -> | None |
◆ setMaxIteration()
| void cv::optflow::RLOFOpticalFlowParameter::setMaxIteration |
( |
int | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setMaxIteration( | val | ) -> | None |
◆ setMaxLevel()
| void cv::optflow::RLOFOpticalFlowParameter::setMaxLevel |
( |
int | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setMaxLevel( | val | ) -> | None |
◆ setMinEigenValue()
| void cv::optflow::RLOFOpticalFlowParameter::setMinEigenValue |
( |
float | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setMinEigenValue( | val | ) -> | None |
◆ setNormSigma0()
| void cv::optflow::RLOFOpticalFlowParameter::setNormSigma0 |
( |
float | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setNormSigma0( | val | ) -> | None |
◆ setNormSigma1()
| void cv::optflow::RLOFOpticalFlowParameter::setNormSigma1 |
( |
float | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setNormSigma1( | val | ) -> | None |
◆ setSmallWinSize()
| void cv::optflow::RLOFOpticalFlowParameter::setSmallWinSize |
( |
int | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setSmallWinSize( | val | ) -> | None |
◆ setSolverType()
| void cv::optflow::RLOFOpticalFlowParameter::setSolverType |
( |
SolverType | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setSolverType( | val | ) -> | None |
◆ setSupportRegionType()
| void cv::optflow::RLOFOpticalFlowParameter::setSupportRegionType |
( |
SupportRegionType | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setSupportRegionType( | val | ) -> | None |
◆ setUseGlobalMotionPrior()
| void cv::optflow::RLOFOpticalFlowParameter::setUseGlobalMotionPrior |
( |
bool | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseGlobalMotionPrior( | val | ) -> | None |
◆ setUseIlluminationModel()
| void cv::optflow::RLOFOpticalFlowParameter::setUseIlluminationModel |
( |
bool | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseIlluminationModel( | val | ) -> | None |
◆ setUseInitialFlow()
| void cv::optflow::RLOFOpticalFlowParameter::setUseInitialFlow |
( |
bool | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseInitialFlow( | val | ) -> | None |
◆ setUseMEstimator()
| void cv::optflow::RLOFOpticalFlowParameter::setUseMEstimator |
( |
bool | val | ) |
|
| Python: |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseMEstimator( | val | ) -> | None |
M推定器を有効にするか、無効にして最小二乗推定器を使用する。
シグマパラメータを (3.2, 7.0) に設定してM推定器を有効にする。M推定器を無効にすると実行時間を短縮でき、有効にすると精度を改善できる。
- 引数
-
| val | true の場合は M推定量が使用される。false の場合は最小二乗推定量が使用される。 |
- 参照
- setNormSigma0, setNormSigma1
◆ crossSegmentationThreshold
| int cv::optflow::RLOFOpticalFlowParameter::crossSegmentationThreshold |
[246] に従ったクロスベースのセグメンテーションで使用される色類似度のしきい値。(supportRegionType が SR_CROSS の場合のみ使用される)。クロスベースのセグメンテーションにより、動き境界をより正確に計算できる。
◆ globalMotionRansacThreshold
| float cv::optflow::RLOFOpticalFlowParameter::globalMotionRansacThreshold |
大域的動き事前分布を適用するため、規則的にサンプリングされた点上で動きベクトルが計算され、これがRANSACを用いたホモグラフィ推定の基礎となる。再投影しきい値は、動きベクトルの大きさのn番目のパーセンタイル(この値 [0 ... 100] で与えられる)に基づく。詳細は [247] を参照。
◆ largeWinSize
| int cv::optflow::RLOFOpticalFlowParameter::largeWinSize |
サポート領域の最大ウィンドウサイズ。supportRegionType が SR_FIXED の場合、これが正確なサポート領域サイズを与える。RLOFの速度は適用されるウィンドウサイズに関係する。ウィンドウサイズが小さいほど実行時間は短くなるが、その分ノイズに敏感になる。
◆ maxIteration
| int cv::optflow::RLOFOpticalFlowParameter::maxIteration |
反復精緻化に用いられる最大反復回数。値を小さくすると実行時間を短縮できるが、精度も低下する。
◆ maxLevel
| int cv::optflow::RLOFOpticalFlowParameter::maxLevel |
使用するピラミッドレベルの最大数。この値が大きいほど、長距離の動きに対して正確な解が得られやすくなる。実行時間はこのパラメータに線形に関係する。
◆ minEigenValue
| float cv::optflow::RLOFOpticalFlowParameter::minEigenValue |
勾配行列の最小固有値に対するしきい値。反復精緻化を打ち切るタイミングを定める。
◆ normSigma0
| float cv::optflow::RLOFOpticalFlowParameter::normSigma0 |
[244] で導入された縮小Hampelノルムの &sigma パラメータ。&sigma = std::numeric_limist<float>::max() の場合、M推定器の代わりに最小二乗推定器が使用される。M推定器はサポート領域内の外れ値に対してよりロバストであるが、最小二乗は計算が高速である。
◆ normSigma1
| float cv::optflow::RLOFOpticalFlowParameter::normSigma1 |
[244] で導入された縮小Hampelノルムの &sigma パラメータ。&sigma = std::numeric_limist<float>::max() の場合、M推定器の代わりに最小二乗推定器が使用される。M推定器はサポート領域内の外れ値に対してよりロバストであるが、最小二乗は計算が高速である。
◆ smallWinSize
| int cv::optflow::RLOFOpticalFlowParameter::smallWinSize |
サポート領域の最小ウィンドウサイズ。このパラメータは supportRegionType が SR_CROSS の場合にのみ使用される。
◆ solverType
| SolverType cv::optflow::RLOFOpticalFlowParameter::solverType |
反復精緻化の戦略を指定する変数。ST_BILINEAR を使用する際は [245] の引用を検討すること。
◆ supportRegionType
サポート領域の形状抽出または縮小戦略を指定する変数。
◆ useGlobalMotionPrior
| bool cv::optflow::RLOFOpticalFlowParameter::useGlobalMotionPrior |
大域的動き事前分布の初期化を使用する。[247] で導入された。長距離の動きに対してより正確になる。大域的動き事前分布の初期化を有効にすると計算量がわずかに増加する。
◆ useIlluminationModel
| bool cv::optflow::RLOFOpticalFlowParameter::useIlluminationModel |
輝度一定制約の代わりに、Gennert and Negahdaripourの照明モデルを使用する。([247] で提案)このモデルは次のように定義される:
\[ I(\mathbf{x},t) + m \cdot I(\mathbf{x},t) + c = I(\mathbf{x},t+1) \]
また、乗算項 m と加算項 c を含み、照明変化に対して推定をよりロバストにする。照明モデルを有効にすると計算量が増加する。
◆ useInitialFlow
| bool cv::optflow::RLOFOpticalFlowParameter::useInitialFlow |
次の点のリストを初期値として使用する。良好な初期化はアルゴリズムの精度を改善し、反復精緻化の収束を速めることで実行時間を短縮できる。
このクラス詳解は次のファイルから抽出されました: