これはロバスト局所オプティカルフロー (RLOF) アルゴリズムの引数を格納および設定するために使用される。 続き...
#include <opencv2/optflow/rlofflow.hpp>
ロバスト局所オプティカルフロー (RLOF) アルゴリズムの引数を格納・設定するために使用される。
RLOF は [247] [248] [249] [250] で説明されている高速な局所オプティカルフロー手法であり、[38] で提案されたピラミッド型反復 Lucas-Kanade 法に類似している。さらなる詳細と実験は次の論文 [251] に記載されている。実装は optflow::calcOpticalFlowPyrLK() から派生したものである。この RLOF 実装は、改良されたピラミッド型反復 Lucas-Kanade と見なすことができ、一連の改良モジュールを含む。ピラミッド型反復 Lucas-Kanade に対する主な改良点は次のとおりである:
- より頑健な再下降 M 推定器のフレームワーク([247] を参照)により、動き境界や出現・消失するピクセルにおける精度を向上させる。
- 動き境界における精度を向上させてコロナ効果(すなわち動き/物体境界における PLK の過平滑化)を低減するための、適応的サポート領域戦略。[249] で提案されたクロスベースのセグメンテーション戦略 (SR_CROSS) は、単純なセグメンテーション手法を用いてサポート領域の最適な形状を得る。
- 照明変化(屋外シーケンスや影)に対処するため、強度一定性の仮定に基づくオプティカルフロー方程式に Gennert と Negahdaripour の照明モデル([250] を参照)を採用した。このモデルは useIlluminationModel 変数でオン/オフを切り替えられる。
- 大域的な動き事前分布による初期化([250] を参照)を反復的な改良に用いることで、大きな変位に対する精度を大幅に向上できた。この初期化は 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 |
[249] に従ってクロスベースのセグメンテーションで使用される色類似度のしきい値。(supportRegionType が SR_CROSS の場合のみ使用される)。クロスベースのセグメンテーションを用いると、動き境界をより正確に計算できる。
◆ globalMotionRansacThreshold
| float cv::optflow::RLOFOpticalFlowParameter::globalMotionRansacThreshold |
大域的な動き事前分布を適用するため、規則的にサンプリングされた点上で動きベクトルを計算し、これを RANSAC を用いたホモグラフィ推定の基礎とする。再投影しきい値は、動きベクトルの大きさの第 n 百分位数(この値 [0 ... 100] で与えられる)に基づく。詳細については [250] を参照のこと。
◆ 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 |
[247] で導入された縮小Hampelノルムの &sigma パラメータ。&sigma = std::numeric_limist<float>::max() の場合、M推定量の代わりに最小二乗推定量が使用される。M推定量はサポート領域内の外れ値に対してよりロバストだが、最小二乗の方が計算が高速である。
◆ normSigma1
| float cv::optflow::RLOFOpticalFlowParameter::normSigma1 |
[247] で導入された縮小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 を使用する場合は [248] の引用を検討すること。
◆ supportRegionType
サポート領域の形状抽出または縮小戦略を指定する変数。
◆ useGlobalMotionPrior
| bool cv::optflow::RLOFOpticalFlowParameter::useGlobalMotionPrior |
大域的な動き事前分布による初期化の使用は [250] で導入された。これにより長距離の動きに対してより高い精度が得られる。大域的な動き事前分布による初期化を有効にすると計算量がわずかに増加する。
◆ useIlluminationModel
| bool cv::optflow::RLOFOpticalFlowParameter::useIlluminationModel |
輝度の明るさ制約の代わりにGennertおよびNegahdaripourの照明モデルを使用する。([250] で提案された。)このモデルは次のように定義される。
\[ I(\mathbf{x},t) + m \cdot I(\mathbf{x},t) + c = I(\mathbf{x},t+1) \]
また、乗算項 m と加算項 c を含み、照明変化に対して推定をよりロバストにする。照明モデルを有効にすると計算量が増加する。
◆ useInitialFlow
| bool cv::optflow::RLOFOpticalFlowParameter::useInitialFlow |
次の点のリストを初期値として使用する。良好な初期化はアルゴリズムの精度を改善し、反復精緻化の収束を速めることで実行時間を短縮できる。
このクラス詳解は次のファイルから抽出されました: