《Fast Traking via Spatio-Temporal Context Learning》要点整理与代码实现之二
上一篇主要讲解了全文的主要思想,整理了一些可能会被忽略的重点,并画了程序的主流程图,但这个流程图只是一个战略性的总图,较为宏观,而程序在实现时还有一些细节上的预处理也很重要,本篇将总结这些小细节。
视频信号是一组随时间变化的动态信号(二维),引述《图像处理、分析与机器视觉》一书第3.2.3节中的一段话:持续时间短的或变化快的时间信号具有宽的频谱。如果我们要处理非静态信号(non-stationary signal),一种选择是将其分解为小片段(常称作窗口),并假定这些窗口外信号是周期性的。这种方法称作短时傅里叶变换——STFT——最初是Gabor在1964年提出的。不幸的是,仅仅使用非重叠矩形窗口来切割信号并不好,因为会引进不连续性而导致有大带宽的频域。这就是为什么信号在局部窗口的边缘上要用高斯或海明(Hamming)窗平滑抑制到零的原因。
以下内容来自百度百科:数字信号处理的主要数学工具是傅里叶变换.而傅里叶变换是研究整个时间域和频率域的关系。不过,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。无限长的信号被截断以后,其频谱发生了畸变,原来集中在f(0)处的能量被分散到两个较宽的频带中去了(这种现象称之为频谱能量泄漏)。为了减少频谱能量泄漏,可采用不同的截取函数对信号进行截断,截断函数称为窗函数,简称为窗。不同的窗函数对信号频谱的影响是不一样的,这主要是因为不同的窗函数,产生泄漏的大小不一样,频率分辨能力也不一样。信号的截断产生了能量泄漏,而用FFT算法计算频谱又产生了栅栏效应,从原理上讲这两种误差都是不能消除的,但是我们可以通过选择不同的窗函数对它们的影响进行抑制。(矩形窗;布莱克曼窗;三角窗;汉宁窗;海明窗;高斯窗)。
我的信号理论知识不是很深,没有完全读懂上面两段的意思,但是上述的理论确实为我们程序中的一个预处理提供了理论依据。
---------------------------------------------------------------------------------------------------------------------
首先注意,在原论文中,求先验概率的公式是:
而在程序实现时有如下两句预处理:
在初始化时: hamming_window = hamming(context_sz(1)) * hann(context_sz(2))‘;
在计算先验概率(即context prior model)时: window = hamming_window .* exp(-0.5 * dist / (sigma^2));
可以看到原文并没有加海明窗,但是在具体实现时却加上了海明窗,其原因应该就是本文开头所引述的那样。
《Fast Traking via Spatio-Temporal Context Learning》要点整理与代码实现之二,布布扣,bubuko.com