https://blog.csdn.net/victoriaw/article/details/62416759

ASEF相关滤波器:

Average of Synthetic Exact Filters 
David S. Bolme, Bruce A. Draper, J. Ross Beveridge 
CVPR, 2009

相关滤波器可以用于物体定位。相关滤波器算法的思想是学习一个滤波器hh,然后和图像fifi进行卷积操作

 
$$
f(n) =
\begin{cases}
n/2, & \text{if $n$ is even} \\
3n+1, & \text{if $n$ is odd}
\end{cases}
$$
\( gi=fi∗hgi=fi∗h \)

得到相关信息图,图中值最大的点就是物体的位置。

训练数据中要提供图片对应的相关图gigi,怎么生成呢?最粗暴的办法就是把目标的中心位置设成1,其他为0。本文中作者将gg看作是以目标位置(xi,yi)(xi,yi)为中心的二维高斯分布:

 
gi(x,y)=e(x−xi)2+(y−yi)2σ2gi(x,y)=e(x−xi)2+(y−yi)2σ2

那么现在有了一组图片fifi及相关图gigi,怎么学习hh呢?

我们知道,空间上的卷积操作经过傅里叶变换在频域上就变成按元素相乘的操作(关于卷积)。所以对上式左右两边进行离散傅里叶变换DFT:

 
G(ω,ν)=F(ω,ν)⋅H∗(ω,ν)G(ω,ν)=F(ω,ν)⋅H∗(ω,ν)

这里不知道为什么是H的共轭??????? 
所以对每幅图片就有:

 
H∗i(ω,ν)=Gi(ω,ν)Fi(ω,ν)Hi∗(ω,ν)=Gi(ω,ν)Fi(ω,ν)

这里的除也是按元素相除。 
ASEF最终得到的滤波器为

 
H∗(ω,ν)=1N∑i=1NH∗i(ω,ν)=1N∑iGiFi(1)(1)H∗(ω,ν)=1N∑i=1NHi∗(ω,ν)=1N∑iGiFi
 
h(x,y)=1N∑i=1Nhi(x,y)h(x,y)=1N∑i=1Nhi(x,y)

MOSSE相关滤波器:

Visual objecting tracking using adaptive correlation filters 
David S. Bolme, J. Ross Beveridge, Bruce A. Draper, Yui Man Lui 
CVPR, 2010

这篇文章也出自ASEF的作者之手。本文作者针对的问题是目标跟踪,并且构造滤波器的方法和上文有所差别。 
对一幅图片,仍然有:

 
H∗i(ω,ν)=Gi(ω,ν)Fi(ω,ν)Hi∗(ω,ν)=Gi(ω,ν)Fi(ω,ν)

但是最终的滤波器不是采用平均,而是通过最小化误差平方和:

 
H=minH∑i|Fi⋅H∗−Gi|2H=minH∑i|Fi⋅H∗−Gi|2

怎么求解这个最优化问题?HH的每个元素都是独立的,所以可以单独求解:

 
Hων=minHων∑i|Fiων⋅H∗ων−Giων|2Hων=minHων∑i|Fiων⋅Hων∗−Giων|2

这个误差函数是凸函数,所以有一个最小值,那么可以令:

 
∂∂H∗ων∑i|Fiων⋅H∗ων−Giων|2=0∂∂Hων∗∑i|Fiων⋅Hων∗−Giων|2=0

于是:

 
∂∂H∗ων∑i(Fiων⋅H∗ων−Giων)(Fiων⋅H∗ων−Giων)∗=0∂∂Hων∗∑i(Fiων⋅Hων∗−Giων)(Fiων⋅Hων∗−Giων)∗=0

展开后得到:

 
∂∂H∗ων∑iFiωνF∗iωνHωνH∗ων−FiωνG∗iωνH∗ων−F∗iωνGiωνHων+GiωνG∗iων=0∂∂Hων∗∑iFiωνFiων∗HωνHων∗−FiωνGiων∗Hων∗−Fiων∗GiωνHων+GiωνGiων∗=0
 
∑iFiωνF∗iωνHων−FiωνG∗iων=0∑iFiωνFiων∗Hων−FiωνGiων∗=0
 
Hων=∑iFiωνG∗iων∑iFiωνF∗iωνHων=∑iFiωνGiων∗∑iFiωνFiων∗

于是有

 
H=∑iFi⋅G∗i∑iFi⋅F∗iH=∑iFi⋅Gi∗∑iFi⋅Fi∗
 
H∗=∑iGi⋅F∗i∑iFi⋅F∗i(2)(2)H∗=∑iGi⋅Fi∗∑iFi⋅Fi∗

上式用于在处理一个视频时对滤波器进行初始化,具体做法是对首帧图片,对跟踪窗口做仿射变换得到8个图片fifi,并得到对应的相关图片gigi。而在跟踪的时候,需要不断根据当前帧来调整滤波器,即在线更新:

 
H∗i=AiBi(3)(3)Hi∗=AiBi
 
