【问题标题】:Optical Flow class in opencv(CalcOpticalFlowPyrLK) Parametersopencv(CalcOpticalFlowPyrLK)参数中的光流类
【发布时间】:2014-07-20 05:31:05
【问题描述】:

我对 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(已找到)但错误会爆炸。 例如,我有第 t 帧,我尝试跟踪第 t+1 帧中的特征。在第 t 帧中,所有特征都在那里。在第 t+1 帧中,特征消失了(眨眼),但状态仍然是 1。

【问题讨论】:

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


    【解决方案1】:

    这两个值的联系是你首先要检查状态数组。状态数组表示是否找到了特征点。此“检查”的优先级高于错误。文档说:“如果没有找到流程,则没有定义错误”。但是无论如何都必须分配内存以保持索引对应关系。在 C++ 中,您必须初始化值,如果没有发生这种情况,将会有一些随机值。所以我认为 OpenCV 之前没有用零或其他东西填充数组。这就是为什么会发生错误非常小,但没有状态位的原因!

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

    当我在 OpenCV 中实现光流时,我发现 this 不错的链接。

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

    【讨论】:

    • 感谢链接非常有用!!
    • 没问题,为了更好的结果,我做了一些 RANSAC 过滤。如果您想了解更多详细信息,我可以告诉您。
    • 好吧,我会对你的方法感兴趣 :) @PeterNL
    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多