从backproject到meanshift:各自的作用

分割、识别、跟踪是图像处理中的重要应用。 一般算法步骤是检测点、线、面(区域),分割,然后根据人的先验知识进行识别。

而meanshift算法是利用颜色直方图(颜色空间),形成的目标特征,去搜索和跟踪。

backproject和meanshift算法在opencv中都有实现,而且网上的论述一抓一大把,这里就不在赘述。在理解其理论意义后,重点关注一下其作用和应用场景。

1. backproject的作用

直方图反向投影: 本质上就是利用模板的颜色空间分布,去改变源图像的像素值,进而突出源图像中与模板类似的图像特征。

所以,backproject最明显的作用就是在一整幅图像中突出目标模板的 特征。

利用backproject的结果,可以用于分割检测、跟踪目标等。

2. meanshift的作用

meanshift算法在图像中,可用于分割、轮廓检测、聚类、跟踪、带有不连续性效果的平滑等。

meanshift算法在图像中常被用作物体的跟踪,效果很不错,但其也有几个不足的地方:

a) 当被跟踪物体与背景颜色不大相同时,效果很好;但当被跟踪物体 移动到相近颜色 的背景区域时,效果就不好了。一般的处理方法,可以将静态的背景去除掉,减少背景干扰。

b) 跟踪区域大小的确定是一个难点,跟踪区域过小,就不能很好的获取整个物体的特征;而跟踪区域过大,会把其他无关的区域的特征牵扯进来。

c) 当物体与相机有位置上的相对移动时,会有景深效应,物体在图像中的大小会有变化。针对这个问题,必须对跟踪区域的大小也需要一个scale变化。但是,单纯的对检测区域scale的变化,会降低检测效率,增加误检率。一般现在的方法是根据space和scale两种特征来检测。

d) meanshift 算法本质上是一个最速下降的最优化问题,但也存在局部最优问题。所以,可以选用多个种子点(起始点),同时进行meanshift算法的运算,选取一个最优结果。

3. backproject与meanshift的关联

backproject突出了目标的颜色空间的特征,而meanshift算法 具有实时性、适应性强等特征。

backproject与meanshift结合,有以下优点:

a) 计算量不是很大,可以做到实时跟踪;

b) 应用颜色空间直方图,不受背景移动(目标移动,但大小不变)、旋转、边缘遮挡、变形的影响。

不足:

a) 目标尺度变化,搜索窗口也需要变化,否则,就会搜索失败;

b) 当目标速度较快等情况时,跟踪效果可能会打折扣;

c) 单纯的颜色直方图信息,特征略显得单薄。

改善方法:

a) 目标位置预测机制

b) 不断更新目标模板

c) 利用多尺度窗口和空间特征,扩大meanshift算法的适应性

4. meanshift的效率

单纯的meanshift算法的效率还是不错的,但在处理复杂情况时,如解决局部最优问题、多尺度问题、目标速度过快(前后两图无重叠)等,meanshift算法就需要多次运行,效率会降低,所以,尽量做好前期预处理工作,降低运算量,如去除固定的背景、kalmanfilter预测目标的下一个位置等。

从backproject到meanshift:各自的作用,布布扣,bubuko.com

时间: 2024-10-03 13:09:55

从backproject到meanshift:各自的作用的相关文章

【计算机视觉】借助图像直方图来检测特定物(MeanShift、CamShift算法)

直方图引入 直方图是一个简单的表,它给出了一幅图像或一组图像中拥有给定数值的像素数量.因此,灰度图像的直方图有256个条目(或称为容器).0号容器给出值为0的像素数目,1号容器给出值为1的像素个数,以此类推. 直方图反投影 直方图是图像内容的一个重要特性.如果一幅图像的区域中显示的是一种独特的纹理或是一个独特的物体,那么这个区域的直方图可以看做一个概率函数,它给出的是某个像素属于该纹理或物体的概率.这使得我们可以借助图像的直方图来检测特定的内容. 反投影直方图的方法是一种把目标概率分布映射到观测

基于MeanShift的目标跟踪算法及实现

一.简介 首先扯扯无参密度估计理论,无参密度估计也叫做非参数估计,属于数理统计的一个分支,和参数密度估计共同构成了概率密度估计方法.参数密度估计方法要求特征空间服从一个已知的概率密度函数,在实际的应用中这个条件很难达到.而无参数密度估计方法对先验知识要求最少,完全依靠训练数据进行估计,并且可以用于任意形状的密度估计.所以依靠无参密度估计方法,即不事先规定概率密度函数的结构形式,在某一连续点处的密度函数值可由该点邻域中的若干样本点估计得出.常用的无参密度估计方法有:直方图法.最近邻域法和核密度估计

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

在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行opencv中给的sample并稍加修改. Camshift函数的原型为:RotatedRect CamShift(InputArray probImage, Rect& window, TermCriteria criteria). 其中probImage为输入图像直方图的反向投影图,window为要

深度学习与meanshift结合实现跟踪

深度学习一个重要的作用是实现目标的特征实现自动提取过程,传统的meanshift跟踪常用的有颜色直方图,HOG等边缘特征提取目标实现跟踪,则meanshift跟踪可实现的则是用深度学习自动学习的特征来完成跟踪.好处是对于复杂的情况也能很好的提取目标的特征,使得跟踪的鲁棒性和精度更高. 很多人担心的是实时性的问题,其实来说,深度学习完成的过程主要分成两部,预训练预测,预训练完全可以通过离线训练来完成,那么就可以不用考虑这部分时间.而预测部分消耗的时间相对HOG来说,稍微慢一点(实践).那么对于实际

基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)

转自网络:http://blog.csdn.net/zouxy09/article/details/17913745 基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统) [email protected] http://blog.csdn.net/zouxy09 一年多前开始接触计算机视觉这个领域的时候,年幼无知,倍感吃力.当年惶恐,从而盲从.挣扎了不少时日,感觉自己好像还是处于领域的门外汉一样,在理论与实践的鸿沟中无法挣脱,心里空落落的.在这种挥之不去的烦忧中,某个时候豁然开朗,觉

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

在这一节中,主要讲目标跟踪的一个重要的算法Camshift,因为它是连续自使用的meanShift,所以这2个函数opencv中都有,且都很重要.为了让大家先达到一个感性认识.这节主要是看懂和运行opencv中给的sample并稍加修改. Camshift函数的原型为:RotatedRect CamShift(InputArray probImage, Rect& window, TermCriteria criteria). 其中probImage为输入图像直方图的反向投影图,window为要

@jsonignore的作用

作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响. 如下: package com.hzboy.orm; import java.util.List; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.pe

配置虚拟域名,hosts文件起作用

快速打开hosts方法 开始->运行->system32->回车 当前路径文件夹drivers\etc\hosts hosts文件起作用,目前楼主知道有两个可能原因 1.刷新dns cmd里面运行 ipconfig /flushdns 2.没配置前访问了一次域名,配置完之后浏览器没重启.所以不起作用 重新启动浏览器或者换一个浏览器

Linux中的环境变量配置文件及其作用

登录相关的配置文件: /etc/profile 范围:对所有用户生效 作用: a.定义USER变量 b.定义LOGNAME变量 c.定义MAIL变量 d.定义PATH变量 e.定义HOSTNAME变量 f.定义HISTSIZE变量 g.定义umask值 i.调用/etc/profile.d/*.sh文件 /etc/profile.d/*.sh 范围:对所有用户生效 说明:这是一族sh文件,没个都会被调用 例如: /etc/profile.d/lang.sh 作用:调用/etc/sysconfg/