原因:Detection, Tracking and ID · Issue #367 · Smorodov/Multitarget-tracker · GitHub
看到了仓库更新了issue,其中有一个小、快目标的跟踪。学习一下作者的思路和效果,记录如下:
一、效果
目标大小:3~4pixel, 相机静止;鸟类或者苍蝇。
跟踪效果如下:
快速小目标的跟踪
1.1 检测算法:CNT
算法设置:使用的CNT
一些注意事项:
- 我们将检测非常小的物体:https ://github.com/Smorodov/Multitarget-tracker/blob/master/example/examples.h#L57
- 最好的背景减法算法 - MOG:https ://github.com/Smorodov/Multitarget-tracker/blob/master/example/examples.h#L62
- 新卡尔曼设置:https ://github.com/Smorodov/Multitarget-tracker/blob/master/example/examples.h#L123
- 这里是最小轨迹大小:https ://github.com/Smorodov/Multitarget-tracker/blob/master/example/examples.h#L200
使用的是opencv的CNT背景提取算法 :介绍参考:Background Segment CNT - mysticalwing - 博客园
2.2 跟踪滤波:kalman速度约束>30pixel
这个前提是:分配算法是OK的。kalman速度适应上了。
Multitarget-tracker/trajectory.h at master · Smorodov/Multitarget-tracker · GitHub
最小二乘法:根据轨迹,计算一个crammers 3*3的线性系统的crammers rule,如果mean>std,就把这个轨迹输出。
why? 不知道为什么这里是拟合的均方误差mean>std,作为限制输出的条件。目前还理解不了。但这种crammer法则求解 线性方程组的未知参数(线性拟合)的方式,还是第一次接触!
用最小二乘去估计出6个参数,从轨迹点中估计出6个参数,posx, vx, ax, posy, vy, ay。之前是估计速度v,所以是计算s与t的一个线性投影(最小二乘)。是两个变量之间的关系。
这里按照作者的意思是一个3*3的线性系统的crammer rule 法则。估计出的,就是一个参考值。
然后轨迹 - 参考值的偏差的均值和方差。如果均值在一个sigma的方差之外,那么就输出这个轨迹。
基本上就是求一个线性方程组的意思:因为只有方程 想要求解,x0, vx0, ax三个参数,需要三个方程,所以就进行S*t和S*t^2
和
所以就是用以后的所有数据进行利用,积分,就是求和。然后再将一个方程变成三个方程,然后求出来三个参数。
参考网址:http://ah-engr.com/engr170/CramersRule3x3.pdf?feature=endscreen&NR=1&v=i6Umz2-1kbo
是https://baike.baidu.com/item/%E5%85%8B%E8%8E%B1%E5%A7%86%E6%B3%95%E5%88%99/7211518 克莱姆法则,求矩阵行列式的。