OpenCV 4.12.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 是一种快速局部光流方法,在 [241] [242] [243][244] 中有描述,类似于 [37] 提出的金字塔迭代 Lucas-Kanade 方法。更多细节和实验可在以下论文 [245] 中找到。该实现源自 optflow::calcOpticalFlowPyrLK()。

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

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

有关 RLOF 配置的更多详细信息,请参见 optflow::RLOFOpticalFlowParameter。参数已在 [241] [242] [243][244] 中描述。

注意
如果网格大小设置为 (1,1) 且前后阈值 <= 0,则 RLOF 将计算像素级密集光流场,而无需使用插值。
请注意,在输出中,如果在 I0I1 之间未找到对应关系,则 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]]]]]]]]]]]]]) -> retval
cv.optflow.DenseRLOFOpticalFlow_create([, rlofParam[, forwardBackwardThreshold[, gridStep[, interp_type[, epicK[, epicSigma[, epicLambda[, ricSPSize[, ricSLICType[, use_post_proc[, fgsLambda[, fgsSigma[, use_variational_refinement]]]]]]]]]]]]]) -> retval

创建 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() -> retval

参见 ximgproc::EdgeAwareInterpolator() K 值。

K 是拟合局部仿射模型时考虑的最近邻匹配数量。通常应在 128 左右。然而,较低的值会使插值明显加快。

另请参见
ximgproc::EdgeAwareInterpolator, setEPICK

◆ getEPICLambda()

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

参见 ximgproc::EdgeAwareInterpolator() lambda 值。

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

另请参见
ximgproc::EdgeAwareInterpolator, setEPICSigma

◆ getEPICSigma()

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

参见 ximgproc::EdgeAwareInterpolator() sigma 值。

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

另请参见
ximgproc::EdgeAwareInterpolator, setEPICSigma

◆ getFgsLambda()

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

参见 ximgproc::EdgeAwareInterpolator()。

设置相应的 fastGlobalSmootherFilter() 参数。

另请参见
ximgproc::EdgeAwareInterpolator, setFgsLambda

◆ getFgsSigma()

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

参见 ximgproc::EdgeAwareInterpolator()。

设置相应的 fastGlobalSmootherFilter() 参数。

另请参见
ximgproc::EdgeAwareInterpolator, ximgproc::fastGlobalSmootherFilter, setFgsSigma

◆ getForwardBackward()

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

用于正向后向置信度检查的阈值。

另请参见
setForwardBackward

◆ getGridStep()

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

用于生成运动矢量的网格大小。

为每个网格点计算一个运动矢量。一些运动矢量会因前后阈值(如果设置为 >0)而被移除。其余的将作为矢量场插值的基准。

另请参见
getForwardBackward, setGridStep

◆ getInterpolation()

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

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

另请参见
ximgproc::EdgeAwareInterpolator, setInterpolation

◆ getRICSLICType()

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

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

另请参见
setRICSLICType

◆ getRICSPSize()

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

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

另请参见
setRICSPSize

◆ getRLOFOpticalFlowParameter()

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

RLOF 算法的配置。

另请参见
optflow::RLOFOpticalFlowParameter, setRLOFOpticalFlowParameter

◆ getUsePostProc()

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

◆ getUseVariationalRefinement()

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

◆ setEPICK()

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

参见 ximgproc::EdgeAwareInterpolator() K 值。

另请参见
ximgproc::EdgeAwareInterpolator, getEPICK

◆ setEPICLambda()

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

参见 ximgproc::EdgeAwareInterpolator() lambda 值。

另请参见
ximgproc::EdgeAwareInterpolator, getEPICLambda

◆ setEPICSigma()

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

参见 ximgproc::EdgeAwareInterpolator() sigma 值。

另请参见
ximgproc::EdgeAwareInterpolator, getEPICSigma

◆ setFgsLambda()

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

参见 ximgproc::EdgeAwareInterpolator()。

另请参见
ximgproc::EdgeAwareInterpolator, ximgproc::fastGlobalSmootherFilter, getFgsLambda

◆ setFgsSigma()

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

参见 ximgproc::EdgeAwareInterpolator()。

另请参见
ximgproc::EdgeAwareInterpolator, ximgproc::fastGlobalSmootherFilter, getFgsSigma

◆ 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 时才会应用前后测试。这可能会导致运动估计的运行时加倍。

另请参见
getForwardBackward, setGridStep

◆ 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::createSuperpixelSLIC, cv::ximgproc::RICInterpolator

◆ setRLOFOpticalFlowParameter()

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

RLOF 算法的配置。

另请参见
optflow::RLOFOpticalFlowParameter, getRLOFOpticalFlowParameter

◆ 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) ->

此类的文档生成自以下文件