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

此類的文件生成自以下檔案