用于存储和设置鲁棒局部光流 (RLOF) 算法的参数。更多…
#include <opencv2/optflow/rlofflow.hpp>
用于存储和设置鲁棒局部光流 (RLOF) 算法的参数。
RLOF 是一种快速局部光流方法,在 [238] [239] [240] 和 [241] 中进行了描述,类似于 Bouguet 提出的金字塔迭代 Lucas-Kanade 方法 [36]。更多细节和实验可以在以下论文中找到 [242]。该实现源自 optflow::calcOpticalFlowPyrLK()。此 RLOF 实现可以看作是改进的金字塔迭代 Lucas-Kanade,并包含一组改进模块。相对于金字塔迭代 Lucas-Kanade 的主要改进是:
- 更鲁棒的重新下降 M 估计器框架(见 [238]),以提高运动边界以及出现和消失像素的精度。
- 自适应支持区域策略,以提高运动边界处的精度,以减少晕轮效应,即在运动/物体边界处 PLK 的过度平滑。 [240] 中提出的基于十字的分割策略 (SR_CROSS) 使用一种简单的分割方法来获得支持区域的最佳形状。
- 为了处理光照变化(室外序列和阴影),采用基于强度恒定假设的光流方程与 Gennert 和 Negahdaripour 光照模型(见 [241])。可以使用 useIlluminationModel 变量打开/关闭此模型。
- 通过使用全局运动先验初始化(见 [241])迭代细化,可以显著提高大位移的精度。可以使用 useGlobalMotionPrior 变量打开和关闭此初始化。
可以使用 SparseOpticalFlow 类或函数接口来计算 RLOF 以跟踪一组特征,或使用 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估计器可以减少运行时间,而启用M估计器可以提高精度。
- 参数
-
val | 如果为真,则使用M估计器;如果为假,则使用最小二乘估计器。 |
- 另见
- setNormSigma0, setNormSigma1
◆ crossSegmentationThreshold
int cv::optflow::RLOFOpticalFlowParameter::crossSegmentationThreshold |
基于交叉分割的颜色相似性阈值,遵循[240]。(仅在supportRegionType为SR_CROSS时使用)。使用基于交叉的分割可以更准确地计算运动边界。
◆ globalMotionRansacThreshold
float cv::optflow::RLOFOpticalFlowParameter::globalMotionRansacThreshold |
为了应用全局运动先验,将在规则采样上计算运动向量,这些向量是使用RANSAC进行单应性估计的基础。重投影阈值基于运动向量幅度的第n个百分位数(由该值[0…100]给出)。有关更多详细信息,请参见[241]。
◆ 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 |
文献[238]中引入的缩减Hampel范数的σ参数。如果σ = std::numeric_limits::max(),则将使用最小二乘估计器而不是M估计器。虽然M估计器对支持区域中的异常值更稳健,但最小二乘法计算速度更快。
◆ normSigma1
float cv::optflow::RLOFOpticalFlowParameter::normSigma1 |
文献[238]中引入的缩减Hampel范数的σ参数。如果σ = std::numeric_limits::max(),则将使用最小二乘估计器而不是M估计器。虽然M估计器对支持区域中的异常值更稳健,但最小二乘法计算速度更快。
◆ smallWinSize
int cv::optflow::RLOFOpticalFlowParameter::smallWinSize |
支持区域的最小窗口大小。仅当supportRegionType为SR_CROSS时使用此参数。
◆ solverType
SolverType cv::optflow::RLOFOpticalFlowParameter::solverType |
变量指定迭代细化策略。使用ST_BILINEAR时,请考虑引用[239]。
◆ supportRegionType
◆ useGlobalMotionPrior
bool cv::optflow::RLOFOpticalFlowParameter::useGlobalMotionPrior |
使用全局运动先验初始化,在[241]中引入。它允许对长程运动更精确。启用全局运动先验初始化会稍微增加计算复杂度。
◆ useIlluminationModel
bool cv::optflow::RLOFOpticalFlowParameter::useIlluminationModel |
使用Gennert和Negahdaripour光照模型代替强度亮度约束。(在[241]中提出)此模型定义如下:
\[ I(\mathbf{x},t) + m \cdot I(\mathbf{x},t) + c = I(\mathbf{x},t+1) \]
包含乘法项m和加法项c,这使得估计对光照变化更鲁棒。启用光照模型会增加计算复杂度。
◆ useInitialFlow
bool cv::optflow::RLOFOpticalFlowParameter::useInitialFlow |
使用下一个点列表作为初始值。良好的初始化可以提高算法精度,并通过更快的迭代细化收敛来减少运行时间。
此类的文档是从以下文件生成的: