目标检测与跟踪实验报告3 王进
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《图像探测、跟踪与识别技术》
实验报告
专业:探测制导与控制技术
学号:11151201
姓名:王进
2014 年11月
实验三复杂场景下目标的检测与跟踪
一、实验目的
1. 学习不同目标跟踪算法,对比不同算法对于复杂场景的效果;
2. 学习OpenCV与VS2010的联合编程,提高编程能力。
二、实验要求
1. 要求学生至少使用一种目标跟踪算法对视频中出现的目标进行跟踪;
2. 检验所选算法在复杂场景下的效果;
3. 使用VS2010/2012和OpenCV进行编程;
4. 本实验不要求目标检测,所以目标可以手动标出。
三、实验步骤
1. 想办法找到目标(可手动框出)。
2. 编写目标跟踪函数代码;
四、实验报告
1、CAMSHIFT算法原理
CAMSHIFT算法是利用目标的颜色直方图模型将图像转换为颜色概率分布图,初始化一个搜索窗的大小和位置,并根据上一帧得到的结果自适应调整搜索窗口的位置和大小,从而定位出当前图像中目标的中心位置。
这个算法可以分为三个部分:
1、色彩投影图(反向投影):
(1).RGB颜色空间对光照亮度变化较为敏感,为了减少此变化对跟踪效果的影响,首先将图像从RGB空间转换到HSV空间。(2).然后对其中的H分量作直方图,在直方图中代表了不同H分量值出现的概率或者像素个数,就是说可以查找出H分量大小为h的概率或者像素个数,即得到了颜色概率查找表。(3).将图像中每个像素的值用其颜色出现的概率对替换,就得到了颜色概率分布图。这个过程就叫反向投影,颜色概率分布图是一个灰度图像。
2、MEANSHIFT
MEANSHIFT算法是一种密度函数梯度估计的非参数方法,通过迭代寻优找到概率分布的极值来定位目标。
算法过程为:
(1).在颜色概率分布图中选取搜索窗W
(2).计算零阶距:
计算一阶距:
计算搜索窗的质心:
(3).调整搜索窗大小
宽度为;长度为1.2s;
(4).移动搜索窗的中心到质心,如果移动距离大于预设的固定阈值,则重(2)(3)(4),直到搜索窗的中心与质心间的移动距离小于预设的固定阈值,或者循环运算的次数达到某一最大值,停止计算。关于MEANSHIFT的收敛性证明可以google相关文献。
3、CAMSHIFT
将MEANSHIFT算法扩展到连续图像序列,就是CAMSHIFT算法。它将视频的所有帧做MEANSHIFT运算,并将上一帧的结果,即搜索窗的大小和中心,作为下一帧MEANSHIFT算法搜索窗的初始值。如此迭代下去,就可以实现对目标的跟踪。
算法过程为:
(1).初始化搜索窗
(2).计算搜索窗的颜色概率分布(反向投影)
(3).运行MEANSHIFT算法,获得搜索窗新的大小和位置。
(4).在下一帧视频图像中用(3)中的值重新初始化搜索窗的大小和位置,再跳转到(2)继续进行。
CAMSHIFT算法能有效解决目标变形和遮挡的问题,对系统资源要求不高,时间复杂度低,在简单背景下能够取得良好的跟踪效果。但当背景较为复杂,或者有许多与目标颜色相似像素干扰的情况下,会导致跟踪失败。因为它单纯的考虑颜色直方图,忽略了目标的空间分布特性,所以这种情况下需加入对跟踪目标的预测算法。
2、CAMSHIFT算法实现
在OpenCV库中,CvCamShiftTracker类就是用来实现CAMSHIFT算法的,使得进行二次开发变得很简单。该函数为:
int cvCamShift(const CvArr *prob_image,CvRect window,CvTermCriteria criteria,CvConnectedComp *cornp,CvBox2D *box=NULL);
prob_image:目标直方图的反向投影
window:初始搜索窗口
criteria:确定窗口搜索停止的准则
comp:生成的结构,包含收敛的搜索窗VI坐标(comp→rect字段)与窗口内有像素点的和(comps→area字段)
box:目标的带边界盒子。如果非NULL则包含目标的尺寸和方向。
3、实验流程
4 实验结果与分析
本实验中,用笔记本自带的摄像头来跟踪一运动物体,下图4-图7一系列图像是采用CAMSHIFT算法跟踪运动物体部分图像。
选定目标:
跟踪目标:
由此可见,基于颜色直方图的CAMSHIFT算法可以有效地解决目标变形和旋转问题,而且运算效率很高,可以实时跟踪运动目标
五、思考题
1. 复杂背景下如何使用背景差分法进行跟踪?
将当前帧减去背景帧即可提取出运动目标,当然还存在有其他一些干扰,若噪声或背景物品的移动。然后再对提取出的感兴趣的目标进行检测跟踪。
2. 基于核函数的meanshift算法是什么意思?
meansift算法中对区域内所有点都一样处理没有区别,而实际用于跟踪时,考虑到遮挡物等干扰一般都从边界进入而不会从区域内部突然出现,则可以通过对区域边界范围点进行一定程度的忽略从而达到抵抗遮挡的效果。
而具体实现则是在meanshift算法中通过核函数给各个点加入和位置相关的权。