《Fast Traking via Spatio-Temporal Context Learning》要點整理與程式碼實現之二

查志強發表於2015-01-21

【原文:http://www.cnblogs.com/marcworld/p/3698194.html

上一篇主要講解了全文的主要思想,整理了一些可能會被忽略的重點,並畫了程式的主流程圖,但這個流程圖只是一個戰略性的總圖,較為巨集觀,而程式在實現時還有一些細節上的預處理也很重要,本篇將總結這些小細節。

  視訊訊號是一組隨時間變化的動態訊號(二維),引述《影象處理、分析與機器視覺》一書第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));

可以看到原文並沒有加海明窗,但是在具體實現時卻加上了海明窗,其原因應該就是本文開頭所引述的那樣。


相關文章