此项用于存储和设置鲁棒局部光流(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 |
使用下一个点列表作为初始值。良好的初始化可以通过更快的迭代优化收敛来提高算法精度并减少运行时间。
此类的文档是从以下文件生成的: