OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
cv::optflow::DenseRLOFOpticalFlow 类参考抽象类

基于鲁棒局部光流 (RLOF) 算法和稀疏到稠密插值方案的快速稠密光流计算。更多…

#include <opencv2/optflow/rlofflow.hpp>

cv::optflow::DenseRLOFOpticalFlow 协作图

公共成员函数

virtual int getEPICK () const =0
 参见 ximgproc::EdgeAwareInterpolator() K 值。
 
virtual float getEPICLambda () const =0
 参见 ximgproc::EdgeAwareInterpolator() lambda 值。
 
virtual float getEPICSigma () const =0
 参见 ximgproc::EdgeAwareInterpolator() sigma 值。
 
virtual float getFgsLambda () const =0
 参见 ximgproc::EdgeAwareInterpolator()。
 
virtual float getFgsSigma () const =0
 参见 ximgproc::EdgeAwareInterpolator()。
 
virtual float getForwardBackward () const =0
 前向后向置信度检查的阈值。
 
virtual Size getGridStep () const =0
 生成运动向量的网格大小。
 
virtual InterpolationType getInterpolation () const =0
 用于计算稠密光流的插值方法。
 
virtual int getRICSLICType () const =0
 选择要使用的超像素算法变体的参数。
 
virtual int getRICSPSize () const =0
 用于调整用于过度分割的超像素的近似大小的参数。
 
virtual Ptr< RLOFOpticalFlowParametergetRLOFOpticalFlowParameter () const =0
 RLOF 算法的配置。
 
virtual bool getUsePostProc () const =0
 启用 ximgproc::fastGlobalSmootherFilter
 
virtual bool getUseVariationalRefinement () const =0
 启用 VariationalRefinement
 
virtual void setEPICK (int val)=0
 参见 ximgproc::EdgeAwareInterpolator() K 值。
 
virtual void setEPICLambda (float val)=0
 参见 ximgproc::EdgeAwareInterpolator() lambda 值。
 
virtual void setEPICSigma (float val)=0
 参见 ximgproc::EdgeAwareInterpolator() sigma 值。
 
virtual void setFgsLambda (float val)=0
 参见 ximgproc::EdgeAwareInterpolator()。
 
virtual void setFgsSigma (float val)=0
 参见 ximgproc::EdgeAwareInterpolator()。
 
virtual void setForwardBackward (float val)=0
 前向后向置信度检查的阈值。
 
virtual void setGridStep (Size val)=0
 生成运动向量的网格大小。
 
virtual void setInterpolation (InterpolationType val)=0
 用于计算稠密光流的插值方法。
 
virtual void setRICSLICType (int val)=0
 选择要使用的超像素算法变体的参数。
 
virtual void setRICSPSize (int val)=0
 用于调整用于过度分割的超像素的近似大小的参数。
 
virtual void setRLOFOpticalFlowParameter (Ptr< RLOFOpticalFlowParameter > val)=0
 RLOF 算法的配置。
 
virtual void setUsePostProc (bool val)=0
 启用 ximgproc::fastGlobalSmootherFilter
 
virtual void setUseVariationalRefinement (bool val)=0
 启用 VariationalRefinement
 
- 继承自 cv::DenseOpticalFlow 的公共成员函数
virtual void calc (InputArray I0, InputArray I1, InputOutputArray flow)=0
 计算光流。
 
virtual void collectGarbage ()=0
 释放所有内部缓冲区。
 
- 继承自 cv::Algorithm 的公共成员函数
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 清除算法状态。
 
virtual bool empty () const
 如果 Algorithm 为空(例如,在开始时或读取失败后),则返回 true。
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 从文件存储中读取算法参数。
 
virtual void save (const String &filename) const
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 
virtual void write (FileStorage &fs) const
 将算法参数存储到文件存储中。
 
void write (FileStorage &fs, const String &name) const
 

静态公共成员函数

static Ptr< DenseRLOFOpticalFlowcreate (Ptr< RLOFOpticalFlowParameter > rlofParam=Ptr< RLOFOpticalFlowParameter >(), float forwardBackwardThreshold=1.f, Size gridStep=Size(6, 6), InterpolationType interp_type=InterpolationType::INTERP_EPIC, int epicK=128, float epicSigma=0.05f, float epicLambda=999.0f, int ricSPSize=15, int ricSLICType=100, bool use_post_proc=true, float fgsLambda=500.0f, float fgsSigma=1.5f, bool use_variational_refinement=false)
 创建 optflow::DenseRLOFOpticalFlow 实例。
 
- 从 cv::Algorithm 继承的静态公共成员函数
template<typename _Tp >
static Ptr< _Tpload (const String &filename, const String &objname=String())
 从文件加载算法。
 
template<typename _Tp >
static Ptr< _TploadFromString (const String &strModel, const String &objname=String())
 从字符串加载算法。
 
template<typename _Tp >
static Ptr< _Tpread (const FileNode &fn)
 从文件节点读取算法。
 

其他继承的成员

- 从 cv::Algorithm 继承的受保护成员函数
void writeFormat (FileStorage &fs) const
 

详细描述

基于鲁棒局部光流 (RLOF) 算法和稀疏到稠密插值方案的快速稠密光流计算。

RLOF 是一种快速局部光流方法,如 [238] [239] [240][241] 中所述,类似于 [36] 提出的金字塔迭代 Lucas-Kanade 方法。更多细节和实验可以在以下论文中找到 [242]。该实现源自 optflow::calcOpticalFlowPyrLK()。

稀疏到稠密的插值方案允许使用 RLOF 快速计算稠密光流(参见 [102])。此方案应用以下步骤:

  1. 计算在规则采样网格上播种的运动向量。可以使用 setGridStep 配置此网格的稀疏性。
  2. (可选)基于前向后向置信度过滤错误的运动向量。可以使用 setForwardBackward 配置阈值。只有当阈值 > 0 时才应用过滤器,但由于反向流的估计,运行时间会加倍。
  3. 将向量场插值应用于运动向量集以获得稠密向量场。

有关 RLOF 配置,请参阅 optflow::RLOFOpticalFlowParameter 以了解更多详细信息。参数已在 [238] [239] [240][241] 中进行了描述。

注意
如果网格大小设置为 (1,1) 并且前向后向阈值 <= 0,则 RLOF 会计算像素级稠密光流场,而无需使用插值。
请注意,在输出中,如果在 *I0* 和 *I1* 之间找不到对应关系,则 *flow* 将设置为 0。
另请参阅
optflow::calcOpticalFlowDenseRLOF()optflow::RLOFOpticalFlowParameter

成员函数文档

◆ create()

static Ptr< DenseRLOFOpticalFlow > cv::optflow::DenseRLOFOpticalFlow::create ( Ptr< RLOFOpticalFlowParameter > rlofParam = PtrRLOFOpticalFlowParameter >(),
float forwardBackwardThreshold = 1.f,
Size gridStep = Size(6, 6),
InterpolationType interp_type = InterpolationType::INTERP_EPIC,
int epicK = 128,
float epicSigma = 0.05f,
float epicLambda = 999.0f,
int ricSPSize = 15,
int ricSLICType = 100,
bool use_post_proc = true,
float fgsLambda = 500.0f,
float fgsSigma = 1.5f,
bool use_variational_refinement = false )
static
Python
cv.optflow.DenseRLOFOpticalFlow.create([, rlofParam[, forwardBackwardThreshold[, gridStep[, interp_type[, epicK[, epicSigma[, epicLambda[, ricSPSize[, ricSLICType[, use_post_proc[, fgsLambda[, fgsSigma[, use_variational_refinement]]]]]]]]]]]]]) -> 返回值
cv.optflow.DenseRLOFOpticalFlow_create([, rlofParam[, forwardBackwardThreshold[, gridStep[, interp_type[, epicK[, epicSigma[, epicLambda[, ricSPSize[, ricSLICType[, use_post_proc[, fgsLambda[, fgsSigma[, use_variational_refinement]]]]]]]]]]]]]) -> 返回值

创建 optflow::DenseRLOFOpticalFlow 实例。

参数
rlofParam参见 optflow::RLOFOpticalFlowParameter
forwardBackwardThreshold参见 setForwardBackward
gridStep参见 setGridStep
interp_type参见 setInterpolation
epicK参见 setEPICK
epicSigma参见 setEPICSigma
epicLambda参见 setEPICLambda
ricSPSize参见 setRICSPSize
ricSLICType参见 setRICSLICType
use_post_proc参见 setUsePostProc
fgsLambda参见 setFgsLambda
fgsSigma参见 setFgsSigma
use_variational_refinement参见 setUseVariationalRefinement

◆ getEPICK()

virtual int cv::optflow::DenseRLOFOpticalFlow::getEPICK ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getEPICK() -> 返回值

参见 ximgproc::EdgeAwareInterpolator() K 值。

K 表示在拟合局部仿射模型时考虑的最近邻匹配数量。通常应约为 128。但是,较低的值会使插值速度明显加快。

另请参阅
ximgproc::EdgeAwareInterpolatorsetEPICK

◆ getEPICLambda()

virtual float cv::optflow::DenseRLOFOpticalFlow::getEPICLambda ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getEPICLambda() -> 返回值

参见 ximgproc::EdgeAwareInterpolator() lambda 值。

Lambda 是一个参数,定义了测地线距离中边缘感知项的权重,应在 0 到 1000 的范围内。

另请参阅
ximgproc::EdgeAwareInterpolatorsetEPICSigma

◆ getEPICSigma()

virtual float cv::optflow::DenseRLOFOpticalFlow::getEPICSigma ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getEPICSigma() -> 返回值

参见 ximgproc::EdgeAwareInterpolator() sigma 值。

Sigma 是一个参数,定义了局部加权仿射拟合中权重下降的速度。较高的值可以帮助保留精细细节,较低的值可以帮助去除输出流中的噪声。

另请参阅
ximgproc::EdgeAwareInterpolatorsetEPICSigma

◆ getFgsLambda()

virtual float cv::optflow::DenseRLOFOpticalFlow::getFgsLambda ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getFgsLambda() -> 返回值

参见 ximgproc::EdgeAwareInterpolator()。

设置相应的 fastGlobalSmootherFilter() 参数。

另请参阅
ximgproc::EdgeAwareInterpolatorsetFgsLambda

◆ getFgsSigma()

virtual float cv::optflow::DenseRLOFOpticalFlow::getFgsSigma ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getFgsSigma() -> 返回值

参见 ximgproc::EdgeAwareInterpolator()。

设置相应的 fastGlobalSmootherFilter() 参数。

另请参阅
ximgproc::EdgeAwareInterpolatorximgproc::fastGlobalSmootherFiltersetFgsSigma

◆ getForwardBackward()

virtual float cv::optflow::DenseRLOFOpticalFlow::getForwardBackward ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getForwardBackward() -> 返回值

前向后向置信度检查的阈值。

另请参阅
setForwardBackward

◆ getGridStep()

virtual Size cv::optflow::DenseRLOFOpticalFlow::getGridStep ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getGridStep() -> 返回值

生成运动向量的网格大小。

对于每个网格点,都会计算一个运动向量。由于前向后向阈值(如果设置 > 0),一些运动向量将被移除。其余部分将成为矢量场插值的基准。

另请参阅
getForwardBackwardsetGridStep

◆ getInterpolation()

virtual InterpolationType cv::optflow::DenseRLOFOpticalFlow::getInterpolation ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getInterpolation() -> 返回值

用于计算稠密光流的插值方法。

另请参阅
ximgproc::EdgeAwareInterpolatorsetInterpolation

◆ getRICSLICType()

virtual int cv::optflow::DenseRLOFOpticalFlow::getRICSLICType ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getRICSLICType() -> 返回值

选择要使用的超像素算法变体的参数。

另请参阅
setRICSLICType

◆ getRICSPSize()

virtual int cv::optflow::DenseRLOFOpticalFlow::getRICSPSize ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getRICSPSize() -> 返回值

用于调整用于过度分割的超像素的近似大小的参数。

另请参阅
setRICSPSize

◆ getRLOFOpticalFlowParameter()

virtual Ptr< RLOFOpticalFlowParameter > cv::optflow::DenseRLOFOpticalFlow::getRLOFOpticalFlowParameter ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getRLOFOpticalFlowParameter() -> 返回值

RLOF 算法的配置。

另请参阅
optflow::RLOFOpticalFlowParametersetRLOFOpticalFlowParameter

◆ getUsePostProc()

virtual bool cv::optflow::DenseRLOFOpticalFlow::getUsePostProc ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getUsePostProc() -> 返回值

◆ getUseVariationalRefinement()

