运动目标跟踪中kalman滤波器的使用
目标跟踪的kalman滤波器介绍
Kalman滤波器是通过前一状态预测当前状态,并使用当前观测状态进行校正,从而保证输出状态平稳变化,可有效抵抗观测误差。因此在运动目标跟踪中也被广泛使用。在视频处理的运动目标跟踪里,每个目标的状态可表示为(x,y,w,h),x和y表示目标位置,w和h表示目标宽高。一般地认为目标的宽高是不变的,而其运动速度是匀速,那么目标的状态向量就应该扩展为(x,y,w,h,dx,dy),其中dx和dy是目标当前时刻的速度。通过kalman滤波器来估计每个时刻目标状态的大致过程为:
对视频进行运动目标检测,通过简单匹配方法来给出目标的第一个和第二个状态,从第三个状态开始,就先使用kalman滤波器预测出当前状态,再用当前帧图像的检测结果作为观测值输入给kalman滤波器,得到的校正结果就被认为是目标在当前帧的真实状态。
有何问题?
上面是大部分的做法,包括opencv都是如此实现的。但是,上面所述的使用方法也存在一定的问题。通常的监控场景都存在景深,一般而言,相机俯角不会太大(通常小于30度),那么在视频中同一个人在近处会比远处大很多,同样的其速度也会大很多(这里也假设目标真实世界中是匀速运动)。比如近端1个像素代表5mm,那么在远端则可能代表10mm,那人的大小和速度在近端都要大1倍。这样表现出来的现象就是对从近向远运动的目标,其输出的大小比实际大小大,位置会稍微超前;反之,从远向近运动的目标的输出状态大小则比实际大小小,位置会滞后。
如何解决?
通常见过一种做法,是把目标状态向量扩展为(x,y,w,h,dx,dy,ax,ay,dw,dh),其中ax,ay表示目标加速度,dw,dh表示目标大小的变化速度,相当于假定了目标在视频中是匀变速运动,且其宽高也在匀速变化。但是实际测试来看,该做法效果一般,并不能有效解决上述问题,目前原因不是很明确,估计是由于成像景深并不能满足上面的假设(即目标匀变速运动,宽高匀速变化这一假设)。
另一种有效的方法是把图像中的目标状态转换到真实状态,即是从图像坐标系映射到世界坐标系。在视频中目标任意一个确定状态(x,y,w,h)都可以唯一对应到真实世界中的(x1,y1,w1,h1),那么在真实世界中,目标通常是满足宽高不变,匀速运动的假设条件的,那么就可以使用kalman滤波器,最终只要将结构反映射回图像坐标系即可。
当然,需要做这样的映射,就必须要确定相机的架设参数,包括高度,俯角和焦距。架设固定后,高度可直接给出,焦距和俯角可以在此基础上通过视频标定计算出。另外一种情况是双目/多目成像,有2个或多个相机同时成像就可以直接实现目标在坐标系的转换,这一点是当时在几篇论文上看到的,实际没这么做过。
对于上面的视频标定,有时候可能显得过于麻烦,且计算也没那么方便,这时我们可以退一步来考虑,基于前面的假设,可以确定只要目标在同一种度量下,目标的大小和速度也会保持不变,那就可以简单点把图像中的目标都映射到图像同一位置后再进行kalman滤波,做法和映射到世界坐标系一样,但是该方法的标定就更为简单了,只要分别标出一个近景远景框即可,完全不需要理会相机架设参数。
当时的实验结果来看,采用近景远景框标定,只要标定准确,上述做法能完全解决直接在图像中使用kalman滤波的问题。
运动目标跟踪中kalman滤波器的使用的更多相关文章
- 【计算机视觉】基于Kalman滤波器的进行物体的跟踪
预估器 我们希望能够最大限度地使用測量结果来预计移动物体的运动. 所以,多个測量的累积能够让我们检測出不受噪声影响的部分观測轨迹. 一个关键的附加要素即此移动物体运动的模型. 有了这个模型,我们不仅能 ...
- Kalman滤波器原理和实现
Kalman滤波器原理和实现 kalman filter Kalman滤波器的直观理解[1] 假设我们要测量一个房间下一刻钟的温度.据经验判断,房间内的温度不可能短时大幅度变化,也就是说可以依经验认为 ...
- Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用
摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...
- Kalman滤波器从原理到实现
Kalman滤波器的历史渊源 We are like dwarfs on the shoulders of giants, by whose grace we see farther than the ...
- 终于成功仿了一次Kalman滤波器
终于成功仿了一次Kalman滤波器 首先是测试了从网上down的一段代码 % KALMANF - updates a system state vector estimate based upon a ...
- 关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset)
关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset) 2018-01-22 21:49:17 ...
- 运动目标检测中基于HSV空间的阴影去除算法
在运动目标检测中,常常会出现由于光线被遮挡,或场景其他物体的遮挡,在目标附近或场景里出现阴影,阴影的出现对后期目标的正确分割与处理带了很大的不便.如今,国内外已有不少文献来研究这个问题,并且提出了各种 ...
- CVE-2020-0668-Windows服务跟踪中的普通特权升级错误
CVE-2020-0668-Windows服务跟踪中的普通特权升级错误 在这里中,我将讨论在Windows Service跟踪中发现的任意文件移动漏洞.从我的测试来看,它影响了从Vista到10的所有 ...
- Opencv-Python项目(1) | 基于meanshiftT算法的运动目标跟踪技术学习
目标跟踪(object tracking)就是在连续的视频序列中,建立所要跟踪物体的位置关系,得到物体完整的运动轨迹. 目标跟踪分为单目标跟踪和多目标跟踪.本文如无特别指出,均指单目标跟踪. 通常的做 ...
随机推荐
- print函数end参数的作用
print函数默认会在末尾添加一个换行符(‘\n’) 加入end=''参数后,不会在末尾添加换行符,而是在末尾添加一个空字符串,end等于什么就会在末尾添加什么 这个只在python3中有效
- 简单理解List、set、Map接口之间的联系和区别
联系:Collection与Map属于同等关系,但Map依赖与Collection.Coolection接口的子类包含List(ArrayList.LinkedList等).Set(HashSet.T ...
- iOS iPhone X 适配启动图片
刚出了Xcode9正式版 迫不及待地下载 使用了 保密了这么久的iPhone X 模拟器 运行起来这个样子 上下都留白不正常 这必须匹配新的启动图才行,马上查苹果开发文档 get it!!!! 添加了 ...
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- 【Tech】CAS多机部署Server和Java Client端
昨天尝试把cas的java client端部署到另外一台机器,结果就有问题了.(localhost部署cas server和java client端参见:http://www.cnblogs.com/ ...
- CSR1010 sdk蓝牙
转:http://blog.csdn.net/lorain_lynies/article/details/52038640CSR1010 I/O开发须知:关于I/O操作的函数库被定义在头文件<p ...
- @MarkFan 口语练习录音 20140518 [超凡蜘蛛侠2-格温的演讲[中文]&驯龙骑士选节口语录音]
一个人看不到未来,就把握不了现在 生命中最值得珍惜的,其实并不是永恒的 正因为它会结束,使其变得弥足珍贵,而且将一去不复返 让我们谨记时间就是运气,所以不要把它浪费在别的生活上 让你的生活过得更有价值 ...
- USB引脚及定义
USB 2.0 USB接口定义: USB引脚定义: 针脚 名称 说明 接线颜色 1 VCC +5V电压 红色 2 D- 数据线负极 白色 3 D+ 数据线正极 绿色 4 GND 接地 黑色 Min ...
- ThinkPHP模版时间显示
<!-- 如果有日期输出,即$data.time不为空且不为0,则格式化时间戳,否则默认当前时间戳,并格式化成日期格式 --> {$data.time|default=time()|dat ...
- API是什么?——回答:接口。(待)
基础打不够啊,一句话问倒我.第一反应是像java,matlab之类的api,下个小文件,然后安装到电脑上,可以很方便的查看一些东西. 但是一般公司的对外api不可能做的像java这样,还专门提供一个可 ...