原理分析與設計
圖1 系統架構圖
為達最佳鏡頭之追蹤,我們建立了一套系統分別依物體移動情況作最適當的判斷,圖1為整套系統架構圖。
當攝影機靜止時,我們使用VISCA所支援的指令---alarm,使攝影機能針對某特定區域作監視,當區域中有任何變動時,即送出High-Level訊號,透過此功能,能判別物體出現及移動情形。當目標物移動條件成立時,會進入控制攝影機移動的狀態,也是本專題重點所在。透過H.264編碼所獲得的MV資訊,計算出整張畫面的Global motion,並找出物體真正移動的方向,進而控制攝影機鏡頭左右平移或是縮放,使物體維持在畫面中最佳位置。最後我們也將攝影機控制畫面實現於遠端網路之上,透過網路即時傳輸監控影像,以便管理者能掌控任何情形。
之前我們介紹了整套系統的架構圖,在此我們將對Camera Control部分作詳細介紹。參考之前的作法[12][13],我們引用global motion estimation、block type weighting等部份想法,並加以修改整合成合適於我們的系統環境,我們將控制攝影機移動的決策流程圖顯示於圖2。
圖2 控制攝影機移動之決策流程圖
首先,我們根據H.264所提供的Partition Mode及MV資訊來估測整張畫面的Global motion,並藉由減去Global motion來得到物體真正移動的MV。接著根據整張畫面中不同的Partition mode,分別給予每個MVDg不同的權重,以強調目標物所在區域。同時,為了移除攝影機判斷時所產生的畫面不連續,我們使用temporal filter達成此效果。在判斷目標物所在後,我們可分別算出目標物的重心用來控制攝影機鏡頭平移,以及根據畫面中目標物的大小來控制鏡頭縮放,以達最佳鏡頭畫面。
1. Global motion estimation and subtraction
本研究設計出一套完整的系統,使攝影機能自動且即時的偵測到監視畫面中的動態影像,並達到最佳的攝影位置與角度,亦即最佳鏡頭。然而在作自動追蹤時,同時會產生Background Change的問題。當鏡頭隨著人移動時,後方背景也會往反方向移動,因此當鏡頭偵測到背景往反方向移動的移動向量(Motion Vector)時,也會跟著往與目前移動方向相反的方向跟蹤,但此時跟蹤對象已不再是人,而是背景,因此如何解決此種問題,值得深入研究。
當攝影機跟蹤物體時,因為鏡頭移動,背景相對會產生全域移動(Global Motion),在此使用H.264編碼所提供的MV資訊以及Partition mode來估測出Global motion。首先,我們可以利用目前畫面的移動向量,藉由(1-1)式得出前一張畫面物體原本的位置。
(1-1)
(1-1)式中,xt及yt為目前畫面已知的移動向量,xt-1及yt-1則代表前一張畫面中相對應的位置。至於p1~p6這六個參數,可以由(1-2)式獲得。
(1-2)
(1-2)式中,代表在時間t的畫面中之的k個移動向量,而則是與移動向量之總和。
為得到更理想的Global Motion,需反覆作以下演算流程:
(1) 選用畫面中較大的Partition之MV找出Global Motion的六個參數。
(2) 計算MVs和global motion 差值,MVDg之標準差。
(3) 在下一次估測中將MVDg大於1.5倍標準差的MV移除。
(4) 重複上述步驟3次以得到global motion model及最終的MVDg。
利用最小平方法計算出Global motion後的六個參數後,當攝影機移動時,我們可將畫面中MVs扣除背景的Global motion,以判斷出目標物真正移動的範圍,也就是畫面之前景。
2. MVDg weighting
根據H.264所提供的編碼資訊不難看出,在整張畫面中,背景通常有較大的block size,而前景也就是目標物的block size相對較小。在此一步驟,我們針對每一個MVDg,根據block size的大小,分別給予不同的權重,其數學公式如下:
(2-1)
其中MVDg為前一步驟中global motion與MVs的差值,Wn為partition mode n的權重係數,MVDw則為加權後的結果。透過加權步驟,大的MB給予小的權重,小的MB給予大的權重,可強調整張畫面的前景分割,有利於最佳鏡頭之判斷。圖3顯示了對同一張畫面,會有不同的block size,可看出前景通常有較小的block size。
圖3 不同的Partition mode
3. Temporal refinement
當攝影機在對畫面作判斷時,需要反應時間,因此會造成畫面不連續的現象,且對於突然出現的雜訊,也會影響攝影機判斷的效果,temporal refinement可幫助我們移除這些雜訊及克服時間上畫面的不連續。透過前一張畫面與目前畫面的MV值作平均,可使整張畫面能流暢的呈現。(3-1)式為Temporal refinement之數學式:
(3-1)
其中MVDr,t為目前畫面作Temporal refinement後的結果,MVDr,t-1為前一張畫面作Temporal refinement後的結果。 圖3可看作Temporal refinement後的結果,畫面中的前景分割效果明顯變好。
圖4-a.未做分割前 圖4-b.未作Temporal refinement 圖4-c.作Temporal refinement
圖4 Temporal refinement效果之比較
4. Threshold
因MV值會隨著與原點的距離增加而變大,因此畫面邊緣會使Global motion估測產生誤差,需取Threshold克服。
實驗中所使用的Threshold如下:
其中,Th(x, y) :位置(x,y)之threshold。 xmax 、 ymax :x、y之最大值。 MVDr,mean : MVDr (temporal refinement之結果)之平均值。 C: 常數,實驗中取C=1.5。
之後將每點MVD與Theshold比較,得出適當前景。
5. Decision
透過Global Motion估測、Weighting及作Temporal refinement,得出整張畫面的前景分割,接著我們利用這些資訊,來判斷畫面中目標物的位置及大小,並控制攝影機的鏡頭作平移及縮放。以下將分別討論平移及縮放的判斷流程。
(1) Pan/Tilt
當物體左右移動時,畫面中的重心會隨著物體位置的不同而改變,因此我們事先算出畫面的重心位置,並依據位置的大小,來控制鏡頭平移的方向。在做完Temporal refinement之後,我們已順利得出整張畫面的前景所在,也得出整張畫面的MVD值(亦即MVDr),由於要做平移,因此需先算出水平方向及垂直方向的重心位置(5-2式)(5-3式),以及整張畫面的MVD值加總w(5-1式),以代表物體的移動程度,當w大於W1時,會將前景視為有移動,並重新計算畫面中的重心位置;反之,當物體被視為靜止時,則將重心維持在固定位置。而整張畫面的前景大小如(5-4)式所示。
(5-1)(5-2)
(5-3)(5-4)
在算出畫面中的重心位置及前景大小後,我們可利用此資訊來控制攝影機之鏡頭自動追蹤物體移動,圖6為鏡頭判斷之示意圖。我們將示意圖分為水平、垂直以及縮放等三部分,其判斷規則如下:
圖6 鏡頭移動示意圖
A. 水平方向
a. x_cor < X1: 鏡頭左移
b. X1 < x_cor < X2: 鏡頭靜止
c. X2 < x_cor: 鏡頭右移
B. 垂直方向
a. y_cor < Y1: 鏡頭下移
b. Y1 < y_cor < Y2: 鏡頭靜止
c. Y2< y_cor: 鏡頭上移
C.鏡頭縮放
a. W<W2:即為黃色區塊,未達最佳畫面,鏡頭Zoom in。
b. W2<W<W1:即為紫色區塊,此範圍中達最佳畫面,鏡頭靜止。
c. W>W1:即為空白區塊,此時超出最佳畫面,鏡頭Zoom out。