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进行卷积操作

 
  1. $$
  2. f(n) =
  3. \begin{cases}
  4. n/2, & \text{if $n$ is even} \\
  5. 3n+1, & \text{if $n$ is odd}
  6. \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. HDU4745——Two Rabbits——2013 ACM/ICPC Asia Regional Hangzhou Online

    这个题目虽然在比赛的时候苦思无果,但是赛后再做就真的是个水题,赤果果的水题. 题目的意思是给n个数构成的环,两只兔子从任一点开始分别顺逆时针跳,每次可以调到任意一个数(最多不会跳过一圈). 求最多能跳 ...

  2. Python 的 “Magic” 方法

    在以前的文章中,我聊过了Python的 __getitem__ 和 __setitem__ 方法.这些方法被称为“魔法”方法.特殊方法或者dunger方法(译者:国内书籍用“魔法”一词较多).那么,什 ...

  3. BZOJ4519 CQOI2016不同的最小割(最小割+分治)

    最小割树:新建一个图,包含原图的所有点,初始没有边.任取两点跑最小割,给两点连上权值为最小割的边,之后对于两个割集分别做同样的操作.最后会形成一棵树,树上两点间路径的最小值即为两点最小割.证明一点都不 ...

  4. Candies CodeForces - 991C(二分水题)

    就是二分暴力就好了 为什么要记下来 呵呵....emm你说为什么... 行吧 好吧 我一直以为我的二分出问题了 原来不是 依旧很帅 统计的时候求的减了多少次  然后用次数乘了mid 这样做会使那个人获 ...

  5. 【转】Microsoft Visio2010 如何画UML 图

    转载:http://sdoq19.blog.163.com/blog/static/1910392122012419103442292/ 1.在Microsoft Office2010中打开Micro ...

  6. opencv图片转幻灯片视频

    /*g++ *.cpp `pkg-config --cflags --libs opencv` -std=c++11*/ #include <opencv2/opencv.hpp> usi ...

  7. C++ 构造函数初始化列表

    C++ 中类初始化列表执行顺序是按照定义的顺序执行,不是写在初始化列表的顺序执行 #include <bits/stdc++.h> using namespace std; class N ...

  8. BZOJ 2243 染色 | 树链剖分模板题进阶版

    BZOJ 2243 染色 | 树链剖分模板题进阶版 这道题呢~就是个带区间修改的树链剖分~ 如何区间修改?跟树链剖分的区间询问一个道理,再加上线段树的区间修改就好了. 这道题要注意的是,无论是线段树上 ...

  9. Codeforces 901C. Bipartite Segments(思维题)

    擦..没看见简单环..已经想的七七八八了,就差一步 显然我们只要知道一个点最远可以向后扩展到第几个点是二分图,我们就可以很容易地回答每一个询问了,但是怎么求出这个呢. 没有偶数简单环,相当于只有奇数简 ...

  10. Python之旅:数据类型、字符编码、文件处理

    一 引子 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 以下每个类型都是有详细介绍链接的 ...