opencv中的光流类(CalcOpticalFlowPyrLK)参数

Optical Flow class in opencv(CalcOpticalFlowPyrLK) Parameters

本文关键字:CalcOpticalFlowPyrLK 参数 光流 opencv      更新时间:2023-10-16

我有一个关于CalcOpticalFlowPyrLK()类中的两个参数的问题。这是文档的链接:

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

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

其次是参数"status"。他们将其定义为找到相应特征(1)或未找到相应特征(0)的状态。我遇到过这样的情况,即跟踪特定特性的错误很低,并且该特性的状态为"未找到=0"。我也有相反的情况。

这两者之间有什么联系吗?我试着察觉眨眼。很明显,当我闭上眼睛时,我的角膜上的特征(闪烁)就不存在了。但是对于这一帧,状态仍然是1(found),但是错误爆发了。例如,我有帧t,我试图跟踪帧t+1中的特征。在坐标系t中,所有的特征都在那里。在第t+1帧中,特征消失了(眨眼),但状态仍然是1。

这两个值之间的联系是,您首先必须检查状态数组。状态数组表示是否找到了一个特征点。此"检查"具有比错误更高的优先级。文档说:"如果没有找到流,则错误没有定义"。但是无论如何都要分配内存来保持索引对应。在c++中,你必须初始化值,如果没有这样做,就会有一些随机值。我认为OpenCV不是用0或其他东西填充数组。所以这就是为什么它可能发生的错误是真的很小,但没有状态位!

下面是卢卡斯-加拿大方法的一些解释。

当我在OpenCV中实现光流时,我发现了这个很好的链接。

《Mastering OpenCV with Practical Computer Vision Projects》一书中也有一个有用的章节。