通常我们所说的目标跟踪任务指的是单目标跟踪任务,即给定一个图像序列,在第一帧中给出一个矩形框,然后跟踪算法需要在后续帧中跟踪这个框的内容。视觉中的目标跟踪方法一般被分成两个大类:生成类和判别类模型方法;

生成类的方法:在当前帧中对目标区域建模,在下一帧中寻找与模型最为相似的区域认为是预测的目标位置,典型的有卡尔曼滤波器,Mean-shift算法等。

判别类方法:当前帧以目标区域为正样本,背景为负样本,极其学习方法训练分类器,然后在下一帧中用训练好的分类器去寻找最优的区域。大部分的视觉跟踪方法都属于这一类,这类方法的特点是图像特征+机器学习。也叫tracking-by-detection。

核相关滤波器KCF就是一种典型的判别类方法,这类目标跟踪方法的思路一般如下:

1,在第t真(常常是第一帧)中框选出待跟踪的目标,在框选位置附近采样,训练得到一个分类器(也叫滤波器)。该分类器能够计算图像像素位置的响应值。

2,在t+1帧中,在前一阵的目标位置附近采样,用训练出的分类器在采样位置与图像进行相关操作(correlation,和卷积一样是信号处理中的概念),记录每个采样点的响应。

3,响应最强且满足预先给定阈值条件的采样被认为是t+1帧中目标的位置。

任何的循环矩阵可以被傅里叶变换矩阵对角化。利用傅里叶对角化的好处是,我们可以把有关训话矩阵的运算降维成向量运算。

循环矩阵的母的就是为了增加负样本(x的每个循环位移副本就可以看做负样本)

非线性回归:线性回归总归是不够全面的不够好的,因为有很多复杂的情况导致输入时线性不可分的。这是就需要使用更为普遍的非线性回归的方法

核技巧:更高维空间中内积的快速运算

用传统的方法 在高维空间Z下计算内积会很慢,而如果用核技巧通过核函数隐式的将X空间映射到Z空间,不必显示的计算,就可以实现快速计算。

核函数的选取原则就是使得样本在升维后的Z空间中变得线性可分

满足核矩阵为循环矩阵的核函数有:高斯核函数、多项式核函数、卡方核函数

 

实现细节:

如相关滤波器的标准一样,输入块(原始像素或提取的特征通道)由余弦窗口加权,该余弦窗口平滑的消除了由循环假设引起的图像边界处的不连续性。跟踪区域的大小是目标的2.5倍,以提供一些背景信息和其他负面样本。

回想一下,训练样本由基本样本的移位组成,因此我们必须为y中的每个样本指定回归目标。回归目标y进遵循高斯函数,根据空间贷款s,中心函数的目标值为1,对于任何其他便宜,平滑的衰减为0.高斯目标比二院标签更平滑,并且具有减少傅里叶域中振铃效应的好处。

一个微妙的问题是确定y的哪个元素是居中样本的回归目标,在该样本上我们将使高斯函数居中。尽管从直观上看,他似乎位于输出平面的中间,但事实证明,正确的选择是左上角的元素。解释是,在计算傅里叶域中的两个图像之间的额互相关并转换回空间域后,结果的左上角元素对应于零位移。当然由于我们总是处理循环信号,因此高斯函数的峰值必须从左上角到其他角回绕。在某些滤波器视线中,将高斯峰防止在回归目标的中间很常见,并且会导致相关输出不必要的移动半个窗口,必须在hoc/2之后进行矫正。

另一个常见的错误来源是,快速傅里叶变换的大多数实现都没有计算单一DFT。这意味着除非通过恒定因子矫正输出,否则不会保留信号的L2范数。有了一些符号的额滥用,我们可以说,单一DFT可以计算为

CSRT目标跟踪 目标跟踪kcf_核函数


其中输入x的大小为m×n,对于逆DFT来说,

CSRT目标跟踪 目标跟踪kcf_核函数_02

KCF算法的实现:

实现过程一般如下:

1.在第一帧中框选出带最终目标的位置,将矩阵的选择框区域扩大2.5倍,记大小为M*N

2.将矩形框的样本进行余弦加权,然后计算HOG特征,得到31维的HOG特征图。特征的每个维度看成以恶搞M*N大小的样本输入,记为x1,x2,,,x31

3,利用二维高斯函数生成和样本MxN大小一致的训练标签矩阵y。

4,利用论文中推出的核回归模型,先利用公式计算出

CSRT目标跟踪 目标跟踪kcf_CSRT目标跟踪_03

。                                

CSRT目标跟踪 目标跟踪kcf_CSRT目标跟踪_04

                    

        针对输入的HOG特征图,训练出一个非线性回归器:

                                                               

CSRT目标跟踪 目标跟踪kcf_CSRT目标跟踪_05

               5. 在一下帧中,在之前帧的目标位置框选出MxN大小的图片,也是进行余弦加权,然后求HOG特征图,得到z1,z2, ..., z31, 利用上面的公式求得

CSRT目标跟踪 目标跟踪kcf_计算机视觉_06


6. 利用如下公式,计算傅域下的响应矩阵,然后计算IFT得到响应矩阵f(Z)。

                                              

CSRT目标跟踪 目标跟踪kcf_循环矩阵_07

                       

7. 在矩阵f(Z)中找到最大的响应位置,若响应值超过余弦给定阈值,则该位置为当前帧中的目标位置;若最大的响应值仍小于阈值,则采取不久措施(比如用全图搜索匹配的方法)重新选择一个目标区域,然后重复到步骤1重新开始。

8. 然后是更新模型,以新找到的目标位置选取样本,重复步骤2-步骤5,计算用于当前帧的模型记为,则再下一帧使用的模型有当前计算模型与开始的模型插值得到,如:

                                                     

CSRT目标跟踪 目标跟踪kcf_CSRT目标跟踪_08

   m为学习率,是一个0-1之间的值。m越大说明以前的模型影响越大(太大容易跟丢),m越小说明以前的模型影响越小(太小容易不鲁棒)。

9. 重复步骤6开始的检测过程。
————————————————
 公式化简到了最后,使用算法的时候已经不需要去考虑在2D的情况下,核矩阵K这个循环矩阵式如何构造而来的了,计算只要知道就可以了。 实际上,在二维情况下核矩阵是一个循环分块矩阵。如果样本是MxN的大小,则K就是一个(MxN)x(MxN)的大小,它由通过置换矩阵循环移位得到。 
 

 

 

2、振铃效应:

(1)概念:

图像处理中,对一幅图像进行滤波处理,若选用的频域滤波器具有陡峭的变化,则会使滤波图像产生“振铃”,所谓“振铃”,就是指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。

(2)产生原因:

主要是由于DCT变换后对高频分量进行滤波操作导致。

(3)解决方案:

在视频编码中,为了解决或减小振铃效应,H265和SVAC2中采用了SAO样点滤波偏移的方案。