OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
无匹配项
公共成员函数 | 静态公共成员函数 | 所有成员列表
cv::optflow::DenseRLOFOpticalFlow 类参考abstract

基于稳健局部光流 (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 是一种快速局部光流方法,在 [237] [238] [239][240] 中进行了描述,类似于 [36] 提出的金字塔迭代 Lucas-Kanade 方法。有关更多详细信息和实验,请参阅以下论文 [241]。该实现源自 optflow::calcOpticalFlowPyrLK()。

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

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

有关 RLOF 配置的更多详细信息,请参见 optflow::RLOFOpticalFlowParameter。参数在 [237] [238] [239][240] 中进行了描述。

注意
如果网格大小设置为 (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 的实例。

参数
rlofParamoptflow::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::EdgeAwareInterpolatorsetEPICK

◆ getEPICLambda()

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

参见 ximgproc::EdgeAwareInterpolator() lambda 值。

Lambda 是一个参数,它定义了边缘感知项在测地距离中的权重,应该在 0 到 1000 之间。

另请参阅
ximgproc::EdgeAwareInterpolatorsetEPICSigma

◆ getEPICSigma()

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

参见 ximgproc::EdgeAwareInterpolator() sigma 值。

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

另请参阅
ximgproc::EdgeAwareInterpolatorsetEPICSigma

◆ getFgsLambda()

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

参见 ximgproc::EdgeAwareInterpolator()。

设置相应的 fastGlobalSmootherFilter() 参数。

另请参阅
ximgproc::EdgeAwareInterpolatorsetFgsLambda

◆ getFgsSigma()

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

参见 ximgproc::EdgeAwareInterpolator()。

设置相应的 fastGlobalSmootherFilter() 参数。

另请参阅
ximgproc::EdgeAwareInterpolatorximgproc::fastGlobalSmootherFiltersetFgsSigma

◆ 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)而被移除。 其余的将成为矢量场插值的基准。

另请参阅
getForwardBackwardsetGridStep

◆ getInterpolation()

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

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

另请参阅
ximgproc::EdgeAwareInterpolatorsetInterpolation

◆ 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::RLOFOpticalFlowParametersetRLOFOpticalFlowParameter

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

该类文档由以下文件生成