这几天学习《学习OpenCV》中的第十章运动跟踪,里面讲到了meanshift算法,根据书上所讲实在难以理解,meanshift在运动跟踪这个过程中到底起到什么作用,于是经过几天不断地看相关资料和别人的博客文章,慢慢思路清晰了,也终于知道了meanshift这个算法它到底是什么作用,起到什么样的角色,虽然为了弄明白这个算法花了几天的时间,但是通过这个过程学到了很多其他的知识。好了,接下来进入正题。

首先要介绍一下meanshift这个算法,它的本质是一个迭代的过程,那么这个算法的最终效果是什么呢?或者说这个算法能做什么事情?它能够在一组数据的密度分布中寻找到局部极值,它比较稳定,而且是无参密度估计(它不需要事先知道样本数据的概率密度分布函数,完全依靠对样本点的计算),而且它在采样充分的情况下,一定会收敛,即可以对服从任意分布的数据进行密度估计。下面来根据几张图片来理解一下meanshift算法的最终效果:

这里就不把meanshift的数学公式什么的都写出来了,只为了让大家知道meanshift是什么作用;高维的我们也先不考虑,以二维来说明可能更容易理解,下图中的很多的红点就是我们的样本特征点,meanshift就是在这些点中的任意一个点为圆心,然后以半径R画一个圆(在opencv中是一个矩形),然后落在这个圆中的所有点和圆心都会对应的一个向量,把所有这些向量相加(注意是向量相加),最终我们只得到一个向量,就是下图中用黄色箭头表示的向量,这个向量就是meanshift向量。

然后再以这个meanshift向量的终点为圆心,继续上述过程,又可以得到一个meanshift向量,如下图:

然后不断地继续这样的过程,我们可以得到很多连续的meanshift向量,这些向量首尾相连,最终得到会在一个地方停下来(即我们说的meanshift算法会收敛),最后的那个meanshift向量的终点就是最终得到的结果(一个点),如下图:

从上述的过程我们可以看出,meanshift算法的过程最终的效果就是:从起点开始,最终会一步一步到达样本特征点最密集的点那里(当然在哪个点就是终点这个要取决于我们设定的阈值)。

注:如果还是不明白为什么会向密集的地方走去,可以利用向量的加法规则自己画个简单的图去理解一下。

到这里可能只知道meanshift算法的作用是向数据密集的地方走的一个效果,但是还是不明白它是怎么在运动跟踪中发挥作用的,尤其是不理解它这个样本特征点(就是上图中的红点点)到底和我们图像中的什么对应的。

对于上面这个问题,我们需要先了解一下运动跟踪算法是一个什么样的过程,知道了这个过程之后就可以知道meanshift算法在这个过程中发挥什么角色了。运动跟踪说到底就是在一开始告诉程序一个跟踪目标,即我想跟踪什么,然后程序就在接下来的视频帧中去寻找这个目标了。给定跟踪目标很简单,直接在图像中给一个ROI给程序就可以了,那么程序接下来要做的就是在下一帧图像中去找这个ROI,但这个ROI是移动了的,已经不在之前的那个位置了,那么这个时候程序要怎么来找到这个ROI呢?那么在计算机视觉中我们是这么来解决的:首先对跟踪目标进行描述,这个描述是将跟踪目标区域转换为颜色HSV空间,然后得到H的这个通道的分布直方图,有了这个描述之后,我们就是要在下一个视频帧中找到和这个描述的一样的区域,但是我们知道要找到完全一样的区域很难,所以我们就用了一个相似函数来衡量我们找到的区域和我们的目标区域的相似度,通过这个相似函数,相似函数值越大说明我们找打的区域和目标区域越相似,所以我们的目标就是要找这个对应最大相似值的区域,那么怎么来找呢?这个时候meanshift就排上用场了,它可以通过不断地迭代得到有最大相似值的区域(具体里面的是怎么算的,可以参考博文地底下的参考博客),meanshift的作用可以让我们的搜索窗口不断向两个模型相比颜色变化最大的方向不断移动,直到最后两次移动距离小于阈值,即找到当前帧的位置,并以此作为下一帧的起始搜索窗口中心,如此重复,这个过程每两帧之间都会产生一个meanshift向量,整个过程的meanshift向量连起来就是目标的运动路径。所以讲到这里了,我们已经知道了meanshift算法在整个运动跟踪过程中扮演什么角色了。

整个运动跟踪过程就是如下图所示:

参考博客:

http://blog.csdn.NET/jinshengtao/article/details/30258833

http://www.cnblogs.com/liqizhou/archive/2012/05/12/2497220.html

meanshift算法通俗讲解相关推荐

  1. 人工智能算法通俗讲解系列(二):逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 今天,我们介绍的机器学习算法叫逻辑回归.它英语名称是Logistic Regression,简称LR. 跟之前一样,介绍这个算 ...

  2. 模拟退火算法通俗讲解

    目录 1. 模拟退火算法基本概念 2. 模拟退火算法基本流程 3. 遗传模拟退火算法matlab代码 1. 模拟退火算法基本概念 自然凝结的.不受外界干扰而形成的晶体拥有整齐规则的几何外形.那么从液态 ...

  3. 朴素贝叶斯分类器算法通俗讲解

    首先会用到贝叶斯决策理论,说一下.贝叶斯决策理论的核心思想是:选择具有最高概率的决策.例如一个点(x, y),属于类别1的概率是p1(x, y),属于类别2的概率是p2(x, y),用贝叶斯决策理论来 ...

  4. FP-growth算法通俗讲解

    FP-growth算法是一种高效发现频繁集的方法.例如你在搜索引擎中搜索一个词,它会自从补全查询词项,该处用到了FP-growth算法,通过查看互联网上的用词来找出经常在一块出现的词.[FP(Freq ...

  5. AdaBoost算法通俗讲解

    AdaBoost是元算法中最流行的一种,也被认为是最好的监督学习的方法 . 一.元算法 元算法(meta-algorithm),也被称作集成方法(ensemble method),是对其他算法进行组合 ...

  6. Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解

        Hadoop平台K-Means聚类算法分布式实现+MapReduce通俗讲解 在Hadoop分布式环境下实现K-Means聚类算法的伪代码如下: 输入:参数0--存储样本数据的文本文件inpu ...

  7. 传统目标跟踪——MeanShift算法

    目录 一.均值漂移(MeanShift) 二.流程 三.代码 3.1 meanshift+固定框的代码 3.2 优化:meanshift+鼠标选择 3.3 meanshift+自己实现函数 四.补充知 ...

  8. 通俗讲解多层全连接前向网络的基本结构

    通俗讲解多层全连接前向网络的基本结构 1 模拟神经元 2 单层神经网络的分类器 3 激活函数 3.1 Sigmoid 3.2 Tanh 3.3 ReLU 4.4 Leaky ReLU 3.5 Maxo ...

  9. SVM算法—原理讲解

    原文作者:奔跑的前浪 原文地址:svm算法 最通俗易懂讲解 最近在学习svm算法,借此文章记录自己的学习过程,在学习时很多处借鉴了z老师的讲义和李航的统计,若有不足的地方,请海涵:svm算法通俗的理解 ...

  10. 通俗讲解:PoW共识机制与以太坊的关系、Ghost协议 及 Casper PoS共识机制的变种...

    作者:林冠宏 / 指尖下的幽灵 掘金:juejin.im/user/587f0d- 博客:www.cnblogs.com/linguanh/ GitHub : github.com/af9133374 ...

最新文章

  1. Leetcode 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 (每日一题 20210917)
  2. Vim-安装 YouCompleteMe
  3. 的训练过程_指外翻的人在训练的过程中,要不要拉伸收肌?
  4. 红米note3支持html,【小米红米Note3评测】外观变化不小 金色版略显俗套_小米 红米Note3_手机评测-中关村在线...
  5. 大数据杀熟!用苹果手机怪我咯?
  6. linux 内核学习线索初步
  7. hdu 4790 Just Random (2013成都J题) 数学思路题 容斥
  8. matlab提取汉字拼音,中文转拼音工具
  9. X轴间隔显示-长江水位
  10. pubwin2009服务端 修改系统时间方法
  11. AB01固定资产过账
  12. mysql cbrt函数_ES6 数值的扩展
  13. Learning Standard C++ as a New Language ( By Bjarne Stroustrup )
  14. Apple Music(应用内打开Apple Music)
  15. 文字烟雾消散特效制作
  16. Flutter仿美团应用开发笔记-首页 (1)
  17. 炫酷可视化教程 Cufflinks 来啦!!!
  18. Criteria查询用法
  19. linux服务器监控
  20. PNG透明背景显示之路

热门文章

  1. FPGA——HLS编程入门
  2. js格式化日期或者日期时间
  3. 想在原有的基础上,再次添加一些阿里图标的进坑
  4. 云计算对21世纪IT人才的挑战
  5. PHP字符串函数strrchr(查找指定字符在字符串中的最后一次出现)
  6. 小迪外卖小程序源码+后台_外卖cps 赚钱小程序源码
  7. 想自学PLC编程该按什么步骤来?
  8. linux下wav转换为mp3
  9. dwg格式的图纸文件怎么打开?一分钟教你快速解决!
  10. JavaScript 基础知识总结(一)