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

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=fihgi=fi∗h \)

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

 

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

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

 

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

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

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


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

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


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

 
H(ω,ν)=1Ni=1NHi(ω,ν)=1NiGiFi(1)(1)H∗(ω,ν)=1N∑i=1NHi∗(ω,ν)=1N∑iGiFi

 

 

 
h(x,y)=1Ni=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的作者之手。本文作者针对的问题是目标跟踪,并且构造滤波器的方法和上文有所差别。 
对一幅图片,仍然有: 

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


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

 
H=minHi|FiHGi|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ωνFiωνHωνHωνFiωνGiωνHωνFiωνGiωνHων+GiωνGiων=0∂∂Hων∗∑iFiωνFiων∗HωνHων∗−FiωνGiων∗Hων∗−Fiων∗GiωνHων+GiωνGiων∗=0


 
iFiωνFiωνHωνFiωνGiων=0∑iFiωνFiων∗Hων−FiωνGiων∗=0


 
Hων=iFiωνGiωνiFiωνFiωνHων=∑iFiωνGiων∗∑iFiωνFiων∗


于是有 

 
H=iFiGiiFiFiH=∑iFi⋅Gi∗∑iFi⋅Fi∗

 

 

 
H=iGiFiiFiFi(2)(2)H∗=∑iGi⋅Fi∗∑iFi⋅Fi∗

 

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

 
Hi=AiBi(3)(3)Hi∗=AiBi

 

 

 
Ai=ηGiFi+(1η)Ai1Ai=ηGi⋅Fi∗+(1−η)Ai−1

 

 

 
Bi=ηFiFi+(1η)Bi1Bi=ηFi⋅Fi∗+(1−η)Bi−1


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

 

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

 
Hi=ηGiFi+(1η)Hi1(4)
posted @ 2018-08-07 19:54  ZYVV  阅读(5407)  评论(0编辑  收藏  举报