kalman滤波实现曲线平滑(qt画板)
使用qt完成画板绘图功能,由鼠标移动选取坐标完成绘制,但是因为抖动的因素导致绘制线条不够平滑,考虑使用kalman滤波优化坐标选择。
一、kalman滤波简单理解
Kalman滤波主要是用来跟踪某一个变量的值(在此为绘图的坐标位置)。首先根据系统的运动方程来对该值进行预测,比如我们知道本次点的位置以及运动方向,速率,则下时刻它的位置是可以预测到的,不过该预测会有误差(比如改变方向,改变速率),只能作为跟踪的依据。另一个依据是可以用测量手段来测量那个变量的值,当前鼠标的位置信息,当然该测量值可能不是我们需要的(比如抖动原因),所以可以看作有误差,也只能作为依据,不过这两个依据的权重比例不同。Kalman滤波就是利用这两个依据进行一系列迭代对目标进行预测并修正的。
Kalman滤波主要分为两个方面:预测下一个时刻的位置;修正当前状态的位置。采用递归的方法解决,并且其只需要当前的测量值(当前鼠标采集的坐标位置)和前一个采样周期的估计值就能进行状态估计,需要的存储空间小,每一步的计算量小。
二、kalman滤波方程
1.预测状态方程
由k-1时刻的最优值(k-1时刻kalman滤波的输出的点位置)和k时刻输入的点的位置计算出k时刻的预测值。
方程:
2.预测协方差方程
由k-1时刻的系统协方差预测k时刻系统协方差(由k-1时刻对点的改变程度预测k时刻对输入点位置的改变程度)
方程:
3.kalman增益方程
根据k时刻的协方差矩阵的预测值计算卡尔曼增益
方程:
4.更新最优值方程(卡尔曼滤波输出)
根据状态变量的预测值和系统测量值计算出k时刻状态变量的最优值(k时刻输出的点的位置)
方程:
5.跟新协方差方程
求k时刻的协方差矩阵。(为得到k+1时刻的卡尔曼输出值做准备)
方程:
五个方程的功能:方程1,2为预测方程,方程3计算kalman增益(采集的点占比的权重与预测点占比权重的分配),方程4利用两个预测值和比例计算输出量,方程5为下一时刻的方程预测做准备完成一个周期的循环。
三、滤波效果
未增加滤波效果
增加滤波后效果