我需要跟踪道路上的车辆,可以用GMM来监测物体的变化,但是道路上的车辆从远到近都会改变大小,建议采用什么算法来跟踪从远到近或近距离的物体?
发布于 2014-03-12 19:36:26
高斯混合模型(GMM)对于将汽车建模为对象并不是一个好的选择,但我不确定如何用它来建模背景,因为它可能更加异构,并且需要大量的混合。使用EM (期望最大化)学习GMM可以进行密集的处理。因此,我的建议是开始使用简单的直方图,将对象建模为带有计数的回收箱集合,而不是高斯分布的集合。下面我描述了在OpenCV中实现的两个这样的方法。
使用openCV开始跟踪的最简单方法是使用均值漂移函数。一个相关的方法,卡姆班是meanshift的一个改进版本,当对象改变其大小或方向时,它也会纠正初始包围框的大小和方向。您可以在openCV包的camshiftdemo.c中找到相应的演示。
meanshift和camshift的输入都是一个概率图,其中每个像素表示(大约)它属于对象(可能是背景)的可能性。创建这样一张地图的一种方法是计算要跟踪的对象的直方图,然后将其倒置到图像中,因此,例如,如果您的直方图只有两个像素,计数为I=255,计数为90,I=100为计数10,则每个灰度为255的像素的概率为90%,而强度为100的每个像素的概率为10% (请参阅关于直方图反投影的更详细说明)。
请注意,这些方法基于某些特征的直方图,如强度、颜色或其他任何内容。你可以尝试添加更多的特征直方图,也可以修正你的概率图,把你的目标直方图和背景直方图联系起来。最后,您可以更新每个帧的直方图,以补偿对象和背景的变化。
简而言之,它是如何运作的。顾名思义,均值移动是根据概率平均值(在此窗口内计算)的位置移动的,平均值通常偏离窗口中心,向最高概率簇(希望是对象)偏移。这个过程反复重复,直到收敛。
当然,如果您最初的猜测离实际概率最大值太远,则窗口可能会卡在与对象无关的局部最大值中。因此,高帧速率是很重要的,因为它将保证对象不会在帧之间移动太多,并且您可以使用以前的位置作为窗口位置初始化的合理猜测。
https://stackoverflow.com/questions/22308282
复制相似问题