Class cv::optflow::RLOFOpticalFlowParameter#

This is used store and set up the parameters of the robust local optical flow (RLOF) algoritm. View details

Collaboration diagram for cv::optflow::RLOFOpticalFlowParameter:

cv::optflow::RLOFOpticalFlowParameter Node1 cv::optflow::RLOFOptical FlowParameter   + RLOFOpticalFlowParameter() + getCrossSegmentationThreshold() + getGlobalMotionRansacThreshold() + getLargeWinSize() + getMaxIteration() + getMaxLevel() + getMinEigenValue() + getNormSigma0() + getNormSigma1() + getSmallWinSize() and 20 more... + create() Node2 SolverType     Node2->Node1 +solverType Node3 SupportRegionType     Node3->Node1 +supportRegionType Node4 float     Node4->Node1 +globalMotionRansacThreshold +minEigenValue +normSigma0 +normSigma1 Node5 int     Node5->Node1 +crossSegmentationThreshold +largeWinSize +maxIteration +maxLevel +smallWinSize Node6 bool     Node6->Node1 +useGlobalMotionPrior +useIlluminationModel +useInitialFlow

cv::optflow::RLOFOpticalFlowParameter Node1 cv::optflow::RLOFOptical FlowParameter   + RLOFOpticalFlowParameter() + getCrossSegmentationThreshold() + getGlobalMotionRansacThreshold() + getLargeWinSize() + getMaxIteration() + getMaxLevel() + getMinEigenValue() + getNormSigma0() + getNormSigma1() + getSmallWinSize() and 20 more... + create() Node2 SolverType     Node2->Node1 +solverType Node3 SupportRegionType     Node3->Node1 +supportRegionType Node4 float     Node4->Node1 +globalMotionRansacThreshold +minEigenValue +normSigma0 +normSigma1 Node5 int     Node5->Node1 +crossSegmentationThreshold +largeWinSize +maxIteration +maxLevel +smallWinSize Node6 bool     Node6->Node1 +useGlobalMotionPrior +useIlluminationModel +useInitialFlow

Detailed Description#

This is used store and set up the parameters of the robust local optical flow (RLOF) algoritm.

The RLOF is a fast local optical flow approach described in Senst2012 Senst2013 Senst2014 and Senst2016 similar to the pyramidal iterative Lucas-Kanade method as proposed by Bouguet00. More details and experiments can be found in the following thesis Senst2019. The implementation is derived from optflow::calcOpticalFlowPyrLK(). This RLOF implementation can be seen as an improved pyramidal iterative Lucas-Kanade and includes a set of improving modules. The main improvements in respect to the pyramidal iterative Lucas-Kanade are:

  • A more robust redecending M-estimator framework (see Senst2012) to improve the accuracy at motion boundaries and appearing and disappearing pixels.

  • an adaptive support region strategies to improve the accuracy at motion boundaries to reduce the corona effect, i.e oversmoothing of the PLK at motion/object boundaries. The cross-based segementation strategy (SR_CROSS) proposed in Senst2014 uses a simple segmenation approach to obtain the optimal shape of the support region.

  • To deal with illumination changes (outdoor sequences and shadow) the intensity constancy assumption based optical flow equation has been adopt with the Gennert and Negahdaripour illumination model (see Senst2016). This model can be switched on/off with the useIlluminationModel variable.

  • By using a global motion prior initialization (see Senst2016) of the iterative refinement the accuracy could be significantly improved for large displacements. This initialization can be switched on and of with useGlobalMotionPrior variable.

The RLOF can be computed with the SparseOpticalFlow class or function interface to track a set of features or with the DenseOpticalFlow class or function interface to compute dense optical flow.

Constructor & Destructor Documentation#

RLOFOpticalFlowParameter()#

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

Member Function Documentation#

getCrossSegmentationThreshold()#

int cv::optflow::RLOFOpticalFlowParameter::getCrossSegmentationThreshold()

getGlobalMotionRansacThreshold()#

float cv::optflow::RLOFOpticalFlowParameter::getGlobalMotionRansacThreshold()

getLargeWinSize()#

int cv::optflow::RLOFOpticalFlowParameter::getLargeWinSize()

getMaxIteration()#

int cv::optflow::RLOFOpticalFlowParameter::getMaxIteration()

getMaxLevel()#

int cv::optflow::RLOFOpticalFlowParameter::getMaxLevel()

getMinEigenValue()#

float cv::optflow::RLOFOpticalFlowParameter::getMinEigenValue()

getNormSigma0()#

float cv::optflow::RLOFOpticalFlowParameter::getNormSigma0()

getNormSigma1()#

float cv::optflow::RLOFOpticalFlowParameter::getNormSigma1()

getSmallWinSize()#

int cv::optflow::RLOFOpticalFlowParameter::getSmallWinSize()

getSolverType()#

SolverType cv::optflow::RLOFOpticalFlowParameter::getSolverType()

getSupportRegionType()#

SupportRegionType cv::optflow::RLOFOpticalFlowParameter::getSupportRegionType()

getUseGlobalMotionPrior()#

bool cv::optflow::RLOFOpticalFlowParameter::getUseGlobalMotionPrior()

getUseIlluminationModel()#

bool cv::optflow::RLOFOpticalFlowParameter::getUseIlluminationModel()

getUseInitialFlow()#

bool cv::optflow::RLOFOpticalFlowParameter::getUseInitialFlow()

setCrossSegmentationThreshold()#

void cv::optflow::RLOFOpticalFlowParameter::setCrossSegmentationThreshold(int val)

setGlobalMotionRansacThreshold()#

void cv::optflow::RLOFOpticalFlowParameter::setGlobalMotionRansacThreshold(float val)

setLargeWinSize()#

