Tracking算法学习之mean-shift——Robust Scale-Adaptive Mean-Shift for Tracking

原文地址:【http://www.sciencedirect.com/science/article/pii/S0167865514001056
一、传统的Mean-Shift
原文地址:【http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=1195991&tag=1
个人理解(可能存在偏差,会不断改进):
Mean-Shift算法用于tracking时,通过最小化两个概率密度函数之间的距离来进行,是一种非参数技术
对于模板中的目标,即target model,颜色直方图表示为
这里写图片描述

对于u从1到m,表示的是颜色直方图的bin,这里将三通道彩色图像化为16x16x16个bin,每个bin代表像素值区间为16的长度,如0到15,16到31…等。即m=16x16x16。每一个qu,表示的是之后根据该像素点对应的坐标位置而计算出来的权值weights的累加和

这里写图片描述
这里的c表示的是对该直方图进行归一化的系数。其中这里写图片描述
这里写图片描述

这里的核函数k(x)是Epanechnikov,即:
这里写图片描述

这里的cd表示的是d维空间中的单位球体的体积,对应于图像来说,d=2,cd就是单位圆面积。
后面还要用到的g(x)是k(x)的一阶导数,即g(x)=-2/π或0。

对于下一帧图像,即待求候选目标target candidate,颜色直方图表示为
这里写图片描述
对于各字母代表的含义与上述基本相同。只是在对candidate求直方图时,因为目标位置和尺度可能变化,所以对应于candidate的中心点,就不再默认为原来的中心点(原来的模板目标框中中心点位置设为原点),并且尺度有了而一个h因子的变化。所以对于每一个bin的值的求解方程变为:
这里写图片描述
这里的ch即为对该直方图进行归一化的系数。
这里写图片描述

上述两式得到了两帧图像中目标的表示,判断这两个区域表示的是否为同一目标,就要比较这两者之间的相似性。文中采用了巴氏距离来说明两个直方图(有通过归一化系数的计算将直方图规范为和为1的概率分布)之间的相似性。

通过对巴氏距离的公式的泰勒展开,能够得到一个复杂的公式(不太懂),如下:
这里写图片描述

将一部分表达式作为之后的以wi表示的权值,得
这里写图片描述

其中,这里写图片描述

通过上述求出的权值wi就可以求出下一个位置的中心坐标,即
这里写图片描述

整个的算法如下:
这里写图片描述

【尺度】
该算法中提出,对于每次的尺度变化,使用一个10%的上下浮动,即对于每次的计算,都计算三次得三个不同的h值,然后比较选择出最好的那个。三个h分别是:这里写图片描述这里写图片描述这里写图片描述,这里的△h为这里写图片描述

但是实际上,该算法在目标尺度变化的时候处理并不好,因此Tomas等人发表了Robust Scale-Adaptive Mean-Shift for Tracking, 对于在使用mean-shift算法进行tracking时的尺度变化问题进行了改进。
值得注意的是,传统的mean-shift在计算k(x)核函数的时候,使用的是isotropic的,即首先根据图像的大小,设置两个scaling系数,来对图像进行rescale,使其尽量接近正圆(单位圆),然后再对其进行核函数及之后的weight值计算。由于整体进行rescale,所以不会丢失目标特征信息。

在改进的算法Robust Scale-Adaptive Mean-Shift for Tracking中,与传统的而不同首先体现在,计算的目标区域是anisotropic的,即直接使用了目标区域的椭圆形特征,因此,对于颜色直方图(概率密度函数)的计算有了一些区别。

对于模板中目标的颜色直方图,即target model中
这里写图片描述
这里的核函数的参数相比之前有了变化,变成了长短轴分别为a,b(分别为矩形目标区域的长宽的一半)的椭圆区域。C同样为归一化系数。

对于target candidate,颜色直方图的分布为:
这里写图片描述
与传统方法的定义类似,y1,y2分别是目标区域中心点的横纵坐标,a,b对应的是原本模板中的长短轴,h是目标区域的尺度变化因子。Ch为归一化系数。给定了核函数k(x)和h,就可以通过下列公式求出Ch(没看懂这个公式的推导):
这里写图片描述

得出这里写图片描述

下一步是计算两个概率密度之间的相似度,也是采用的巴氏距离的方法
这里写图片描述

和经典的mean-shift一样,定义wi如下(实际上后面采用了别的方式计算,并没有使用该公式):
这里写图片描述

定义G如下:
这里写图片描述

对应着经典mean-shift对下一中心位置y1的求解时的分母,可以往上看对比一下O(∩_∩)O~。算法的思想与经典的有所改变。

下面定义了一个mk,我理解的该变量表征的是由初始位置向正确位置移动的向量,
这里写图片描述
这里
这里写图片描述

然后经过一些求导推导(没太懂。。。),如下
这里写图片描述
这里写图片描述

然后就能得到下一位置y1的表达和尺度h1的表达:
这里写图片描述

以上是该算法对于下一帧中目标的位置和尺度的求解。

