三、 GMM 演算法實作及去浮點數化
3.2 GMM 演算法驗證
一開始我們先驗證實作的 GMM 是否正確。首先假設第 n 個高斯分佈是符合 的,首先定義三個對像素驗證的檢查點:
14
(1) 像素顏色變化時,是否被偵測為前景。
(2) 像素不再被偵測成前景時間點是否正確(𝑊𝑡,𝑛 ≥ 𝑇𝑤)。
(3) 像素背景顏色更新的時間點是否正確(符合的高斯分佈之加權比重為最大 值)。
我們使用單一的像素資料來作驗證,如圖 3-5,在第一個和第二個單位時間,
先輸入紅色的像素資料,這時候紅色會進入背景,所以不會被偵測為前景。接下 來再輸入藍色,這時像素會被偵測為前景,但是背景會繼續維持在紅色。持續輸 入藍色,直到像素不再被偵測為前景,但是此時背景一樣維持在紅色,這個時間 點為驗證(𝑊𝑡,𝑛 ≥ 𝑇𝑤)。之後一直等到背景的顏色更新為藍色,這個時間點為驗 證𝑊𝑡,𝑛 的值為所有高斯分佈中最大的。
我們先使用手算,計算出這幾個時間點,如表格 3-1。接下來再與 GMM 程 式輸出的結果,如表格 3-2,作比較驗證。首先驗證第一個檢查點,手算的結果 在第 3 個畫面時符合第 1 個高斯分佈,而程式輸出結果也是一樣的。第二個檢查 點為像素不再被偵測為前景的時間點(𝑊𝑡,𝑛 ≥ 0.24),手算的結果為第 1590 個畫 面,與程式輸出的結果一致。第三個檢查點為背景顏色更新為藍色,𝑊𝑡,𝑛 為所有 高斯分佈中的最大值,也就是 Weight[1] > Weight[0] > Weight[2],在第 1653 個 畫面得到了這個結果,與程式輸出的結果一致。除了在三個檢查點得到了正確的 驗證外,我們還發現 GMM 背景更新過程中數據的誤差小於 10-7,所以手算的結 果與程式輸出的結果是一致的,証明實作的程式基本上是正確的。
15
圖 3-5 以單一像素作 GMM 程式之基本驗證
表格 3-1 手算以單一像素作 GMM 之結果
Excel Simulation
Frame R G B Weight[0] Weight[1] Weight[2]
1 255 0 0 1.0000000 0.0000000 0.0000000 2 255 0 0 1.0000000 0.0000000 0.0000000 3 0 0 255 0.9900974 0.0099026 0.0000000 4 0 0 255 0.9899324 0.0100676 0.0000000 5 0 0 255 0.9897674 0.0102326 0.0000000 1586 0 0 255 0.7604786 0.2395214 0.0000000 1587 0 0 255 0.7603519 0.2396481 0.0000000 1588 0 0 255 0.7602251 0.2397749 0.0000000 1589 0 0 255 0.7600984 0.2399016 0.0000000 1590 0 0 255 0.7599717 0.2400283 0.0000000 1591 0 0 255 0.7596564 0.2403436 0.0000000 1592 0 0 255 0.7591543 0.2408457 0.0000000 1650 0 0 255 0.5154448 0.4845552 0.0000000 1651 0 0 255 0.5094924 0.4905076 0.0000000 1652 0 0 255 0.5035402 0.4964598 0.0000000 1653 0 0 255 0.4975904 0.5024096 0.0000000 1654 0 0 255 0.4916454 0.5083546 0.0000000
16
17
(a) (b) (c)
(d) (e) (f)
(g)
圖 3-6 用以驗證 GMM 程式之一些影像畫面
(a) (b) (c)
(d) (e) (f)
(g)
圖 3-7 用以驗證 GMM 程式之一些背景畫面
18
這次使用的測試影片大小為 320x240,以影片的中心點,也就是(160,120)位 置的資料來當作驗證的參考點。經手算之結果,如表格 3-3,發現第 23 個畫面時,
發生了不符合的狀況,也就是參考點被偵測為前景,接下來第 268、1014 個畫面,
參考點不再被偵測為前景(𝑊𝑡,𝑛 ≥ 0.24);第 365、574 及 1094 個畫面,參考點的 背景顏色切換。檢視 GMM 程式輸出的結果,如表格 3-4,在第 23 個畫面參考點 也被偵測為前景,以及接下來的幾個檢查點,其結果皆與手算一致。之後更進一 步比對手算與 GMM 程式輸出值的精確度,計算兩者之平均數、變異數以及加權 比重的差值,如表格 3-5,其整體的差值約在均不超過 10-8,所以經過此兩步驟 的驗證後,可以確認實作的 GMM 程式是正確的。
19 570 107 149 192 0.492761459 0.477154042 0.030084498 571 103 148 190 0.498037292 0.472191121 0.029771587 572 107 147 188 0.503331530 0.467210885 0.029457584 573 101 148 188 0.508641715 0.46221565 0.029142635 574 104 147 185 0.513965430 0.457207686 0.028826883 1012 76 121 195 0.749767094 0.010601076 0.239631830 1013 94 143 217 0.750209682 0.010017033 0.239773285 1014 81 143 212 0.749376116 0.010005903 0.240617980 1015 81 138 202 0.748364458 0.009992395 0.241643147 1016 74 122 200 0.747177178 0.009976542 0.242846280 1092 70 130 199 0.488747442 0.012730337 0.498522221 1093 65 118 195 0.487521133 0.012698396 0.499780471 1094 66 123 188 0.486188253 0.012663679 0.501148070 1095 61 107 185 0.484750762 0.012626236 0.502623002 1252 79 125 202 0.322014451 0.014353538 0.663632011 1253 100 150 221 0.323418870 0.010054786 0.666526345
20
21
表格 3-5 實際影像測試之手算結果與 GMM 程式輸出結果的差值表
Mean[0] R -1.578833E-08 Mean[0] G -6.007646E-09 Mean[0] B 1.572694E-08 Mean[1] R -2.887726E-09 Mean[1] G -1.395733E-08 Mean[1] B -1.099158E-08 Mean[2] R 3.392723E-10 Mean[2] G -3.559222E-09 Mean[2] B 7.010194E-09
Var[0] R -5.01746E-09 Var[0] G -1.77466E-08 Var[0] B -1.20599E-08 Var[1] R 9.80232E-09 Var[1] G -8.57381E-09 Var[1] B 1.03828E-08 Var[2] R 2.64479E-10 Var[2] G 4.72581E-09 Var[2] B 9.15916E-12 Weight[0] 3.7221E-10 Weight[1] 1.05768E-09 Weight[2] 9.97634E-10 Average -2.18577E-09
22