此項用於儲存和設定魯棒區域性光流(RLOF)演算法的引數。 更多...
#include <opencv2/optflow/rlofflow.hpp>
此項用於儲存和設定魯棒區域性光流(RLOF)演算法的引數。
RLOF 是一種快速區域性光流方法,在 [241] [242] [243] 和 [244] 中有描述,類似於 [37] 提出的金字塔迭代 Lucas-Kanade 方法。更多細節和實驗可在以下論文 [245] 中找到。該實現源自 optflow::calcOpticalFlowPyrLK()。此 RLOF 實現可視為改進的金字塔迭代 Lucas-Kanade 方法,幷包含一系列改進模組。相對於金字塔迭代 Lucas-Kanade 方法,主要改進包括:
- 一個更魯棒的重下降 M 估計器框架(參見 [241]),用於提高運動邊界以及出現和消失畫素處的精度。
- 自適應支援區域策略,以提高運動邊界處的精度,減少光暈效應,即 PLK 在運動/物件邊界處的過度平滑。在 [243] 中提出的基於交叉的分割策略(SR_CROSS)使用簡單的分割方法來獲得支援區域的最佳形狀。
- 為了處理光照變化(室外序列和陰影),基於強度不變性假設的光流方程已採用 Gennert 和 Negahdaripour 光照模型(參見 [244])。此模型可透過 useIlluminationModel 變數啟用/停用。
- 透過使用迭代最佳化中的全域性運動先驗初始化(參見 [244]),可以顯著提高大位移的精度。此初始化可透過 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 | ) -> | 無 |
◆ setGlobalMotionRansacThreshold()
| void cv::optflow::RLOFOpticalFlowParameter::setGlobalMotionRansacThreshold |
( |
float | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setGlobalMotionRansacThreshold( | val | ) -> | 無 |
◆ setLargeWinSize()
| void cv::optflow::RLOFOpticalFlowParameter::setLargeWinSize |
( |
int | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setLargeWinSize( | val | ) -> | 無 |
◆ setMaxIteration()
| void cv::optflow::RLOFOpticalFlowParameter::setMaxIteration |
( |
int | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setMaxIteration( | val | ) -> | 無 |
◆ setMaxLevel()
| void cv::optflow::RLOFOpticalFlowParameter::setMaxLevel |
( |
int | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setMaxLevel( | val | ) -> | 無 |
◆ setMinEigenValue()
| void cv::optflow::RLOFOpticalFlowParameter::setMinEigenValue |
( |
float | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setMinEigenValue( | val | ) -> | 無 |
◆ setNormSigma0()
| void cv::optflow::RLOFOpticalFlowParameter::setNormSigma0 |
( |
float | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setNormSigma0( | val | ) -> | 無 |
◆ setNormSigma1()
| void cv::optflow::RLOFOpticalFlowParameter::setNormSigma1 |
( |
float | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setNormSigma1( | val | ) -> | 無 |
◆ setSmallWinSize()
| void cv::optflow::RLOFOpticalFlowParameter::setSmallWinSize |
( |
int | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setSmallWinSize( | val | ) -> | 無 |
◆ setSolverType()
| void cv::optflow::RLOFOpticalFlowParameter::setSolverType |
( |
SolverType | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setSolverType( | val | ) -> | 無 |
◆ setSupportRegionType()
| void cv::optflow::RLOFOpticalFlowParameter::setSupportRegionType |
( |
SupportRegionType | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setSupportRegionType( | val | ) -> | 無 |
◆ setUseGlobalMotionPrior()
| void cv::optflow::RLOFOpticalFlowParameter::setUseGlobalMotionPrior |
( |
bool | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseGlobalMotionPrior( | val | ) -> | 無 |
◆ setUseIlluminationModel()
| void cv::optflow::RLOFOpticalFlowParameter::setUseIlluminationModel |
( |
bool | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseIlluminationModel( | val | ) -> | 無 |
◆ setUseInitialFlow()
| void cv::optflow::RLOFOpticalFlowParameter::setUseInitialFlow |
( |
bool | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseInitialFlow( | val | ) -> | 無 |
◆ setUseMEstimator()
| void cv::optflow::RLOFOpticalFlowParameter::setUseMEstimator |
( |
bool | val | ) |
|
| Python |
|---|
| cv.optflow.RLOFOpticalFlowParameter.setUseMEstimator( | val | ) -> | 無 |
啟用 M 估計器或停用並使用最小二乘估計器。
透過將 sigma 引數設定為 (3.2, 7.0) 啟用 M 估計器。停用 M 估計器可減少執行時間,而啟用可提高精度。
- 引數
-
| val | 如果為 true,則使用 M 估計器。如果為 false,則使用最小二乘估計器。 |
- 另請參見
- setNormSigma0, setNormSigma1
◆ crossSegmentationThreshold
| int cv::optflow::RLOFOpticalFlowParameter::crossSegmentationThreshold |
根據 [243] 基於交叉分割使用的顏色相似度閾值。(僅當 supportRegionType 為 SR_CROSS 時使用)。透過基於交叉的分割,可以更準確地計算運動邊界。
◆ globalMotionRansacThreshold
| float cv::optflow::RLOFOpticalFlowParameter::globalMotionRansacThreshold |
為了應用全域性運動先驗,運動向量將在規則取樣點上計算,這些取樣點是使用 RANSAC 進行單應性估計的基礎。重投影閾值基於運動向量幅度的第 n 百分位數(由該值 [0 ... 100] 給出)。更多詳情請參見 [244]。
◆ 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 |
[241] 中引入的收縮 Hampel 範數的 &sigma 引數。如果 &sigma = std::numeric_limist<float>::max(),則將使用最小二乘估計器而不是 M 估計器。儘管 M 估計器對支援區域中的異常值更魯棒,但最小二乘法計算速度更快。
◆ normSigma1
| float cv::optflow::RLOFOpticalFlowParameter::normSigma1 |
[241] 中引入的收縮 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 時,請考慮引用 [242]。
◆ supportRegionType
◆ useGlobalMotionPrior
| bool cv::optflow::RLOFOpticalFlowParameter::useGlobalMotionPrior |
全域性運動先驗初始化已在 [244] 中引入。它允許對長距離運動獲得更高的精度。啟用全域性運動先驗初始化會略微增加計算複雜度。
◆ useIlluminationModel
| bool cv::optflow::RLOFOpticalFlowParameter::useIlluminationModel |
使用 Gennert 和 Negahdaripour 光照模型代替強度亮度約束。(在 [244] 中提出)此模型定義如下:
\[ I(\mathbf{x},t) + m \cdot I(\mathbf{x},t) + c = I(\mathbf{x},t+1) \]
幷包含乘法項 m 和加法項 c,這使得估計對光照變化更魯棒。啟用光照模型會增加計算複雜度。
◆ useInitialFlow
| bool cv::optflow::RLOFOpticalFlowParameter::useInitialFlow |
使用下一個點列表作為初始值。良好的初始化可以透過更快的迭代最佳化收斂來提高演算法精度並減少執行時間。
此類的文件是從以下檔案生成的: