Matlab 如何配置卡尔曼滤波器矩阵来跟踪移动输送机上的对象
我正在建立一个视觉传送系统,用于在我的项目工作中计算类似的小物体。 目标检测是平滑的。但我在跟踪部分有问题 背景:Matlab 如何配置卡尔曼滤波器矩阵来跟踪移动输送机上的对象,matlab,opencv,image-processing,computer-vision,kalman-filter,Matlab,Opencv,Image Processing,Computer Vision,Kalman Filter,我正在建立一个视觉传送系统,用于在我的项目工作中计算类似的小物体。 目标检测是平滑的。但我在跟踪部分有问题 背景: 输送机:单向,恒定速度为1.5英尺/秒 摄像机:Logitech c920,分辨率为800x600px,每秒30帧 跟踪对象:矩形20mm x 10mm 对象仅在视野中停留约8帧 代码工作流: 如果我以每秒30帧的速度拍摄连续视频,每个对象(质心)的移动距离精确到每帧52像素。 在离线模式(处理保存的视频)下,我可以简单地通过向每个跟踪对象的质心.x添加52个像素来预测下一个位置
质心.x
添加52个像素来预测下一个位置
但是,当我上网时,由于处理时间的原因,帧速率下降到15-20 FPS。
因此,对象的下一个位置
从80到200像素/帧不等。
现在我必须动态预测下一个位置,因此我选择卡尔曼滤波
问题陈述:
我的问题是将卡尔曼矩阵配置到我的“等速单向系统模型”。
(由于振动,y轴的变化非常小,最大为0到5像素)
物体的速度不会有误差,但不规则
帧捕获事件导致预测帧的错误
下一个地点
我读了很多教程,比如,等等。在每一个教程中,我都能清楚地理解卡尔曼滤波器可以做什么,关于它如何通过状态方程进行预测,但矩阵填充部分对我来说似乎超级复杂
在一些实现代码中,比如,或者,我可以看到所有的矩阵都被填充,但是我不知道哪个矩阵的哪个元素需要更改以满足我的需求
明确提供了恒速度和恒加速度运动模型的矩阵,并在脱机模式下适当地预测了我的对象
stateTransitionModel= [1 1 0 0 ; 0 1 0 0 ; 0 0 1 1 ; 0 0 0 1];
measurementModel = [1 0 0 0 ; 0 0 1 0];
state=[centroid(1);0;centroid(2);0];
stateCovariance=[20 0 0 0; 0 5 0 0; 0 0 20 0; 0 0 0 5];
processNoise= [100 0 0 0; 0 25 0 0; 0 0 100 0; 0 0 0 25];
measurementNoise= [100 0; 0 100]
但是,当我在OpenCV-C++中使用相同的6个矩阵时,卡尔曼滤波器甚至没有预测单个<代码> NExtEXLoC < /代码>。它只是指向每个质心的前一个位置
如果有人能解释一下矩阵是如何
矩阵元素对系统建模有什么影响
配置应用于“恒定速度,
我提到的“单向”输送机设置,错误在哪里
是由相机的变化帧速率引起的
我所有问题的列表:
如何在openCV中为等速模型配置状态转换和测量矩阵
帧速率引起的误差应建模为过程噪声还是测量噪声?如何为它们分配适当的矩阵值
我的初始状态协方差应该是多少
抱歉问了太多问题。我真的试图自己找到答案,但我有限的数学知识无法弥合理论和代码之间的鸿沟。如果你知道图像的时间戳,你可以计算每次的恒定偏移量,不是吗?我想卡尔曼滤波器也需要时间戳。该死的,是的!那也许行得通。我太专注于基于卡尔曼滤波的预测,以至于错过了这个简单但非常有效的替代方案。计算上一帧的时差->基于时差计算偏移。天啊!!迫不及待地要实施您的解决方案。非常感谢。解决方案非常有效。谢谢,米卡,很高兴听到。你可以自己写答案,如果你愿意的话可以接受。我在找类似的东西,你做了吗?