卡尔曼滤波眼动跟踪

4

我希望使用OpenCV实现卡尔曼滤波器来跟踪眼睛(特别是眼球)。我在互联网上读了一些关于卡尔曼滤波器的内容。我需要设置我的滤波器状态。作为状态,我可以使用什么?我唯一可用的数据是眼睛的3D坐标(x,y,z)。

1个回答

5
要使用卡尔曼滤波器,您必须先了解它。到目前为止,我发现最易于理解的介绍和示例是SIGGRAPH Course Pack
更新:
我不知道OpenCV中的卡尔曼滤波器实现。
滤波器的状态可能是眼睛的真实坐标。然而,您只能从帧中估计它(这些是您在问题中写下的坐标),因此需要滤波器。
要将Kalman滤波器用作黑盒,仍需要:
1. 状态的初始估计 2. 测量噪声协方差R 3. 过程噪声协方差Q 1的合理估计是第一帧上的眼睛坐标。
至于2和3,请参见SIGGRAPH Course pack中的5.1参数估计或调整。
也许示例4.3一个例子:估计随机常数也有助于理解卡尔曼滤波器的工作原理以及您需要的内容。

1
我已经读过了,但是我完全不知道状态对我来说是什么!如果我选择三维坐标作为测量单位,那状态又怎么样呢? - Titus Pullo
好的,我尝试澄清一下,希望现在答案更好了一些。 - Ali
我理解了滤波器的工作原理,但是我不知道如何将其应用到我的问题上。我的状态是眼睛的实际位置,我的测量值是通过眼部检测获得的像素坐标,对吗? - Titus Pullo
是的,作为一个开始,你可以试试这个。滤波器的状态取决于过程模型。如果您有一个复杂的过程模型,除了(x,y,z)坐标之外,您可能需要额外的状态变量。但是,我不知道OpenCV实现和它的过程模型/您的过程模型。 - Ali
如果我选择我的状态为(x,y,dx,dy),其中dx是x的导数,那么我如何设置转移状态矩阵以表示线性运动? - Titus Pullo
这是一个不同的问题,即什么是过程模型?我希望OpenCV能够为此任务提供现成的卡尔曼滤波器实现,无需重新发明轮子。很抱歉我无法帮助您解决此问题,因为我不知道OpenCV的实现方式。如果您无法弄清楚OpenCV正在做什么,请发布一个关于实现细节的新问题。 - Ali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接