【改进之处】:
一、背景像素加权来求目标的概率密度。主要思路是首先对划定的目标区域提取histogram;然后对抠出目标的背景区域提取histogram,并根据一定规则将背景histogram转化为权值;然后将目标histogram和背景的histogram相乘,得到加权的目标区域histogram,作为target model的最终概率密度。
在求取wi的时候也是利用了这一结果。
这里写图片描述
二、定义了两个规范化值b1,b2用于限定尺度变化大小和背景加权比例。

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
如果你真的就看完了《 packetdrill框架点滴剖析以及TCP重传的一个细节 》,我觉得你应该有一个疑问,那就是RH发行版使用的2.6.32内核真的使用了PRR降窗算法吗?为此,我把故事再撸一遍。         按照标准的2.6.32内核,第一次收到SACK的时候,在进入重传之前,拥塞窗口的值应该是in_flight+1,即2+1=3个段,也就是说可以重传1个段,但是抓包发现重传了2个段,tcpprobe也证实了在进入重传之前,拥塞窗口的值是4,而in_flight的值为2,完全对不上tcp_cwnd
OSSEC linux(server) windows(agent)史上最详细中文配置 作者:谭丙章 E-mail:feifengwind@163.com ossec官方网站: http://www.ossec.net/ ossec帮助文档: http://ossec-docs.readthedocs.org/en/latest/manual/index.html 介绍 SSEC是一款开源的多平台的入侵检测系统,可以运行于Windows, Linux, OpenBSD/FreeBSD, 以及 MacOS等

反汇编mbr - 2016-07-22 19:07:23

https://notelzg.github.io/2016/07/17/disamy-mbr/ 个人博客,排版更好 今天把我们每次开机都用到的MBR,反汇编看看里面的引导代码是怎么样的顺便说一下 MBR 相关的开机过程。以及我们经常用的U盘自启动 程序到底值怎么玩的。 window开机流程 流程 加电--BIOS-- MBR-- DPT-- pbr-- Bootmgr-- bcd-- Winload.exe--- —- 内核加载– 整个windows7系统 细节 在CPU上电之后,若由硬盘启动,则BIO
Members 成员 Members are used for registering and authenticating external users of an Umbraco installation (ie. forum members, intranet users and so forth). Unlike with Document Types and Media Types everything is done in the Members section both defining a
特此说明:我参考了李林锋老师写的《netty权威指南》一书,支持大家买正版书学习。学会了,赶紧写下来,不但为了加深记忆也希望对大家有所帮助! 上节我们讲解了LineBasedFrameDecoder和StringDecoder的使用,如果大家理解了这二个东西,那么这一章学起来将是轻车熟路。话不多说开始吧。 本章我们将讲解一下内容: DelimiterBasedFrameDecoder(可以自动完成以分隔符做结束标志的消息解码)FixedLengthFrameDecoder(可以自动完成对定长消息的解码)

漫谈处理器体系结构 - 2016-07-22 19:07:08

漫谈处理器体系结构 前言: 这篇博客本应该是《 深入理解计算机体系结构 》(第二版)中第一部分第4章处理器体系结构的读后感,但是感觉这样的名字有点low,因为毕竟加入了自己的理解和总结。 ISA(Instruction-Set Architecture) 几乎所有讲体系结构的书都会讲到这个指令集。指令集确实应该是最先说明的问题。一句话概括起来指令集就是说CPU能干什么事。基本常用的指令集包括:传送指令、算术逻辑指令、跳转指令等。是体系结构需要实现的功能。指令集对人类来说是友好的,可阅读的。但对于只认识01

Linux学习---文件查找 - 2016-07-22 18:07:56

grep, egrep, fgrep  :文本查找 文件查找 locate 全系统查找,非实时,模糊匹配。查找时根据全系统文件数据库进行的。 系统在每天的计划任务时间生成数据库。 updatedb  手动生成文件数据库。 速度快。 find 实时查找,精确。速度慢。 遍历指定目录中所有文件完成查找。 支持多种查找标准。 find   PATH   查找标准   找到后的处理动作           路径默认:表示当前目录           标准默认:指定路径下所有文件           动作默认:为打
在上一篇文章中,详细讲述了Spring中注册AOP解析器的过程。在这篇文章中,将进一步讲解Advisors的创建过程。 Spring中注册AOP解析器的所有操作都是针对AnnotationAwareAspectJAutoProxyCreator进行的。AnnotationAwareAspectJAutoProxyCreator是实现AOP的根本。首先观察AnnotationAwareAspectJAutoProxyCreator的类层次结构。 图1 AnnotationAwareAspectJAutoPr
 总体来说 设计模式 分为三大类:创建型模式、结构型模式和行为型模式。 博主的上一篇文章已经提到过创建型模式,此外该文章还有设计模式概况和设计模式的六大原则。设计模式的六大原则是设计模式的核心思想,详情请看博主的另外一篇文章:  Java经典设计模式之五大创建模式(附实例和详解) 。 接下来我们看看结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。其中的对象的适配器模式是各种结构
大话设计模式 1 面向对象的好处 可维护、可重复、可扩展 。 2 包含的角色 简单工厂模式包含三个角色: 工厂类Factory :工厂类是用来制造产品的。因此,在Factory中有一个用于制造产品的Create函数或者Generate函数之类的函数。这个函数能够根据“标识符”的不同生成不同的ConcreteProduct,当然这些ConcreteProduct都是继承自AbstractProduct的。 抽象产品类AbstractProduct :抽象产品是从其他具体产品抽象出来的。抽象产品类只有一个。