CamShift算法的全称是"Continuously Adaptive Mean-SHIFT",即:连续自适应的MeanShift算法。其基本思想是对视频序列的所有图像帧都作MeanShift运算,并将上一帧的结果(即搜索窗口的中心位置和窗口大小)作为下一帧MeanShift算法的搜索窗口的初始值,如此迭代下去。简单点说,meanShift是针对单张图片寻找最优迭代结果,而camShift则是针对视频序列来处理,并对该序列中的每一帧图片都调用meanShift来寻找最优迭代结果。正是由于camShift针对一个视频序列进行处理,从而保证其可以不断调整窗口的大小,如此一来,当目标的大小发生变化的时候,该算法就可以自适应地调整目标区域继续跟踪。

在OpenCV自带的camShift的例子当中,是通过计算目标在HSV空间下的H分量直方图,通过直方图反向投影得到目标像素的概率分布,然后通过调用OpenCV的CAMSHIFT算法,自动跟踪并调整目标窗口的中心位置与大小。该算法对于简单背景下的单目标跟踪效果较好,但如果被跟踪目标与背景颜色或周围其它目标颜色比较接近,则跟踪效果较差。另外,由于采用颜色特征,所以它对被跟踪目标的形状变化有一定的抵抗能力。  

OpenCV自带例子中的camShift算法,可以分为三个部分:

一、计算色彩投影图(反向投影):

(1)为了减少光照变化对目标跟踪的影响,首先将图像从RGB颜色空间转换到HSV颜色空间;

(2)对H分量进行直方图统计,直方图代表了不同H分量取值出现的概率,或者说可以据此查找出H分量的大小为x时的概率或像素个数,即,得到颜色概率查找表;

(3)将图像中每个像素的值用其颜色出现的概率进行替换,由此得到颜色概率分布图;

以上三个步骤称之为反向投影,需要提醒的是,颜色概率分布图是一个灰度图像;

二、meanShift寻优

前面提到过meanShift算法(http://blog.csdn.net/carson2005/article/details/7337432)是一种非参数概率密度估计方法,它通过不断迭代计算得到最优搜索窗口的位置和大小。

三、camShift跟踪算法

前面提到,camShift其实就是在视频序列的每一帧当中都运用meanShift,并将上一帧的meanShift结果作为下一帧的初始值,如此不断循环迭代,就可以实现目标的跟踪了。

camShift跟踪算法介绍相关推荐

  1. 比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍

    TLD (Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生在其攻读博士学位期间提出的一种新的单目标长时间( long term tracking )跟踪算法.该 ...

  2. C++ OpenCV视频操作之CamShift跟踪算法

    前言 CamShift算法,全称是 Continuously AdaptiveMeanShift,顾名思义,它是对Mean Shift 算法的改进,能够自动调节搜索窗口大小来适应目标的大小,可以跟踪视 ...

  3. 比微软kinect更强的视频跟踪算法--TLD跟踪算法介绍 .

    转自:http://blog.csdn.net/carson2005/article/details/7647500 TLD(Tracking-Learning-Detection)是英国萨里大学的一 ...

  4. 视频跟踪算法--TLD跟踪算法介绍

    TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法.该算法与 ...

  5. meanshift 与 camshift 跟踪算法比较

    MeanShift Algorithm 思想很简单:利用概率密度的梯度爬升来寻找局部最优...具体参考文献: [1]The Estimation of the Gradient of a Densit ...

  6. CN和CSK运动跟踪算法

    KCF和CN的运动跟踪算法 对运动跟踪的工作有一段时间,由最开始使用OpenCv自带的CamShift跟踪算法到(Exploiting the Circulant Structure of Track ...

  7. 目标跟踪算法的分类(一)

    运动目标跟踪主流算法大致分类 主要基于两种思路: a)不依赖于先验知识,直接从图像序列中检测到运动目标,并进行目标识别,最终跟踪感兴趣的运动目标: b)依赖于目标的先验知识,首先为运动目标建模,然后在 ...

  8. TLD(Tracking-Learning-Detection)一种目标跟踪算法

    原文:http://blog.csdn.net/mysniper11/article/details/8726649 视频介绍网址:http://www.cvchina.info/2011/04/05 ...

  9. OpenCV连续自适应跟踪算法CAMShift实现视频对象跟踪

    1.概述 案例:使用OpenCV的CAMShift算法实现视频中对象跟踪 算法API介绍: 本文福利,莬费领取Qt开发学习资料包.技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,Q ...

最新文章

  1. 2021年码农应该了解的所有机器学习算法
  2. Java SPI机制分析
  3. python下载图片、已知url_python 爬虫之requests爬取页面图片的url,并将图片下载到本地...
  4. Spring MVC,Ajax和JSON第2部分–服务器端代码
  5. 高效数据序列化的工具 FlatBuffers 的初体验
  6. python制作窗口界面_python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
  7. 万字通俗讲解何为复杂度
  8. scala基础之控制结构
  9. vs2010 mysql linq to sql 系列_linq to sql简单使用
  10. 系统 应用 数据缺一不可 云优化三步走
  11. html空格暂停,关于audio标签暂停的问题
  12. c++11 : range-based for loop
  13. centos7安装tomcat9过程
  14. 户籍管理系统php,户籍管理系统.rar - 源码下载|Windows编程|数据库编程|源代码 - 源码中国...
  15. 201671030107词频统计软件项目报告
  16. 屏蔽非微信客户端和支付宝登陆登录操作
  17. 计算机系统还原后 桌面不显示图标,电脑桌面图标不见了怎么恢复原状?电脑桌面便签不见了怎么找回...
  18. 中英文颜色对照表(转)
  19. xshell免费版 正版,非xshell破解版
  20. 腾讯云账号注册方法介绍

热门文章

  1. USB之Cyusb3014芯片原理之三GPIF原理(十一) 2022-03-08
  2. 计算机应用 期刊 多久给消息,计算机应用 审稿流程 - 论文投稿 - 小木虫 - 学术 科研 互动社区...
  3. iOS 可用的热更新、热修复方案
  4. Three.js点击地图动态标注
  5. 喜报丨为工业安全赋能再添新动力 上海控安安全测评中心荣获CNAS认可
  6. RabbitMQ入门及笔记
  7. 赵栋 201771010137 《面向对象程序设计(java)》课程进度表
  8. 计算机word.实训报告体会,计算机实训报告【五篇】.docx
  9. C++进阶 必读书籍
  10. 论文答辩问题准备(学生水平,自己准备用的,不喜勿喷)