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