void cv::optflow::RLOFOpticalFlowParameter::setLargeWinSize(int val)

setMaxIteration()#

void cv::optflow::RLOFOpticalFlowParameter::setMaxIteration(int val)

setMaxLevel()#

void cv::optflow::RLOFOpticalFlowParameter::setMaxLevel(int val)

setMinEigenValue()#

void cv::optflow::RLOFOpticalFlowParameter::setMinEigenValue(float val)

setNormSigma0()#

void cv::optflow::RLOFOpticalFlowParameter::setNormSigma0(float val)

setNormSigma1()#

void cv::optflow::RLOFOpticalFlowParameter::setNormSigma1(float val)

setSmallWinSize()#

void cv::optflow::RLOFOpticalFlowParameter::setSmallWinSize(int val)

setSolverType()#

void cv::optflow::RLOFOpticalFlowParameter::setSolverType(SolverType val)

setSupportRegionType()#

void cv::optflow::RLOFOpticalFlowParameter::setSupportRegionType(SupportRegionType val)

setUseGlobalMotionPrior()#

void cv::optflow::RLOFOpticalFlowParameter::setUseGlobalMotionPrior(bool val)

setUseIlluminationModel()#

void cv::optflow::RLOFOpticalFlowParameter::setUseIlluminationModel(bool val)

setUseInitialFlow()#

void cv::optflow::RLOFOpticalFlowParameter::setUseInitialFlow(bool val)

setUseMEstimator()#

void cv::optflow::RLOFOpticalFlowParameter::setUseMEstimator(bool val)

Enable M-estimator or disable and use least-square estimator.

Enables M-estimator by setting sigma parameters to (3.2, 7.0). Disabling M-estimator can reduce runtime, while enabling can improve the accuracy.

Parameters

  • val — If true M-estimator is used. If false least-square estimator is used.

create()#

static Ptr< RLOFOpticalFlowParameter > cv::optflow::RLOFOpticalFlowParameter::create()

Creates instance of optflow::RLOFOpticalFlowParameter.

Member Data Documentation#

crossSegmentationThreshold#

int cv::optflow::RLOFOpticalFlowParameter::crossSegmentationThreshold

Color similarity threshold used by cross-based segmentation following [266] . (Only used if supportRegionType is SR_CROSS). With the cross-bassed segmentation motion boundaries can be computed more accurately.

globalMotionRansacThreshold#

float cv::optflow::RLOFOpticalFlowParameter::globalMotionRansacThreshold

To apply the global motion prior motion vectors will be computed on a regulary sampled which are the basis for Homography estimation using RANSAC. The reprojection threshold is based on n-th percentil (given by this value [0 … 100]) of the motion vectors magnitude. See [267] for more details.

largeWinSize#

int cv::optflow::RLOFOpticalFlowParameter::largeWinSize

Maximal window size of the support region. If supportRegionType is SR_FIXED this gives the exact support region size. The speed of the RLOF is related to the applied win sizes. The smaller the window size the lower is the runtime, but the more sensitive to noise is the method.

maxIteration#

int cv::optflow::RLOFOpticalFlowParameter::maxIteration

Number of maximal iterations used for the iterative refinement. Lower values can reduce the runtime but also the accuracy.

maxLevel#

int cv::optflow::RLOFOpticalFlowParameter::maxLevel

Maximal number of pyramid level used. The large this value is the more likely it is to obtain accurate solutions for long-range motions. The runtime is linear related to this parameter.

minEigenValue#

float cv::optflow::RLOFOpticalFlowParameter::minEigenValue

Threshold for the minimal eigenvalue of the gradient matrix defines when to abort the iterative refinement.

normSigma0#

float cv::optflow::RLOFOpticalFlowParameter::normSigma0

&sigma parameter of the shrinked Hampel norm introduced in [264]. If &sigma = std::numeric_limist::max() the least-square estimator will be used instead of the M-estimator. Althoug M-estimator is more robust against outlier in the support region the least-square can be fast in computation.

normSigma1#

float cv::optflow::RLOFOpticalFlowParameter::normSigma1

&sigma parameter of the shrinked Hampel norm introduced in [264]. If &sigma = std::numeric_limist::max() the least-square estimator will be used instead of the M-estimator. Althoug M-estimator is more robust against outlier in the support region the least-square can be fast in computation.

smallWinSize#

int cv::optflow::RLOFOpticalFlowParameter::smallWinSize

Minimal window size of the support region. This parameter is only used if supportRegionType is SR_CROSS.

solverType#

SolverType cv::optflow::RLOFOpticalFlowParameter::solverType

Variable specifies the iterative refinement strategy. Please consider citing [265] when using ST_BILINEAR.

supportRegionType#

SupportRegionType cv::optflow::RLOFOpticalFlowParameter::supportRegionType

Variable specifies the support region shape extraction or shrinking strategy.

useGlobalMotionPrior#

bool cv::optflow::RLOFOpticalFlowParameter::useGlobalMotionPrior

Use global motion prior initialisation has been introduced in [267] . It allows to be more accurate for long-range motion. The computational complexity is slightly increased by enabling the global motion prior initialisation.

useIlluminationModel#

bool cv::optflow::RLOFOpticalFlowParameter::useIlluminationModel

Use the Gennert and Negahdaripour illumination model instead of the intensity brigthness constraint. (proposed in [267] ) This model is defined as follow:

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

and contains with m and c a multiplicative and additive term which makes the estimate more robust against illumination changes. The computational complexity is increased by enabling the illumination model.

useInitialFlow#

bool cv::optflow::RLOFOpticalFlowParameter::useInitialFlow

Use next point list as initial values. A good intialization can imporve the algortihm accuracy and reduce the runtime by a faster convergence of the iteration refinement.

Source file#

The documentation for this class was generated from the following file: