一、前言
此示例演示如何使用对象和函数来跟踪对象。
二、介绍
卡尔曼滤波器有许多用途,包括控制、导航、计算机视觉和时间序列计量经济学方面的应用。此示例说明了如何使用卡尔曼滤波器跟踪对象,并重点介绍三个重要功能:
预测物体的未来位置
减少因检测不准确而引入的噪声
促进多个对象与其轨道的关联过程
三、对象跟踪的挑战
在展示卡尔曼滤波器的使用之前,让我们先来看看跟踪视频中物体的挑战。以下视频显示了一个绿色球在地板上从左向右移动。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
球上方的白色区域突出显示使用 检测到的像素,这将移动的物体与背景分开。背景减法只能找到球的一部分,因为球和地板之间的对比度很低。换句话说,检测过程并不理想,并且会引入噪声。
为了轻松可视化整个物体轨迹,我们将所有视频帧叠加到单个图像上。“+”标记表示使用 blob 分析计算的质心。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
可以观察到两个问题:
区域的中心通常与球的中心不同。换句话说,球的位置测量存在误差。
当球被盒子遮挡时,球的位置不可用,即缺少测量值。
这两个挑战都可以通过使用卡尔曼滤波器来解决。
四、使用卡尔曼滤波器跟踪单个对象
使用之前看到的视频,该函数向您展示如何:
使用创建
按顺序使用和方法消除跟踪系统中存在的噪声
使用方法本身来估计球被盒子遮挡时的位置
卡尔曼滤波器可解决两种不同的情况:
当检测到球时,卡尔曼滤波器首先预测其在当前视频帧处的状态,然后使用新检测到的物体位置来校正其状态。这将生成筛选的位置。
当球丢失时,卡尔曼滤波器仅依靠其先前的状态来预测球的当前位置。
您可以通过叠加所有视频帧来查看球的轨迹。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
五、探索卡尔曼滤波器配置选项
配置卡尔曼滤波器可能非常具有挑战性。除了对卡尔曼滤波器的基本了解外,通常需要进行实验才能提出一组合适的配置参数。
“运动模型”设置必须与对象运动的物理特性相对应。您可以将其设置为恒定速度或恒定加速度模型。以下示例说明了做出次优选择的后果。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
请注意,球出现在与预测位置完全不同的位置。从球被释放的那一刻起,由于地毯的阻力,它就会不断减速。因此,恒加速度模型是更好的选择。如果保留恒定速度模型,则无论为其他值选择什么值,跟踪结果都将是次优的。
通常,您将“初始位置”输入设置为首次检测到对象的位置。您还将InitialEstimateError向量设置为较大的值,因为初始状态可能非常嘈杂,因为它是从单个检测派生的。下图演示了错误配置这些参数的影响。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
由于参数配置错误,卡尔曼滤波器返回的位置需要几个步骤才能与物体的实际轨迹对齐。
测量噪声的值应根据检测器的精度进行选择。将测量噪声设置为较大的值,以使检测器精度较低。以下示例说明了配置错误的分段阈值的干扰检测。增加测量噪声会导致卡尔曼滤波器更多地依赖于其内部状态而不是输入测量值,从而补偿检测噪声。
编辑切换为居中
添加图片注释,不超过 140 字(可选)
通常,物体不会以恒定的加速度或恒定的速度移动。您可以使用运动噪声来指定与理想运动模型的偏差量。当您增加运动噪声时,卡尔曼滤波器更多地依赖于输入测量值,而不是其内部状态。尝试使用“运动噪声”参数以了解有关其效果的更多信息。
现在您已经熟悉了如何使用卡尔曼滤波器以及如何配置它,下一节将帮助您了解如何将其用于多对象跟踪。
六、使用卡尔曼滤波器跟踪多个对象
跟踪多个对象会带来一些额外的挑战:
多个检测必须与正确的轨道相关联
必须处理场景中出现的新对象
当多个对象合并到单个检测中时,必须维护对象标识
对象与函数一起可以帮助解决以下问题
将检测分配给轨道
确定检测是否对应于新对象,换句话说,跟踪创建
就像在被遮挡的单个对象的情况下一样,预测可用于帮助分离彼此靠近的对象
七、程序
程序下载方式一:基于matlab使用卡尔曼滤波器进行对象跟踪资源-CSDN文库
程序下载方式二:基于matlab使用卡尔曼滤波器进行对象跟踪