问题标签 [kalman-filter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4421 浏览

matrix - 卡尔曼增益和误差协方差矩阵应该是对角线吗?

我开发了一个扩展卡尔曼滤波器并将卡尔曼增益矩阵、前一个、当前和下一个状态误差协方差矩阵初始化为 1 的对角线。在第一个样本之后,矩阵不再是对角线。这是正确的还是应该保持对角线?

0 投票
1 回答
3443 浏览

opencv - 具有四个输入参数的卡尔曼滤波器

几天来,我一直在研究卡尔曼滤波器的操作,以提高我的人脸检测程序的性能。根据我收集的信息,我整理了一个代码。卡尔曼滤波器部分的代码如下。

在人脸检测部分(未示出)中,为检测到的人脸画了一个框。'X, Y, faceWidth and faceHeight' 是盒子的坐标以及传入卡尔曼滤波器的宽度和高度。“img1”是视频的当前帧。

结果:

虽然我确实从“state_post”和“prediction”数据中得到了两个新矩形(如代码中所示),但它们似乎都没有比没有卡尔曼滤波器绘制的初始框更稳定。

以下是我的问题:

  1. 矩阵是否已初始化(转换矩阵 A、测量矩阵 H 等),对于这四个输入情况是否正确?(例如,四个输入的 4*4 矩阵?)
  2. 我们不能将每个矩阵都设置为单位矩阵吗?
  3. 我在绘制矩形之前遵循的方法理论上是否正确?我遵循了本文中的示例以及不使用外部输入的“Learning OpenCV”一书。

任何有关这方面的帮助将不胜感激!

0 投票
1 回答
2828 浏览

c++ - OpenCV 卡尔曼滤波器错误

我使用 OpenCV 来预测通过网络摄像头看到的球的运动。但是我不断收到关于 cvKalmanPredict 状态的错误,因此我将代码简化为这几行并尝试单独测试过滤器:

但是,在调用 cvKalmanPredict 时我仍然遇到同样的错误:

我正在使用带有 MS Visual C++ 10 的 cmake 进行编译。

0 投票
2 回答
2161 浏览

computer-vision - 使用卡尔曼滤波器对手部跟踪数据进行在线平滑

我将 Kinect 与 OpenNI/NITE 一起使用。OpenNI 可以在 NITE 的帮助下跟踪人手。此外,OpenNI 可以平滑跟踪的手线,我试图弄清楚它是如何做到的。

我尝试使用卡尔曼滤波器,用卡尔曼估计的手部位置替换旧的手部位置,但 OpenNI 中的平滑度仍然要好得多。

我将不胜感激有关如何平滑在线数据或如何在卡尔曼滤波器中设置参数的任何线索(特定于手部跟踪的东西,因为我已经知道参数的作用)。

0 投票
1 回答
1193 浏览

algorithm - DeviceMotion 采用什么算法从加速度计和陀螺仪计算姿态?

根据参考资料, deviceMotion 属性仅适用于同时具有加速度计和陀螺仪的设备。这是因为它的子属性是传感器融合算法的结果,即两个信号一起评估以减少估计误差。

嗯,我的问题是 CMMotionManager 用来进行计算的内部实现或算法在哪里。我想要一些关于这个所谓的“传感器融合算法”的细节

流行的融合算法是例如卡尔曼滤波器和导数,但我猜 CMMotionManager 的内部实现是基于更简单,因此更快的算法。我希望对来自加速度计和陀螺仪的传感器数据进行一些简单但足够好的数学计算,最终计算出横滚、偏航和俯仰

0 投票
5 回答
6857 浏览

matlab - 卡尔曼滤波器,汽车跟踪,Matlab

我有一个移动汽车的小数据集:

我知道在这种情况下,速度和加速度不是恒定的。

我想估计不同时间的汽车位置。我决定使用卡尔曼滤波器。我搜索了卡尔曼滤波器,但找不到用于在 3D 空间中以速度和加速度跟踪对象的代码。我不知道从哪里开始。卡尔曼滤波器可以自动处理速度和加速度吗?

有人可以帮助我并提供一些链接或指导吗?

0 投票
1 回答
1232 浏览

c++ - OpenCV 2.4:对 cvRand 的未定义引用

我找不到我必须包含在我的代码中以使编译器识别 cvRand (以及所有其他相关函数,例如 cvRandInit ... )的文件。这很奇怪,因为过去这段代码一直按原样工作。一定是 OpenCV2.4 的问题。

此外,当我右键单击 cvRand(我使用 Qt Creator)并要求跟随光标下的符号时,IDE 会打开一个名为 compat.hpp 的文件。我有几个名为 compat.hpp 的文件,所以我不知道我必须包括哪一个。我的操作系统是 Ubuntu 11.04。

到目前为止,我包括了 core.hpp、highgui.hpp 和 cv.h。

我对此进行了谷歌搜索,但找不到任何相关问题......所以我想这不是问题,我只是想念一些愚蠢的东西。

0 投票
0 回答
1407 浏览

opencl - 使用 OpenCL 的卡尔曼滤波器

我是一名新的 OpenCL 程序员,刚刚进入 GPGPU 计算领域,我正在使用 Nvidia Quadro 600。我正在基于 GPU 编程进行研究工作,我的目标是使用 SIMT 为 OpenCL 编写一个简单的卡尔曼滤波器内核方法。我发现这个文档描述了如何使用 CUDA 完成的原理,我认为这与 OpenCL 的方法类似。

卡尔曼滤波器对线性系统所做的基本操作是三个方程,每个方程都涉及矩阵操作,计算卡尔曼增益矩阵 (K)、状态估计 (x~),并更新误差协方差矩阵 (P)下一个状态估计。这三个步骤针对从实际系统中进行的每个测量进行迭代。考虑到 SIMT 方法,我想在线程块内的每个 gpu 线程上执行一次卡尔曼滤波器迭代,我向每个线程发送计算迭代所需的值(来自真实系统测量的输入和输出,线性系统矩阵) .

有一些更好的设计我可以考虑用 OpenCL 来完成这个算法?以并行方式在单独的内核上进行矩阵运算是可能的(并且有用的)?

另一个问题:假设我们有 k 次迭代,对于每次迭代 k,我们计算步 k+1 的 P,将迭代 k-1 中步 k 的 P 作为输入...由于每个胎面计算一次迭代,因此可以同步线程 k 以等待来自线程 k-1 的 P 矩阵?

更新:经过多次搜索和尝试,我认为不可能使我的实现(如上所述)针对这个问题适应 OpenCL 的操作原则。我发现这样做的唯一方法是并行化每个单个矩阵运算,可能使用更多 GPU 同时计算每个矩阵运算。这种实现的真正效率可以通过大线性系统进行过滤来实现(这意味着:它适用于大矩阵)。

0 投票
2 回答
916 浏览

kalman-filter - 定义卡尔曼滤波器及其应用(概念)

我有一个简单的问题。我正在跟踪一个对象并以非均匀的时间间隔获取它的位置。物体的速度和加速度不是恒定的。

要设计卡尔曼滤波器,我需要定义

问题1:这两个R&P有什么区别如果测量精度为1mm,P是多少?问题2:在后期处理中使用这种卡尔曼滤波器有什么好处。如果是的话,它可以得到平滑的轨迹,为什么我们需要它。

希望我能从你们那里得到足够的信息。

0 投票
0 回答
495 浏览

python - 卡尔曼滤波器 python OpenCV 2.4.0 中的断言错误

当我试图预测卡尔曼时,

我得到以下断言错误。

错误:/home/jay/Downloads/OpenCV-2.4.0/modules/core/src/matmul.cpp:711:错误:(-215) type == B.type() && (type == CV_32FC1 || type == CV_64FC1 || 类型 == CV_32FC2 || 类型 == CV_64FC2) 在函数 gemm

所以,我添加了以下代码行OpenCV-2.4.0/modules/core/src/matmul.cpp

所以,现在它给了我输出,

5 5

0 6

我在这里做错了吗?有什么问题 ?