基本了解GMM的基本工作原理,下面我們介紹利用MATLAB來實作GMM的基本工作原理。通過介紹程式來逐漸實作GMM的工作原理。
代碼段一:通過sprintf函數來讀取所存在的圖檔,然後再通過imread來讀取圖檔的數值,這個代碼段比較簡單,主要用于讀取圖檔的數值。
代碼段二:主要參數的初始化。
代碼段三,主要用于計算每張圖檔的灰階值,下面就簡單介紹一下圖像平均灰階值的計算方法,灰階值是亮度的概念,0~為黑色,255~白色,依據顔色深淺範圍為0~255.(一定介于0-255之間)。計算圖像的平均灰階值有利于簡化靜态圖像和動态圖像的區分,我們通過計算圖檔的平均灰階值,使靜态的物體變為黑色,而使動态的物體變為白色。進而簡化了動态物體的識别。
代碼段四:這裡就是我們所得到多元高斯函數的疊加功能。
這兩組公式就是對應的這段代碼,通過代碼我們可以實作多元高斯函數的疊加運算。
代碼段五:圖像像素的更新,将處理後的圖像做更新,然後得到跟蹤的圖像。
4.2 仿真結果以及分析
以上我們基本了解了GMM的基本工作流程,下面我們将GMM的仿真結果做具體的分析。所謂的動态圖像跟蹤,就是将圖檔變成黑白像素的圖像,然後動态的物體做為白色物體而靜态的物體作為黑色圖像。進而實作了物體的動态跟蹤過程。
·動态樹葉的分辨
圖4-1 | 圖4-2 |
圖4-3 | 圖4-4 |
事實上,動态樹葉的變動範圍是非常小的,而對于系統的檢測,樹葉不應該被檢測出來,這可能就是該系統的不足之處。
·汽車的跟蹤
視屏中出現多次的汽車,我們以其中一個汽車做為例子來說明。
圖4-5 | 圖4-6 |
圖4-7 | 圖4-8 |
圖4-9 | 圖4-10 |
圖4-11 | 圖4-12 |
從圖中我們可以看到右端一個白色的物體移動過來,這個白色的物體就是所謂的汽車了,隻是由于GMM系統自身的不穩定性,導緻略微運動的樹葉也被檢測出來了,但是總體可以看到汽車已經被檢測出來了。
·行人的跟蹤
圖4-13 | 圖4-14 |
圖4-15 | 圖4-16 |
圖4-17 | 圖4-18 |
通過觀察這幾張圖檔,我們可以看到中間有一個行人走了過來,說明對于行人,我們也檢測成功了,可見GMM算法的正确性。
- 利用MATLAB實作KDE
5.1 基于MATLAB的KDE實作
通過以上的理論分析,我們基本可以得到KDE算法的基本實作過程。
代碼段一:這個代碼段主要通過計算圖像的KDE像素點來完成圖像的檢測工作。然後對通過算法後的點利用reshape函數進行重構圖像,得到我們所要的像素值。
代碼段二:通過這個代碼,我們将得到滿足條件要求的圖像類型值。
代碼段三:權重的計算
代碼段四:最後我們得到了圖像的最後需要的像素值來達到動态物體的跟蹤效果。
5.2 仿真結果以及分析
通過上面的代碼分析,我們得到了所要的效果。
圖5-1 | 圖5-2 |
通過這個程式,我們可以看到,隻有動的人物被檢測出來了,但是背景的樹葉沒有被檢測出來,完好的解決了GMM算法中存在的問題。
圖5-3 | 圖5-4 |
通過這個程式,我們可以看到,隻有動的汽車被檢測出來了,但是背景的樹葉沒有被檢測出來,完好的解決了GMM算法中存在的問題。
圖5-5 |