原文地址:https://www.cs.colostate.edu/~vision/publications/bolme_cvpr10.pdf
mosse代码解读:https://blog.csdn.net/fjswcjswzy/article/details/106216436
摘要
最小输出误差平方和(MOSSE)滤波器,对光照,尺度,姿势和非刚性变形的变化具有鲁棒性。 根据峰-旁瓣比检测到遮挡,这使跟踪器可以暂停并恢复到物体再次出现时停止的位置
基于相关滤波的跟踪
首先,计算输入图像的二维傅立叶变换:
F
=
F
(
f
)
\boldsymbol{F}=\mathcal{F}\text{(}\boldsymbol{f}\text{)}
F=F(f)和滤波器的二维傅立叶变换:
H
=
F
(
h
)
\boldsymbol{H}=\mathcal{F}\text{(}\boldsymbol{h}\text{)}
H=F(h)。 卷积定理指出,函数卷积的傅立叶变换是函数傅立叶变换的乘积。 使用⊙符号表示元素点乘法,并使用*表示复共轭,相关性采用以下形式:
使用逆FFT将相关输出转换回空间域。 此过程的瓶颈是计算正向和逆向FFT,因此整个过程的上限时间为O(P log P),其中P是跟踪窗口中像素的数量。
预处理
首先,使用对数函数对像素值进行转换,该函数有助于解决低对比度照明情况。 像素值被归一化为平均值为0.0,范数为1.0。 最后,将图像乘以余弦窗口,该余弦窗口将边缘附近的像素值逐渐减小为零。 这还有一个好处,就是可以将更多的重点放在目标的中心附近。
mosse滤波器
首先,它需要一组训练图像fi和训练输出gi。 通常,gi可以是任何形状。 在这种情况下,gi是由ground truth生成的以至于它具有一个(σ= 2.0)2D高斯形状的峰,其中心位于训练图像fi中的目标。
训练在傅立叶域中进行,以利用输入和输出之间的简单元素关系。 如上一节所述,我们将大写变量Fi,Gi和滤波器H定义为它们的小写字母对应变量的傅立叶变换。
除法是按元素进行相除的。
为了找到一个将训练输入映射到期望的训练输出的滤波器,MOSSE找到了一个滤波器H,该滤波器使卷积的实际输出和期望的卷积输出之间的平方误差之和最小。
此最小化问题的形式为:
Fi和Gi是输入图像以及傅立叶域中的相应所需输出,目标是找到一个滤波器H,该滤波器使输出误差平方和最小。 因为傅立叶域中的相关是逐元素相乘,所以可以独立地优化滤波器H的每个元素。 因此,优化问题可以从多元优化问题转变为独立地优化H的每个元素的问题。
其中ω和ν索引H的元素。
此函数是实值的,正的和凸的,因此将只有一个最优值。 通常,为了找到函数的最优值,可通过将导数设置为零,然后求解目标变量的来找到稳定点。 为该函数找到稳定点是不同的,因为它是复变量的实数值函数。
解决此优化问题并不特别困难,但需要格外小心,因为要优化的函数是复杂变量的实值函数。 首先,H的每个元素(由ω和ν索引)可以独立求解,因为傅里叶域中的所有运算都是逐元素执行的。 这涉及根据
H
ω
ν
\boldsymbol{H}_{\boldsymbol{\omega \nu }}
Hων和
H
ω
ν
∗
\boldsymbol{H}_{\boldsymbol{\omega \nu }}^{*}
Hων∗重写函数。 然后,部分
H
ω
ν
∗
\boldsymbol{H}_{\boldsymbol{\omega \nu }}^{*}
Hων∗设为零,同时将
H
ω
ν
\boldsymbol{H}_{\boldsymbol{\omega \nu }}
Hων视为自变量
可以证明,满足该方程式的任何 H ω ν \boldsymbol{H}_{\boldsymbol{\omega \nu }} Hων都是一个稳定点。
计算偏导得:
求解
H
ω
ν
\boldsymbol{H}_{\boldsymbol{\omega \nu }}
Hων得:
最后通过求解H *,我们用原始数组表示法将该表达式重写为,可以找到MOSSE滤波器的闭式表达式:
滤波器初始化以及在线更新
使用随机仿射变换构造训练集,以在初始帧中生成跟踪窗口的八个小扰动(fi)。还会生成训练输(gi),其峰值对应于目标中心。
mosse滤波器为:
其中η是学习率。 η取值为0~1,η越大,则代表当前帧受前一帧的影响就越小,当η=1时,则完全不受前一帧的影响。 在实践中,我们发现η= 0.125可使滤波器快速适应外观变化,同时仍保持滤波器的鲁棒性。