virtual bool cv::optflow::DenseRLOFOpticalFlow::getUseVariationalRefinement ( ) const
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.getUseVariationalRefinement() -> 返回值

◆ setEPICK()

virtual void cv::optflow::DenseRLOFOpticalFlow::setEPICK ( int val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setEPICK(val) ->

参见 ximgproc::EdgeAwareInterpolator() K 值。

另请参阅
ximgproc::EdgeAwareInterpolatorgetEPICK

◆ setEPICLambda()

virtual void cv::optflow::DenseRLOFOpticalFlow::setEPICLambda ( float val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setEPICLambda(val) ->

参见 ximgproc::EdgeAwareInterpolator() lambda 值。

另请参阅
ximgproc::EdgeAwareInterpolatorgetEPICLambda

◆ setEPICSigma()

virtual void cv::optflow::DenseRLOFOpticalFlow::setEPICSigma ( float val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setEPICSigma(val) ->

参见 ximgproc::EdgeAwareInterpolator() sigma 值。

另请参阅
ximgproc::EdgeAwareInterpolatorgetEPICSigma

◆ setFgsLambda()

virtual void cv::optflow::DenseRLOFOpticalFlow::setFgsLambda ( float val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setFgsLambda(val) ->

参见 ximgproc::EdgeAwareInterpolator()。

另请参阅
ximgproc::EdgeAwareInterpolatorximgproc::fastGlobalSmootherFiltergetFgsLambda

◆ setFgsSigma()

virtual void cv::optflow::DenseRLOFOpticalFlow::setFgsSigma ( float val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setFgsSigma(val) ->

参见 ximgproc::EdgeAwareInterpolator()。

另请参阅
ximgproc::EdgeAwareInterpolatorximgproc::fastGlobalSmootherFiltergetFgsSigma

◆ setForwardBackward()

virtual void cv::optflow::DenseRLOFOpticalFlow::setForwardBackward ( float val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setForwardBackward(val) ->

前向后向置信度检查的阈值。

对于每个网格点 \( \mathbf{x} \),都会计算一个运动向量 \( d_{I0,I1}(\mathbf{x}) \)。如果前向后向误差

\[ EP_{FB} = || d_{I0,I1} + d_{I1,I0} || \]

如果大于此函数给定的阈值,则后续的矢量场插值将不会使用该运动矢量。\( d_{I1,I0} \) 表示反向流。注意,只有当阈值 > 0 时,才会应用前向后向测试。这可能会导致运动估计的运行时间加倍。

另请参阅
getForwardBackwardsetGridStep

◆ setGridStep()

virtual void cv::optflow::DenseRLOFOpticalFlow::setGridStep ( Size val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setGridStep(val) ->

生成运动向量的网格大小。

另请参阅
getGridStep

◆ setInterpolation()

virtual void cv::optflow::DenseRLOFOpticalFlow::setInterpolation ( InterpolationType val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setInterpolation(val) ->

用于计算稠密光流的插值方法。

支持两种插值算法

◆ setRICSLICType()

virtual void cv::optflow::DenseRLOFOpticalFlow::setRICSLICType ( int val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setRICSLICType(val) ->

选择要使用的超像素算法变体的参数。

◆ setRICSPSize()

virtual void cv::optflow::DenseRLOFOpticalFlow::setRICSPSize ( int val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setRICSPSize(val) ->

用于调整用于过度分割的超像素的近似大小的参数。

另请参阅
cv::ximgproc::createSuperpixelSLICcv::ximgproc::RICInterpolator

◆ setRLOFOpticalFlowParameter()

virtual void cv::optflow::DenseRLOFOpticalFlow::setRLOFOpticalFlowParameter ( Ptr< RLOFOpticalFlowParameter > val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setRLOFOpticalFlowParameter(val) ->

RLOF 算法的配置。

另请参阅
optflow::RLOFOpticalFlowParametergetRLOFOpticalFlowParameter

◆ setUsePostProc()

virtual void cv::optflow::DenseRLOFOpticalFlow::setUsePostProc ( bool val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setUsePostProc(val) ->

◆ setUseVariationalRefinement()

virtual void cv::optflow::DenseRLOFOpticalFlow::setUseVariationalRefinement ( bool val)
纯虚函数
Python
cv.optflow.DenseRLOFOpticalFlow.setUseVariationalRefinement(val) ->

此类的文档是从以下文件生成的: