如何在CamShift中平滑跟踪
我正在使用OPENCV库功能进行手动跟踪项目.通过使用Camshift()功能,我能够跟踪我的手,但是它不稳定,即使我使手稳定,跟踪几乎没有运动.因此,我无法在正确的位置执行鼠标单击操作.有人请帮助我弄清楚这一点. void TrackingObjects::drawRectangle(CvRect objectLocation){ CvPoint p1, p2,mou; CvRect crop; p1.x = objectLocation.x; p2.x = objectLocation.x + objectLocation.width; p1.y = objectLocation.y; p2.y = objectLocation.y + objectLocation.height; cvRectangle(image,p1,p2,CV_RGB(0,255,0),1,CV_AA,0); mou.x=(p2.x-p1.x)/2; mou.x=p1.x+mou.x; mou.y
0 2023-11-20
编程技术问答社区
使用卡尔曼滤波器来跟踪一个物体的位置,但需要知道该物体的位置作为卡尔曼滤波器的输入。发生了什么事?
我正在尝试研究如何使用Kalman过滤器跟踪对象(Ball)我自己以视频序列移动的对象(Ball),因此请在我的孩子时向我解释一下. 通过某些算法(颜色分析,光流...),我能够获得每个视频框架的二进制图像,其中有跟踪对象(白色像素)和背景(黑色像素) - >我知道对象大小,对象质心,对象位置 - >只是简单地绘制对象周围的边界框 - >完成.为什么我需要在这里使用Kalman过滤器? 好吧,有人告诉我,因为由于噪声而无法在每个视频框架中检测到对象,所以我需要使用Kalman滤波器来估计对象的位置.好的.但是,如我所知,我需要为卡尔曼过滤器提供输入.它们是以前的状态和测量. 以前的状态(我认为这是上一个帧中对象的位置,速度,加速度...) - >好吧,这对我来说很好. 测量当前状态:这是我无法理解的.可以测量什么? - 对象在当前帧中的位置?这很有趣,因为如果我知道对象的位置,我所需要的只是在对象周围绘制一个简单的边界盒(矩形).为什么我在这里需要Kalman过滤
0 2023-11-18
编程技术问答社区
C ++/OPENCV -KALMAN过滤器用于视频稳定
我尝试使用卡尔曼过滤器稳定视频以进行平滑.但是我有一些问题 每次我都有两个框架:一个电流和另一个. 在这里我的工作流程: 计算GoodFeatuRestotrack() 使用calptricationflowpyrlk() 计算光流 只保留好点 估计刚性转换 使用卡尔曼过滤器平滑 图片的翘曲. ,但我认为卡尔曼有问题,因为最后我的视频仍然没有稳定,它根本不光滑,它比原始视频更糟... 在这里我的卡尔曼代码 void StabilizationTestSimple2::init_kalman(double x, double y) { KF.statePre.at(0) = x; KF.statePre.at(1) = y; KF.statePre.at(2) = 0; KF.statePre.at(3) = 0; KF.transitionMatri
0 2023-11-18
编程技术问答社区
IMU速度估计
您知道我可以在哪里找到来自IMU(ACC+Gyro+磁力计)数据的速度估算的代码或示例.我从IMU站立的数据中计算出偏见.我想用某种过滤器(Kalman/补充)实现速度估计,但找不到任何速度.我也有相机速度估计,也许可以作为某种融合有帮助? 先感谢您! 亲切的问候 解决方案 我没有示例代码,可以完全适合您的情况.但是这种方法可以帮助(基于过去的经验), 卡尔曼过滤器: 决定并制定状态X,控制输入U,输出,预测和观察方程. 实施/重复了Kalman过滤器的某些实现.这是一个基于simulink的设置测量噪声和预测误差方差.以后可能需要进行一些微调. 验证KF是否反对某些参考.如果您有另一种测量速度的方法,请检查针对它的KF速度. 状态和控制输入: 状态可以是包含 的数组 线性速度[VX,VY,VZ] 角速度[Omega_x,Omega_y,Omega_z] 陀螺仪中的偏见.这种偏见在很大程度上是恒定的,但会随温度和其他因素而变化. KF将使用加速
12 2023-11-17
编程技术问答社区
请解释一下卡尔曼滤波器在本教程中的用途。
一个人发表的家伙但是,一个人发布了以下问题:" 在此代码中,您在每个帧中都进行了检测,并且作为Kalman过滤器的输入提供了此输出.SO背景减法和Kalman滤波器将给出类似的结果.因此,请您在此处解释使用Kalman Filter. " 我和他有同样的想法. 有人可以在此处解释使用Kalman过滤器吗? 解决方案 用背景减法的简单检测将在每个样本期间都会产生结果,但是结果将是嘈杂的(由于测量噪声以及可能的量化),并且检测错误将产生巨大的影响. > 如果您想观察一个对象,您通常会对它的移动方式有所了解.它不会从一个位置跳到下一个位置,而要连续地移动.卡尔曼过滤器结合了简单检测算法的测量结果,并将它们与您对对象的模型知识相结合(位置无法跳跃),因此它过滤了测量并考虑了测量的历史记录.考虑到线性系统,您可以证明卡尔曼过滤器是考虑系统测量噪声的最佳方法. 编辑:在本教程中,卡尔曼过滤器显然用于预测下一步的球位置.在向下运动中,这效果很好.由于过滤器对地板一无所知,当
12 2023-10-25
编程技术问答社区
卡尔曼跟踪-测量方差
我正在使用安装在向下朝下的摄像头安装的天花板跟踪移动对象进行一些工作.我必须要检测到每个帧中所需对象的位置. 我正在考虑使用Kalman滤波器跟踪对象的位置和速度在场景中,并且已经到达了一个绊脚石.我已经设置了系统,除了测量差异外,还拥有Kalman过滤器的所有必需部分. 我希望能够为每个测量值分配有意义的差异,以允许校正阶段以明智的方式使用新信息.我有几种措施分配给我检测到的对象,从理论上讲,这些措施在确定位置的准确程度上很有用,并且尝试结合它们以得出合适的方差似乎是合乎逻辑的. 我是以正确的方式来接近这一点吗? 任何帮助都非常感谢. 解决方案 我认为你是对的.根据这篇文章: 传感器与Kalman Filter融合 确定方差为100%实验.在我看来,您拥有对差异进行良好估计所需的一切. 其他解决方案 对不起,回复了.我个人在以前的项目中遇到了同样的问题.我在他的传感器融合演讲幻灯片中找到了建议的建议(幻灯片的第10页)非常有价值. 总结:
2 2023-10-24
编程技术问答社区
关于使用卡尔曼滤波器跟踪移动的球的问题
我想学习使用卡尔曼过滤器跟踪移动的球.尽管有很多教程可用,但我仍然有一些问题. 如果我们可以在视频序列的每个帧中提取球,我们将知道球的位置.那么,为什么我们需要再使用Kalman智能? Kalman过滤器的工作是什么? 卡尔曼滤波器:x(k + 1)= a.x(k) + b.u(k) +噪声 y(k) = C.x(k) + noise 那么,我们如何定义A,B,C?假设我们想跟踪移动的球? 3.如果我们知道先前的状态X(K-1)和当前状态y(k)的测量,则可以计算估计的状态.在跟踪移动球的情况下,"测量"是什么? 解决方案 基本上您使用跟踪方法来跟随场景中的球.您仍然必须在每个时间步中检测到球. (1) 假设您进入了另一个球进入现场的地步.因此,您需要找到一种识别每个球的方法.使情况变得更糟,甚至让他们彼此交叉或在可能隐藏一会儿的方式上遇到障碍. 您的跟踪方法(即卡尔曼过滤器)将根据球以前的移动方式继续其在
0 2023-10-24
编程技术问答社区
过滤流数据以减少噪声,Kalman Filter C#
我将数据流到了惯性传感器的C#应用​​程序中.数据有点嘈杂,因此我需要添加一个过滤器以使其平滑.我有一个Kalman过滤器实现,在给出数组时效果很好,但是我无法围绕如何在恒定数据流上使用它. 我有: double sensorData; //the noisy value, constantly updating from another class. 过滤器: public static double[] noisySine = new double[20] { 40, 41, 38, 40, 45, 42, 43, 44, 40, 38, 44, 45, 40, 39, 37, 41, 42, 70, 44, 42 }; public static double[] clean = new double[20]; public static void KalmanFilter(double[] noisy) {
6 2023-09-30
编程技术问答社区
计算机视觉中的卡尔曼滤波:Q和R噪声协方差的选择
我阅读了有关CV对象跟踪的Kalman Filter的一些作品,但我找不到有关以下选择的参考:1)过程噪声协方差q; 2)测量噪声协方差R.到目前为止,我已经意识到该模型是运动方程(某人使用加速度作为状态变量,其他人仅使用位置和速度),但是没有人知道Q和R选择包括Mathworks: http:///www.mathworks. it/it/it/help/vision/示例/使用 - kalman-forter-for-object-tracking.html 最近我找到了此页: http://blog.cordiner. net/2011/05/03/object-tracking-using-a-a-kalman-filter-matlab/ 但是Q和R分配尚不清楚.有人知道帮我吗? 解决方案 r是假定为高斯的测量噪声的协方差矩阵.在视频中跟踪对象的上下文中,这意味着您的检测错误.假设您正在使用面部检测器来检测面,然后您想使用Kalman滤镜跟踪它们.您运行探测器,每张脸部
2 2023-09-04
编程技术问答社区
Python 使用卡尔曼滤波器改进模拟,但得到的结果更糟
我对将Kalman过滤器(KF)应用于以下预测问题进行的行为有疑问.我包含了一个简单的代码样本. 目标:我想知道,使用现已获得的测量结果(在t),KF是否适合提前一天(t+24小时)改善预测/仿真结果.目的是使预测尽可能接近测量 假设: 我们假设测量是完美的(即. 我们有一个单个测量变量(z,真实风速)和一个模拟变量(x,预测的风速). 使用各种气象数据(对我来说,黑匣子),由NWP(数值天气预测)软件生产模拟风速X.每天生成仿真文件,每半小时包含数据. 我尝试使用我现在获得的测量值和现在使用标量Kalman滤波器纠正T+24小时预测.作为参考,我使用了: /scalarkalman.html 代码: #! /usr/bin/python import numpy as np import pylab import os def main(): # x = 336 data points of simulated wind spee
2 2023-09-04
编程技术问答社区
整合陀螺仪和加速度计读数
可能的重复: combine gysoscope and agyerseper data 我已经在Kalman filters上阅读了许多论文,但是从数学论文到实际工作代码获得的公开访问示例似乎很少. 我有一个系统,该系统包含三轴加速度计和一个陀螺仪测量围绕加速度计轴之一的旋转.该系统旨在由人类持有,并且在大部分时间里,陀螺仪将测量重力矢量或靠近它的旋转. (在同一行业工作的人们可能会认识到我在说什么;)我意识到这是不受限制的. 陀螺仪似乎具有接近恒定的偏置,对于系统的每个实例,该偏差都略有不同.我将如何在系统倾斜时使用加速度计读数来使用加速度计读数来校准陀螺仪,以使陀螺轴不与重力共线,并且正在绕陀螺轴旋转?似乎应该有足够的信息来做到这一点,但是被告知没有,为什么也是一个答案:) 解决方案 其他解决方案 您似乎在这里有两个(或三个)单独的问题. 1.您真的不理解卡尔曼过滤器和/或它们背后的数学.这将使正确实施和使用一个. 2.您似乎不了解问题所涉及的
68 2023-09-03
编程技术问答社区
2个传感器读数融合(偏航、俯仰)。
目前,我正在实施一种头部跟踪解决方案,该解决方案从2个差异来源中获得偏航和俯仰.陀螺仪和磁场传感器. 我都有传递给我程序的值,现在我正在尝试确定固定发射极MF传感器的无损性质保持陀螺仪的精度.目前,我正在使用Newyaw = CurrentGyRoyaw + 0.05*(差异)缓慢地将陀螺仪拖到MF上,但它具有相当恒定的运动. 有人建议我尝试使用Kalman过滤器,但我整天都在查找资源,但似乎无法弄清楚如何将其应用于我的情况;在我的情况下,所有的价值观是什么. 如果有人可以帮助伪造的步骤和计算,我需要采用2个偏航/俯仰值并产生新的精确设置,这将不胜感激.谢谢. 解决方案 基本上,该技术称为传感器融合.是的,您可以使用基于卡尔曼过滤器的传感器融合.请阅读此如果我对您的问题进行了更多解释,则您有两个传感器可以提供偏航和俯仰.如果我遵循上面提到的相同符号,则C矩阵应该喜欢,
4 2023-08-28
编程技术问答社区
用卡尔曼滤波器进行传感器融合
我有兴趣,在Kalman滤波器中,如何建立传感器融合设置中的双输入? 例如,您有一个加速度计和陀螺仪,并希望呈现"地平线"级别,就像在飞机中一样,在这里进行类似的演示. 您实际上如何收集两个传感器的正属性并最大程度地减少负面? 这是在观察模型矩阵中建模的(通常由资本H象征)? 备注:在 math.stackexkexkexchange.com 解决方案 通常,传感器融合问题来自贝叶斯定理.实际上,您的估计值(在这种情况下,地平线级别)将是传感器的加权总和,该总和是由传感器模型进行了催化的.对于双传感器,您有两个共同的选择:模型一个两个传感器系统并得出每个传感器的Kalman增益(使用系统模型作为预测变量),或使用不同的观察模型运行两个校正阶段.在给定两个不同的信息源的情况下,您应该查看贝叶斯预测变量(比Kalman过滤器要比Kalman过滤器更一般一点),这是从最小化估计值的最小化中得出的.如果您的加权总和最小化了两个传感器的总和,则获得Kalman的增益
4 2023-08-28
编程技术问答社区
如何在Python中使用卡尔曼滤波器处理位置数据?
[编辑] @claudio的答案为我提供了一个很好的提示,即如何过滤离群值.不过,我确实想开始在我的数据上使用Kalman过滤器.因此,我更改了下面的示例数据,以使其具有微妙的变化噪声,这些噪声并非如此(我也看到很多).如果其他人可以给我一些关于如何在我的数据上使用Pykalman的指导,那将是很棒的. [/edit] 对于一个机器人项目,我试图用相机在空中跟踪风筝.我正在Python中编程,我粘贴了下面的一些嘈杂位置结果(每个项目还包含一个DateTime对象,但我将其遗漏了). ). [ # X Y {'loc': (399, 293)}, {'loc': (403, 299)}, {'loc': (409, 308)}, {'loc': (416, 315)}, {'loc': (418, 318)}, {'loc': (420, 323)}, {'loc': (429, 326)}
2 2023-08-28
编程技术问答社区
python中的卡尔曼2D过滤器
我的输入是在屏幕上移动跟踪器软件的点的2D(x,y)时间序列.我想使用Kalman过滤器去除一些噪音.有人可以为我指向Kalman 2D过滤器的Python代码吗? 在Scipy食谱中,我只找到了一个1D示例: http://www.scipy.org/cookbook/kalmanfiltering 我看到OPENCV中的Kalman过滤器实现了,但找不到代码示例. 谢谢! 解决方案 这是我基于方程式的在下面的示例中,kalman_xy假设状态向量是一个4核心:位置的2个数字,速度为2个数字. F和H矩阵已专门为该状态向量定义:如果x是4支马状态,则 new_x = F * x position = H * x 然后调用kalman,这是广义的卡尔曼过滤器.从某种意义上说,如果您想定义不同的状态向量,这仍然是有用的 - 也许是一个代表位置,速度和加速度的6核心.您只需要通过提供适当的F和H来定义运动方程. import numpy as np import ma
8 2023-08-21
编程技术问答社区
使用卡尔曼滤波器跟踪位置和速度
我正在使用Kalman滤波器(常数速度模型)来跟踪对象的柱路和速度.我测量对象的x,y,并跟踪x,y,vx,vy.它有效,但是如果向传感器读数添加 +-20 mm的高斯噪声x,y,vx,vy,即使点不只是移动噪声,也会波动.对于足以满足我的需求的位置,但是当点静止并且导致我的对象速度计算问题时,速度会发生变化.有办法解决这个问题吗?另外,如果切换到恒定加速模型对此有所改善?我正在通过相机跟踪机器人. 我正在使用OpenCV实现,而我的Kalman模型与[1] 相同 [1] http://www.morethantechnical.com/2011/06/17/simple-kalman-filter-for-for-tracking-racking-usish-using-opencv-2-2-w-code/ 解决方案 设计卡尔曼过滤器最重要的不是数据,而是错误估计.该示例中的矩阵似乎是任意选择的,但是您应该使用对系统的特定知识选择它们.特别是: 错误协方差具有单
56 2023-08-12
编程技术问答社区
如何使用 'KFAS'R软件包估计卡尔曼滤波器的AR(1)转换方程?
我正在使用从R的" KFAS"软件包使用Kalman滤波器估算状态空间模型.我的测量和过渡方程是: y_t = z_t * x_t + \ eps_t(measurement) x_t = t_t * x_ {t-1} + r_t * \ eta_t(transition), with \ eps_t〜n(0,h_t)和\ eta_t〜n(0,q_t). 因此,我想估计差异H_T和Q_T,但也想估计T_T,AR(1)系数.我的代码如下: library(KFAS) set.seed(100) eps
8 2023-07-27
编程技术问答社区
卡尔曼滤波器从未来预测前一步
我是Kalman过滤器的新手,并试图将其用于预测缺失值,并从GPS数据(纬度和经度)中获得平滑的观察. 我正在使用Pykalman,我的代码块看起来像: data = data[['Lat', 'Lon']] measurements = np.asarray(data, dtype='float') measurements_masked = np.ma.masked_invalid(measurements) # initial state of the form [x0, x0_dot, x1, x1_dot] initial_state_mean = [ measurements[0, 0], 0, measurements[0, 1], 0 ] initial_state_covariance = [[ 10, 0, 0, 0], [ 0, 1, 0, 0],
6 2023-07-25
编程技术问答社区
如何调整一个行为怪异的Hessian来计算标准误差的优化
我正在使用Kalman滤波器来估计各种动态和套利的尼尔森 - siegel模型,以进行产量曲线.我给出一些启动值以最佳,算法收敛良好.但是,当我想使用最佳算法提供的Hessian计算标准误差时,由于方差协方差矩阵的对角线上的非阳性值,我得到了NAN.我认为这是因为我在许多本地Optima中具有高度非线性的功能,但是对于我尝试的所有起始值,它一直在发生. 我使用的功能是optim以及默认的Nelder-Mead算法. 我使用的命令是 opt_para par0 [1] 9.736930e-01 1.046646e+00 5.936238e-01 4.444669e-02 2.889251e-07 6.646960e+00 7.715964e-01 9
2 2023-07-22
编程技术问答社区
如何定义卡尔曼滤波器的状态转换矩阵?
我试图理解我正在阅读有关动态模型过渡矩阵(4x4)的阅读.它说该矩阵将在以下方程式映射到状态组件.方程是简单的物理方程: xt = x(t-1) + vx(dt) yt = y(t-1) + vy(dt) dt = 1 代表这一点的代码如下: dt = 0.1 DT = np.matrix([[1.,0.,dt,0],[0.,1.,0.,dt],[0.,0.,1.,0.],[0.,0.,0.,1.]]) 有人可以帮我理解吗?这到底是什么表示? 解决方案 状态过渡矩阵描述了您的状态如何在给定初始状态的时间内传播.对于线性时间流(LTI)系统,这是一个恒定矩阵. 例如,假设我有一个二维离散时间LTI模型: x(k+1)= x(k) ----(1) y(k + 1)= y(k) + 2x(k) -----(2) 这可以通过矩阵形式写入每个方程中的状态系数,如下所示: [x(k+1),y(k+1)] = [[1.0,0.0],[2.0,1
8 2023-07-21
编程技术问答社区