Ai=ηGi⋅F∗i+(1−η)Ai−1Ai=ηGi⋅Fi∗+(1−η)Ai−1
 
Bi=ηFi⋅F∗i+(1−η)Bi−1Bi=ηFi⋅Fi∗+(1−η)Bi−1

本文取η=0.125η=0.125。训练和测试过程都要进行滤波器初始化和在线更新。

那么ASEF是否可以用在跟踪问题上呢?作者告诉你是可以滴。不同之处在于初始化使用的是公式(1),并且在线更新使用的是下面的公式:

 
H∗i=ηGiFi+(1−η)H∗i−1(4)

[转]计算机视觉之跟踪算法——相关滤波器Correlation Filter的更多相关文章

  1. 【目标跟踪】相关滤波算法之MOSSE

    简要 2010年David S. Bolme等人在CVPR上发表了<Visual Object Tracking using Adaptive Correlation Filters>一文 ...

  2. KCF跟踪算法 入门详解

    一.算法介绍 KCF全称为Kernel Correlation Filter 核相关滤波算法.是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins ...

  3. 目标跟踪之相关滤波:CF及后续改进篇

    一. 何为相关滤波? Correlation Filter 最早应用于信号处理,用来描述两个信号之间的相关性,或者说相似性(有点像早期的概率密度),先来看定义: 对于两个数据 f 和 g,则两个信号的 ...

  4. 视觉目标跟踪算法——SRDCF算法解读

    首先看下MD大神2015年ICCV论文:Martin Danelljan, Gustav Häger, Fahad Khan, Michael Felsberg. "Learning Spa ...

  5. Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解

    视频目标跟踪问题分析         视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...

  6. Real-Time Compressive Tracking,实时压缩感知跟踪算法解读

    这是Kaihua Zhang发表在ECCV2012的paper,文中提出了一种基于压缩感知(compressive sensing)的单目标跟踪算法,该算法利用满足压缩感知(compressive s ...

  7. 挑战目标跟踪算法极限,SiamRPN系列算法解读

    商汤科技智能视频团队首次开源其目标跟踪研究平台 PySOT.PySOT 包含了商汤科技 SiamRPN 系列算法,以及刚被 CVPR2019 收录为 Oral 的 SiamRPN++.此篇文章将解读目 ...

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

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

  9. TLD视觉跟踪算法(转)

    源:TLD视觉跟踪算法 TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总 ...

随机推荐

  1. BeanCopier

    cglib是一款比较底层的操作java字节码的框架. 下面通过拷贝bean对象来测试BeanCopier的特性: public class OrderEntity { private int id; ...

  2. Flyway学习笔记

    Flyway做为database migration开源工具,功能上像是git.svn这种代码版本控制.google搜索database migration,或者针对性更强些搜索database mi ...

  3. D-Separation(D分离)-PRML-8.22-Graphical Model 五 18 by 小军

    D-Separation(D分离)-PRML-8.22-Graphical Model 五18by 小军   一.引言 在贝叶斯网络的学习过程中,经常会遇到(D-Separation)D-分离这个概念 ...

  4. Laravel4快速安装方法,解决Laravel4安装速度慢

    Laravel4原始安装方法 Laravel4 是构建在 Composer 之上的, 之前的安装方法是如下:   composer create-project laravel/laravel you ...

  5. c++11 闭包的实现

    c++11 闭包的实现 什么是闭包 闭包有很多种定义,一种说法是,闭包是带有上下文的函数.说白了,就是有状态的函数.更直接一些,不就是个类吗?换了个名字而已. 一个函数,带上了一个状态,就变成了闭包了 ...

  6. 【集训】练习题 uria

    Description 求有多少组正整数对 \((a, b)\) 满足 \(a + b ≤ n\) \(a + b | ab\) \(n ≤ 10^14\) Solution 这题有点绕啊 设 \(g ...

  7. [洛谷P4705]玩游戏

    题目大意:对于每个$k\in[1,t]$,求:$$\dfrac{\sum\limits_{i=1}^n\sum\limits_{j=1}^m(a_i+b_j)^k}{nm}$$$n,m,t\leqsl ...

  8. 【UOJ#80】二分图最大权匹配(KM)

    题面 UOJ 题解 模板qaq #include<iostream> #include<cstdio> #include<cstdlib> #include< ...

  9. python之插入排序

    插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2).是稳定的排序方法.插入算法把要排序的数组分成两部 ...

  10. [学习笔记]平衡树(Splay)——旋转的灵魂舞蹈家

    1.简介 首先要知道什么是二叉查找树. 这是一棵二叉树,每个节点最多有一个左儿子,一个右儿子. 它能支持查找功能. 具体来说,每个儿子有一个权值,保证一个节点的左儿子权值小于这个节点,右儿子权值大于这 ...