OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::optflow::RLOFOpticalFlowParameter 類參考

此項用於儲存和設定魯棒區域性光流(RLOF)演算法的引數。 更多...

#include <opencv2/optflow/rlofflow.hpp>

cv::optflow::RLOFOpticalFlowParameter 的協作圖

公共成員函式

 RLOFOpticalFlowParameter ()
 
int getCrossSegmentationThreshold () const
 
float getGlobalMotionRansacThreshold () const
 
int getLargeWinSize () const
 
int getMaxIteration () const
 
int getMaxLevel () const
 
float getMinEigenValue () const
 
float getNormSigma0 () const
 
float getNormSigma1 () const
 
int getSmallWinSize () const
 
SolverType getSolverType () const
 
SupportRegionType getSupportRegionType () const
 
bool getUseGlobalMotionPrior () const
 
bool getUseIlluminationModel () const
 
bool getUseInitialFlow () const
 
void setCrossSegmentationThreshold (int val)
 
void setGlobalMotionRansacThreshold (float val)
 
void setLargeWinSize (int val)
 
void setMaxIteration (int val)
 
void setMaxLevel (int val)
 
void setMinEigenValue (float val)
 
void setNormSigma0 (float val)
 
void setNormSigma1 (float val)
 
void setSmallWinSize (int val)
 
void setSolverType (SolverType val)
 
void setSupportRegionType (SupportRegionType val)
 
void setUseGlobalMotionPrior (bool val)
 
void setUseIlluminationModel (bool val)
 
void setUseInitialFlow (bool val)
 
void setUseMEstimator (bool val)
 啟用 M 估計器或停用並使用最小二乘估計器。
 

靜態公共成員函式

static Ptr< RLOFOpticalFlowParametercreate ()
 建立 optflow::RLOFOpticalFlowParameter 的例項。
 

公共屬性

int crossSegmentationThreshold (交叉分割閾值)
 
float globalMotionRansacThreshold (全域性運動RANSAC閾值)
 
int largeWinSize (大視窗大小)
 
int maxIteration (最大迭代次數)
 
int maxLevel
 
float minEigenValue (最小特徵值)
 
float normSigma0
 
float normSigma1
 
int smallWinSize (小視窗大小)
 
SolverType solverType (求解器型別)
 
SupportRegionType supportRegionType (支援區域型別)
 
bool useGlobalMotionPrior (使用全域性運動先驗)
 
bool useIlluminationModel (使用光照模型)
 
bool useInitialFlow
 

詳細描述

此項用於儲存和設定魯棒區域性光流(RLOF)演算法的引數。

RLOF 是一種快速區域性光流方法,在 [241] [242] [243][244] 中有描述,類似於 [37] 提出的金字塔迭代 Lucas-Kanade 方法。更多細節和實驗可在以下論文 [245] 中找到。該實現源自 optflow::calcOpticalFlowPyrLK()。此 RLOF 實現可視為改進的金字塔迭代 Lucas-Kanade 方法,幷包含一系列改進模組。相對於金字塔迭代 Lucas-Kanade 方法,主要改進包括:

  • 一個更魯棒的重下降 M 估計器框架(參見 [241]),用於提高運動邊界以及出現和消失畫素處的精度。
  • 自適應支援區域策略,以提高運動邊界處的精度,減少光暈效應,即 PLK 在運動/物件邊界處的過度平滑。在 [243] 中提出的基於交叉的分割策略(SR_CROSS)使用簡單的分割方法來獲得支援區域的最佳形狀。
  • 為了處理光照變化(室外序列和陰影),基於強度不變性假設的光流方程已採用 Gennert 和 Negahdaripour 光照模型(參見 [244])。此模型可透過 useIlluminationModel 變數啟用/停用。
  • 透過使用迭代最佳化中的全域性運動先驗初始化(參見 [244]),可以顯著提高大位移的精度。此初始化可透過 useGlobalMotionPrior 變數啟用和停用。

RLOF 可透過 SparseOpticalFlow 類或函式介面計算以跟蹤一組特徵,或透過 DenseOpticalFlow 類或函式介面計算稠密光流。

另請參見
optflow::DenseRLOFOpticalFlow, optflow::calcOpticalFlowDenseRLOF(), optflow::SparseRLOFOpticalFlow, optflow::calcOpticalFlowSparseRLOF()

建構函式 & 解構函式文件

◆ RLOFOpticalFlowParameter()

cv::optflow::RLOFOpticalFlowParameter::RLOFOpticalFlowParameter ( )
inline

成員函式文件

◆ create()

static Ptr< RLOFOpticalFlowParameter > cv::optflow::RLOFOpticalFlowParameter::create ( )
static
Python
cv.optflow.RLOFOpticalFlowParameter.create() -> retval
cv.optflow.RLOFOpticalFlowParameter_create() -> retval

建立 optflow::RLOFOpticalFlowParameter 的例項。

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

◆ setGlobalMotionRansacThreshold()

void cv::optflow::RLOFOpticalFlowParameter::setGlobalMotionRansacThreshold ( float val)
Python
cv.optflow.RLOFOpticalFlowParameter.setGlobalMotionRansacThreshold(val) ->

◆ setLargeWinSize()

void cv::optflow::RLOFOpticalFlowParameter::setLargeWinSize ( int val)
Python
cv.optflow.RLOFOpticalFlowParameter.setLargeWinSize(val) ->

◆ setMaxIteration()

