博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mean shift tracking
阅读量:4148 次
发布时间:2019-05-25

本文共 1392 字,大约阅读时间需要 4 分钟。

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.

2.

3.

4.

5.

6.

7.

你可能感兴趣的文章
万年历
查看>>
作为码农你希望面试官当场指出你错误么?有面试官这样遭到投诉!
查看>>
好多程序员都认为写ppt是很虚的技能,可事实真的是这样么?
查看>>
如果按照代码行数发薪水会怎样?码农:我能刷到公司破产!
查看>>
程序员失误造成服务停用3小时,只得到半月辞退补偿,发帖喊冤
查看>>
码农:很多人称我“技术”,感觉这是不尊重!纠正无果后果断辞职
查看>>
php程序员看过来,这老外是在吐糟你吗?看看你中了几点!
查看>>
为什么说程序员是“培训班出来的”就是鄙视呢?
查看>>
码农吐糟同事:写代码低调点不行么?空格回车键与你有仇吗?
查看>>
阿里p8程序员四年提交6000次代码的确有功,但一次错误让人唏嘘!
查看>>
一道技术问题引起的遐想,最后得出结论技术的本质是多么的朴实!
查看>>
985硕士:非科班自学编程感觉还不如培训班出来的,硕士白读了?
查看>>
你准备写代码到多少岁?程序员们是这么回答的!
查看>>
码农:和产品对一天需求,产品经理的需求是对完了,可我代码呢?
查看>>
程序员过年回家该怎么给亲戚朋友解释自己的职业?
查看>>
技术架构师的日常工作是什么?网友:搭框架,写公共方法?
查看>>
第四章 微信飞机大战
查看>>
九度:题目1008:最短路径问题
查看>>
九度Online Judge
查看>>
九度:题目1027:欧拉回路
查看>>