opencv中的光流类(CalcOpticalFlowPyrLK)参数

时间:2014-05-30 12:39:41

标签: c++ opencv image-processing computer-vision opticalflow

我对CalcOpticalFlowPyrLK()类中的两个参数有疑问。这是文档的链接:

http://docs.opencv.org/trunk/modules/video/doc/motion_analysis_and_object_tracking.html?highlight=calcopticalflowpyrlk#cv2.calcOpticalFlowPyrLK

第一个参数是“错误”。在文档中,这被定义为它的功能的跟踪错误,但它们没有给出任何细节。什么错误?

其次是参数“status”。如果找到相应的特征(1)或不是(0),则将其定义为状态。 我的情况是特定功能的跟踪错误很低,并且此功能的状态为“未找到= 0”。我也有相反的情况。

这两者之间有联系吗?我试图检测眼睛眨眼。显然,当眼睛闭合时,眼睛角膜中的特征(闪烁)不存在。但是对于这个帧,状态仍然是1(找到),但错误会爆炸。 例如,我有帧t,我尝试跟踪帧t + 1中的特征。在帧t中,所有特征都在那里。在帧t + 1中,特征消失(眨眼)但状态仍为1.

1 个答案:

答案 0 :(得分:3)

这两个值的连接是您首先必须检查状态数组。状态数组表示是否找到了要素点。此“检查”具有比错误更高的优先级。文档说:“如果没有找到流量,那么错误就没有定义”。但是记忆必须得到分配才能保持索引的对应关系。在C ++中你必须初始化值,如果没有发生,那么会有一些随机值。所以我认为OpenCV之前没有用零填充数组。所以这就是为什么它可能发生的错误真的很小,但没有状态位!

Here is some explenation how it Lucas-Kanada Method works.

当我在OpenCV中实现光流时,我找到了this很好的链接。

这本书Mastering OpenCV with Practical Computer Vision Projects也有一个有用的章节。