使用 Meanshift 和 Camshift 算法在视频中找到并跟踪目标对象。
1:Meanshift
Meanshift 算法的基本原理是和很简单的。假设我们有一堆点(比如直方图反向投影得到的点),和一个小的圆形窗口,我们要完成的任务就是将这个窗口移动到最大灰度密度处(或者是点最多的地方)。如下图所示:

初始窗口是蓝色的“C1”,它的圆心为蓝色方框“C1_o”,而窗口中所有点质心却是“C1_r”(小的蓝色圆圈),很明显圆心和点的质心没有重合。所以移动圆心 C1_o 到质心 C1_r,这样我们就得到了一个新的窗口。这时又可以找到新窗口内所有点的质心,大多数情况下还是不重合的,所以重复上面的操作:将新窗口的中心移动到新的质心。就这样不停的迭代操作直到窗口的中心和其所包含点的质心重合为止(或者有一点小误差)。按照这样的操作我们的窗口最终会落在像素值(和)最大的地方。如上图所示“C2”是窗口的最后位址,我们可以看出来这个窗口中的像素点最多。整个过程如下图所示:

要在 OpenCV 中使用 Meanshift 算法首先我们要对目标对象进行设置,计算目标对象的直方图,这样在执行 meanshift 算法时我们就可以将目标对象反向投影到每一帧中去了。另外我们还需要提供窗口的起始位置。在这里我们值计算 H(Hue)通道的直方图,同样为了避免低亮度造成的影响,我们使用函数 cv2.inRange() 将低亮度的值忽略掉。

2:Camshift
你认真看上面的结果了吗?这里面还有一个问题。我们的窗口的大小是固定的,而汽车由远及近(在视觉上)是一个逐渐变大的过程,固定的窗口是不合适的。所以我们需要根据目标的大小和角度来对窗口的大小和角度进行修订。OpenCVLabs 为我们带来的解决方案(1988 年):一个被叫做 CAMshift 的算法。
这个算法首先要使用 meanshift,meanshift找到(并覆盖)目标之后,再去调整窗口的大小。它还会计算目标对象的最佳外接椭圆的角度,并以此调节窗口角度。然后使用更新后的窗口大小和角度来在原来的位置继续进行 meanshift。重复这个过程知道达到需要的精度。
与 Meanshift 基本一样,但是返回的结果是一个带旋转角度的矩形(这是我们的结果),以及这个矩形的参数(被用到下一次迭代过程中)。

Meanshift 和 Camshift相关推荐

  1. 使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象

    使用Python,OpenCV的Meanshift 和 Camshift 算法来查找和跟踪视频中的对象 1. 效果图 2. 源码 2.1 MeanShift 2.2 Camshift(Continuo ...

  2. 目标跟踪之camshift---opencv中meanshift和camshift例子的应用

    在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行op ...

  3. OpenCV均值移位(Meanshift)和Camshift算法

    OpenCV Meanshift和Camshift算法 Meanshift和Camshift算法 目标 均值漂移Meanshift OpenCV中的Meanshift Camshift OpenCV中 ...

  4. opencv python 多帧降噪算法_OpenCV-Python中用于视频跟踪的Meanshift和Camshift算法介绍...

    学习目标 在本章中, 我们将学习用于跟踪视频中对象的Meanshift和Camshift算法. Meanshift Meanshift背后的直觉很简单,假设你有点的集合.(它可以是像素分布,例如直方图 ...

  5. 视频操作_02视频追踪:meanshift算法+Camshift算法

    1.meanshift 1.1原理 meanshift算法的原理很简单.假设你有一堆点集,还有一个小的窗口,这个窗口可能是圆形的,现在你可能要移动这个窗口到点集密度最大的区域当中. 如下图: 最开始的 ...

  6. 目标跟踪学习笔记_1(opencv中meanshift和camshift例子的应用)

    在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行op ...

  7. OpenCV—用meanshift和Camshift进行目标追踪

    学习目标 理解meanshift的原理 知道camshift算法 能够使用meanshift和Camshift进行目标追踪 1.meanshift 1.1原理 meanshift算法的原理很简单.假设 ...

  8. 6.1. Meanshift和Camshift

    目标: 学习Meanshift和Camshift算法来寻找和跟踪视频中的物体. Meanshift Meanshift 算法的基本原理很简单.假设有一堆点(比如直方图反向投影得到的点),和一个小的窗口 ...

  9. opencv中meanshift和camshift函数的使用

    原文地址:http://www.360doc.com/content/13/1106/16/10724725_327176222.shtml 在这一节中,主要讲目标跟踪的一个重要的算法Camshift ...

最新文章

  1. 有人把机器学习的数学基础整理成了专辑(附下载 )
  2. 【RAC】 RAC For W2K8R2 安装--共享磁盘的配置(三)
  3. Elasticsearch 冷热集群架构实战
  4. Java高版本编译低版本运行_Java高版本编译低版本运行错误(ConcurrentHashMap.keySet)...
  5. 蚂蚁金服自研数据库OceanBase如何登顶TPC-C
  6. jhat命令 Java Heap Analyse Tool
  7. 软件工程设计之四则运算
  8. 50 岁再次创业:我希望 20 年后还能解 Bug
  9. 阻止滑动事件_重温DOM事件流,捕获、冒泡、useCapture、passive
  10. 关于PPPOE拨号分配给用户32位掩码,且IP与网关相同的问题
  11. 浅谈网络游戏的设计——服务器端编程 (2)
  12. linux机器crt连接不上,SecureCRT连不上Linux主机了,求破
  13. 基本的Java的MVC入门案例
  14. 设计模式之适配器与外观模式(二)
  15. 几何画板椭圆九种画法_椭圆的画法几何画板的动画演示
  16. 2011年IT行业薪资调查报告
  17. 1GB等于2的多少次方
  18. 聊天室页面问题和解决方案
  19. 地理坐标xy表示什么_地理坐标怎么写 书写格式及方法
  20. 聚会邀请html源码,聚会邀请短信

热门文章

  1. 《软技能-代码之外的生存指南》的读后感
  2. 兼容IE系列浏览器的CSS Hack
  3. 法律法规与标准化知识
  4. java泛型 方法返回值带有泛型 <T>
  5. 数据库索引高频面试题:传智播客java基础入门第二版答案
  6. 按位取反‘~’是啥?
  7. CSS经常会用到的属性
  8. Git 04 ---用Idea合并git分支
  9. python——之self参数
  10. Excel表格密码保护解除