void cv::optflow::RLOFOpticalFlowParameter::setMaxIteration ( int val)
Python
cv.optflow.RLOFOpticalFlowParameter.setMaxIteration(val) ->

◆ setMaxLevel()

void cv::optflow::RLOFOpticalFlowParameter::setMaxLevel ( int val)
Python
cv.optflow.RLOFOpticalFlowParameter.setMaxLevel(val) ->

◆ setMinEigenValue()

void cv::optflow::RLOFOpticalFlowParameter::setMinEigenValue ( float val)
Python
cv.optflow.RLOFOpticalFlowParameter.setMinEigenValue(val) ->

◆ setNormSigma0()

void cv::optflow::RLOFOpticalFlowParameter::setNormSigma0 ( float val)
Python
cv.optflow.RLOFOpticalFlowParameter.setNormSigma0(val) ->

◆ setNormSigma1()

void cv::optflow::RLOFOpticalFlowParameter::setNormSigma1 ( float val)
Python
cv.optflow.RLOFOpticalFlowParameter.setNormSigma1(val) ->

◆ setSmallWinSize()

void cv::optflow::RLOFOpticalFlowParameter::setSmallWinSize ( int val)
Python
cv.optflow.RLOFOpticalFlowParameter.setSmallWinSize(val) ->

◆ setSolverType()

void cv::optflow::RLOFOpticalFlowParameter::setSolverType ( SolverType val)
Python
cv.optflow.RLOFOpticalFlowParameter.setSolverType(val) ->

◆ setSupportRegionType()

void cv::optflow::RLOFOpticalFlowParameter::setSupportRegionType ( SupportRegionType val)
Python
cv.optflow.RLOFOpticalFlowParameter.setSupportRegionType(val) ->

◆ setUseGlobalMotionPrior()

void cv::optflow::RLOFOpticalFlowParameter::setUseGlobalMotionPrior ( bool val)
Python
cv.optflow.RLOFOpticalFlowParameter.setUseGlobalMotionPrior(val) ->

◆ setUseIlluminationModel()

void cv::optflow::RLOFOpticalFlowParameter::setUseIlluminationModel ( bool val)
Python
cv.optflow.RLOFOpticalFlowParameter.setUseIlluminationModel(val) ->

◆ setUseInitialFlow()

void cv::optflow::RLOFOpticalFlowParameter::setUseInitialFlow ( bool val)
Python
cv.optflow.RLOFOpticalFlowParameter.setUseInitialFlow(val) ->

◆ setUseMEstimator()

void cv::optflow::RLOFOpticalFlowParameter::setUseMEstimator ( bool val)
Python
cv.optflow.RLOFOpticalFlowParameter.setUseMEstimator(val) ->

啟用 M 估計器或停用並使用最小二乘估計器。

透過將 sigma 引數設定為 (3.2, 7.0) 啟用 M 估計器。停用 M 估計器可減少執行時間,而啟用可提高精度。

引數
val如果為 true,則使用 M 估計器。如果為 false,則使用最小二乘估計器。
另請參見
setNormSigma0, setNormSigma1

成員資料文件

◆ crossSegmentationThreshold

int cv::optflow::RLOFOpticalFlowParameter::crossSegmentationThreshold

根據 [243] 基於交叉分割使用的顏色相似度閾值。(僅當 supportRegionType 為 SR_CROSS 時使用)。透過基於交叉的分割,可以更準確地計算運動邊界。

◆ globalMotionRansacThreshold

float cv::optflow::RLOFOpticalFlowParameter::globalMotionRansacThreshold

為了應用全域性運動先驗,運動向量將在規則取樣點上計算,這些取樣點是使用 RANSAC 進行單應性估計的基礎。重投影閾值基於運動向量幅度的第 n 百分位數(由該值 [0 ... 100] 給出)。更多詳情請參見 [244]

◆ 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

[241] 中引入的收縮 Hampel 範數的 &sigma 引數。如果 &sigma = std::numeric_limist<float>::max(),則將使用最小二乘估計器而不是 M 估計器。儘管 M 估計器對支援區域中的異常值更魯棒,但最小二乘法計算速度更快。

◆ normSigma1

float cv::optflow::RLOFOpticalFlowParameter::normSigma1

[241] 中引入的收縮 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 時,請考慮引用 [242]

◆ supportRegionType

SupportRegionType cv::optflow::RLOFOpticalFlowParameter::supportRegionType

此變數指定支援區域形狀提取或收縮策略。

◆ useGlobalMotionPrior

bool cv::optflow::RLOFOpticalFlowParameter::useGlobalMotionPrior

全域性運動先驗初始化已在 [244] 中引入。它允許對長距離運動獲得更高的精度。啟用全域性運動先驗初始化會略微增加計算複雜度。

◆ useIlluminationModel

bool cv::optflow::RLOFOpticalFlowParameter::useIlluminationModel

使用 Gennert 和 Negahdaripour 光照模型代替強度亮度約束。(在 [244] 中提出)此模型定義如下:

\[ I(\mathbf{x},t) + m \cdot I(\mathbf{x},t) + c = I(\mathbf{x},t+1) \]

幷包含乘法項 m 和加法項 c,這使得估計對光照變化更魯棒。啟用光照模型會增加計算複雜度。

◆ useInitialFlow

bool cv::optflow::RLOFOpticalFlowParameter::useInitialFlow

使用下一個點列表作為初始值。良好的初始化可以透過更快的迭代最佳化收斂來提高演算法精度並減少執行時間。


此類的文件是從以下檔案生成的: