mean shift tracking
来源:互联网 发布:mac os 病毒查杀 编辑:程序博客网 时间:2024/05/22 06:30
meanshift均值漂移算法目标跟踪中的经典之经典,在opencv中已经帮我们实现了这个算法,即如下函数
//! updates the object tracking window using meanshift algorithm
int meanShift( InputArray probImage, CV_OUT CV_IN_OUT Rect& window, TermCriteria criteria );
其中,参数1:probImage: probImage是概率分布图(反向投影图)
参数2:window: 需要跟新的窗口(x,y,width,height)
其实说白了,我们希望利用meanshift算法迭代找到probImage图(概率分布图)的重心位置(通过更新window来体现)。
利用meanshift做跟踪的大致步骤:
(1) 计算目标区域的直方图:首先需要框定想要跟踪的目标(如手掌),确定目标有很多种方式,如可以人工通过鼠标选定,或者通过检测算法(如adboost手掌分类器)进行检测从而框定目标区域,之后,计算框定的目标区域的直方图(概率分布图)
(2) 计算新帧的反向投影图:接着,对于新来的一帧图像,基于步骤(1)中得到直方图,求得新视频帧的反向投影图(概率分布图),这是因为反向投影图(概率图)中值最大的地方可能就是目标区域所在的地方(每一个像素点每一个像素点表示该点为目标区域的概率。这个点越亮,该点属于物体的概率越大),这也解释了为什么meanshift可以用来做跟踪,且需要输入图像是图像的反向投影图的原因了。
(3) 利用meanshift算法对步骤(2)中得到的反向投影图(概率分布图)进行迭代搜索(对图进行搜索),找到反向投影图的重心位置(即目标所在区域)
由上面可以看出,meanshift算法本质上的确是一个最优化理论中的求最优值得算法。它相当于最速下降法。即沿着梯度下降方法寻找目标函数的极值。在跟踪时,就是为了寻找到相似度值最大的候选目标位置。meanshift方法沿着概率密度的梯度方向(概率分布图)进行迭代移动,最终达到密度分布的最值位置。其迭代过程本质上是的最速下降法,下降方向为一阶梯度方向,步长为固定值。
meanshift跟踪时的代码大概为:
1.计算目标区域的直方图hist
calcHist(&roi, 1, 0, maskroi, hist, 1, &hue_Bins, &ranges);
2.计算新帧(待跟踪的帧)的反向投影(概率图)
calcBackProject(&hue, 1, 0, hist, backProject, &ranges, 1.0, true)
backProject &= mask
3.利用meanshift算法迭代寻找backProject的重心位置(其实是在trackWind和backProject交集的窗口上寻找backProject的重心位置)
meanShift(handProMap,trackWind, TermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ));
下面是理论的部分,通过一个图来看看meanshift的迭代过程。
图1
图2
图3
参考文献:
1.Meanshift,聚类算法
2.基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)
3.反向投影图
4.meanshift算法概述
5.CamShift算法,OpenCV实现1--Back Projection
6.CamShift算法,OpenCV实现2-Mean Shift算法
7.CamShift算法,OpenCV实现(3):CamShift算法
- mean shift tracking
- mean-shift based tracking回顾
- Mean Shift Tracking: 2000-2012回顾
- Mean Shift Tracking: 2000-2012回顾
- Mean Shift Tracking: 2000-2012回顾
- Mean Shift Tracking: 2000-2012回顾
- Mean Shift Tracking: 2000-2012回顾
- Tracking算法学习之mean-shift——Robust Scale-Adaptive Mean-Shift for Tracking
- Tracking学习之mean-shift——Scale and Orientation Adaptive Mean Shift Tracking
- Mean Shift Tracking: 2000-2012回顾 (新论文更新)
- Mean Shift Tracking: 2000-2012回顾 (新论文更新)
- Mean Shift Tracking: 2000-2012回顾 (新论文更新)
- Mean-shift Blob Tracking through Scale Space 阅读笔记
- Mean Shift
- Mean-shift--胡占义
- Mean Shift详细介绍
- Mean Shift基础知识
- mean shift 详细介绍
- 让旧Mac免费获得 iWork 套件的秘籍
- work
- 暂别CSDN一段时间
- Linux命令 - sed 简明教程
- 《Thinking In Algorithm》01.Array与ArrayList的区别(java)
- mean shift tracking
- dialog
- ListView
- 移植uCOS-II到Cortex-M3平台 (补遗)
- 关于安全漏洞的一个网站?
- Java 中的单例模式,看完这一篇就够了
- Android ListView item 选中高亮显示之高效实现方式
- 彩色字ClipText
- oracle 闪回功能详解