第四章 系統各模組演算法探討
4.3 運動向量補償值估計
本文提出一個 FPS 型補償值估計演算法,分開處理輸入的二維 GMV 資 訊(水平向 x 值和垂直向 y 值)進行影像穩定。本演算法是預測型 DIS,是使用目 前時間以前鄰近時間區段內的 GMV 資訊估算 Ego-motion 的速度,以延遲一張 Frame 的方式進行影像補償值計算。我們的補償值估計演算法介紹可分成三大部 分:第一,重疊區段(Overlapped section)的結構,我們設定時間軸上所記錄的連 續五個 GMV 當作一個區段(Section),在 t 時刻計算補償值時會參考一定個數且時 間所占 GMV 資訊彼此部分重疊的 Section,我們稱為重疊區段結構。第二,代表 點與區段內的資訊取得,我們會以 Section 為單位,由各個 Section 所含的 GMV 資訊取得數個代表點,並利用代表點計算出該 Section 所隱含的資訊。第三,自 我運動估計演算法(Ego-motion vector estimation),我們運用 Section 算出的資訊,
搭配適當的權重設計,線性估測出該時刻 EMV。EMV 最後將和原輸入決定出補 償值運動向量(CMV)並完成影像穩定。另外,演算法本身因為使用移動平均窗 的觀念而有延遲現象出現,我們採取以延遲一張 Frame 的方式降低延遲影響。
本預期運動向量估計演算法的參考輸入值,是由重疊區段內每個區段當下 時刻的 GMV 資訊決定。以下我們逐步介紹重疊區段的設計結構、代表點與區段 內的資訊取得、自我運動估計演算法。
4.3.1 全域運動向量之重疊區段結構
首先,將介紹本文運用 GMV 資訊的方式。本文運用一個重疊區段的結構,
該結構因延遲特性考量,且為了限制演算法僅需延遲一張 Frame,在 30 fps 切割 比下,我們設定區段(Section)暫存自目前時間點以前五張 Frame 之內的 GMV 資 訊,如圖[圖 4-4]所示,第 t 時刻的區段儲存著 GMV(t)以前五個時間點(GMV(t-4) 至 GMV(t))的資訊。
37
GMV (t-4)
Filter Range of Section GMV
(t-3)
GMV (t-2)
GMV (t-1)
GMV (t) GMV
Time When Time is t
圖4-4 本文之移動平均式區段結構
區段結構公式:
t t t t t
Tt
GMV GMV GMV GMV GMV
G
4, 3, 2, 1………
(4-18)
f重疊區段結構設計
固定大小的區段暫存器存放全域運動向量(GMV)資訊,每當新 Frame 資訊隨 感測器讀入都會更新區段暫存器內的 GMV 資訊,並為該時間點計算該時刻擁有 的特徵向量(Feature vector)資訊並將其存入重疊區段暫存器(Overlapped section register, OSR)。OSR 儲存著固定同於區段數目的特徵向量,該特徵向量擁有的資 訊為(1)區段包含的 GMV 資訊(GMV Data)、(2)區段預期速度(Section panning velocity, SPV)、(3)區段代表性偏移(Section representative offset, SRO)、(4)該時刻 的高斯函數(Gaussian)值和(5)區段不穩定性(Section instability)。
OSR 結構演算法公式:
t V t V t
Tt
X X X
R
1, 2, , ... (4-19) f
t t t t t
Tt
G S P L I
X
, , ,
...(4-20)
f38
t t t t t
Tt
GMV GMV GMV GMV GMV
G
4,
3,
2,
1...
(4-21)
fR
t為 t 時刻的 OSR 內資訊,V 為 OSR 最多納容納的 Section 個數,在我們的演算 法設定 V = 10,
X
t為 t 時刻的各個 Section 所擁有的全部資訊,
G
t為 t 時刻 Section 所包含的 GMV 資訊,
S
t為該 Section 所代表的瞬時速度值,P
t為為該 Section 的 代表性偏移,L
t為 t 時刻該 Section 的高斯函數值,I
t為 Section 的不穩定值。根 據移動平均移動窗的特性,OSR 隨著時間移動更新各個 Section 內的資訊。每 Section 的特徵向量固定儲存著五種資訊,而每次演算法決定補償值運動 向量(CMV)時,理應參考鄰近 Section 的資訊以實現 DIS。其中,決定每個時間 點 CMV 要參考 Feature vector 的總數和影響比重。此兩者分別由 Section 中高斯 函數值和不穩定性資訊來決定。此外,OSR 的範圍大小將決定計算當下補償值時 最多要參考多少 Section。
在決定當下的補償值時, Section 算得的 SPV 和 SRO 提供估計出自我運動的 資訊,而高斯函數值和不穩定性數值影響 Section 在估計自我運動時的參考比重。
高斯函數值,使得演算法決定 CMV 時只仰賴當下時間點之前一些時段的 Section 資訊並遺忘更早之前的舊資訊,而不穩定性數值使得在決定 CMV 的判斷式中,
越不穩定的 Section 其資訊會越不受重視,越穩定的 Section 則被提升參考比重。
本文所提出的方法利用這兩項影響參數,模擬出人類對位置─時間座標圖中,由 抖動的 GMV 位置曲線要判斷自我運動時可能參照的判斷依據。
39
(1) GMV Data
(2) Section panning velocity (3) Section representative offset (4) Gaussian value
(5) Instability
Section m-5 Section m-2
…
Section 0Source : GMV(t-m+2)~
GMV(t-m+ 6)
Source : GMV(t-4) ~
GMV(t)
…
Source : GMV(t-m+1)~
GMV(t-m+5)
圖4-5 本文之重疊區段結構設計
設計 OSR 內 Section 的長度主要考量的面向包含所濾抖動的週期範圍、前期 放棄做 DIS 的 Frame 數和延遲現象(附錄 A)。由於特徵向量的 SPV 和 SRO 資訊 是依據 Section 固定 Frame 大小所容納的 GMV 資訊進行計算而來,且抖動成分的 濾除需要講究該補償值估計演算法將何種週期長度之下的起伏視為抖動,則 DIS 的行為近似於對充斥抖動成分的訊號進行低通濾波動作,所以 Section 的範圍意 義同等於微幅濾波範圍(Filter Range, FR)。另外,Section 的長度設計需考量前期 放棄 DIS 的 Frame 數。當該時間點未能填滿一個 Section 大小的 GMV 資訊,則 演算法無法進行 CMV 計算,讓前期 Frame 無法 DIS。因此,當 Section 範圍設定 過小,Section 微幅濾波功能被限制在一個很小的範圍;Section 設定過大,使得 DIS 前期需要放棄不做穩定的 Frame 個數上升且 OSR 的長度因為要包含住足夠個 數的 Section 被迫亦須提升更長,使得記憶量的耗費提升。
本文演算法中估計自我運動的輸入參數是運用重疊區段結構內 Section 中 GMV 位置的趨勢資訊,這樣的優勢在於除了將不穩定的 GMV 值域轉換至另一 較穩定維度,亦降低了極端值 GMV 的造成的影響。
40
4.3.2 補償值估計演算法結構
我們所提出的補償值估計流程分成四個步驟,第一步,DIS 系統會先隨時間 讀取新的 GMV 資訊來放入 Section 暫存器,並判斷目前 Section 內 GMV 資訊量 有否大於等於 Section Range(SR)的五張 Frame。若否,表示暫存器內資訊不滿足 創造新 Section 的條件,則等待下次 GMV 資訊繼續填入 OSR 暫存器;若有大於 等於 5,表示 GMV 資訊足以填滿一個 Section,則計算決定該時刻 CMV 要參考 的 Section 個數。第二步,由演算法獲得 Section 範圍內 GMV 位置所隱含的資 訊,包含區段預期速度(Section panning velocity, SPV)、區段代表性偏移(Section representative offset, SRO)和該 Section 的不穩定性(Instability)。第三步,為了衰減 降低過去 Section 的重要性而更新與之相依的權重值(Weight)。最後,由該時刻的 OSR 所有 Section 資訊計算決定出前一時刻應輸出的 CMV 值。
Capture GMV(t) Input
Determine
the num of section inOSR
Compute SPV, SRO
and instability
Update
weightDetermine
CMV(t - 1)
Last
frame?
Output
No
Yes
Yes
No
Data in
section
>= SR
?
圖4-6 本文之補償值運動向量估計演算法
4.3.3 區段個數估計
由於我們最終判斷 CMV 的方式是用該時刻 OSR 內所有 Section 特徵資訊,
本階段的工作是要計算每個時刻所要考量的 Section 個數。決定每個時刻所要考 量的最多 Section 個數的演算法公式如下所示:
41
我們決定 DIS 開始各時期 Overlapped section register (OSR)內存在 Section 個 數的演算流程如下[圖 4-7]:首先,當 DIS 開始時初始化 Section 個數為零,接著 依時間讀入 GMV 資訊。
其次,第一個判斷式會判斷當下有否填滿 Section 暫存器,若無,會繼續等 待下次讀入 GMV,若滿足則進入第二個判斷式。第二個判斷讀入的 Frame 的編 號是否大於等於五(Section range 為五張 Frame),若有,則表示需要 FIFO 更新 Section register,若無則不進行針對 Section register 的 FIFO 更新。第三個判斷 式,確認上回的特徵向量個數是否不等於 OSR 範圍,若是,則表示上回的 OSR 內的 Section 數已達上限,故本回需進行對 OSR 內的 Section 資訊進行 FIFO 更 新,並直接套用上個迴圈的 Section 個數作為本次個數結果;若不是,則本回的 Section 個數比上個迴圈的 Section 多增加 1 個。
42
FIFO update in section
reg section
reg Begin
End
Section Num = Last section num + 1 Section
num = last section
num
section range
?
Frame num <
section range
?
Last section number != OSR 在位置和時間的二維平面中進行代表區段預期速度(Section panning velocity, SPV) 和區段代表性偏移(Section representative offset, SRO)的計算。
上述二者將代表 Section 資訊的速度和位置趨勢。計算這兩項資訊之前,會 需要先進行取代表點的步驟,接著利用包絡線(Envelope line)對 GMV 資訊進行屬 於上點(Upper point)或下點(Lower point)的分類,再依不同但相鄰的兩點取平均 值的方法來取得代表此時刻 Section 內 GMV 趨勢的點集合,我們稱之為「Section 之 GMV 代表點集合」(Representative point set of GMVs in section),以下統一簡稱 代表點(Representative point, RP)。先進行取代表點步驟的原因,是因為本研究演 算法設定代表點的意涵在於能組合出該 Section 暫存器中 GMV 位置資訊的趨勢和 平均位置,也就是 SPV 和 SRO 的組成元素。代表點的數量可能是零至四(=
Section Range -1 ) 不 等 , 視 Section 的 GMV 資 訊 而 定 , 但 我 們 的 演 算 法 (More-than-one-RP algorithm)會將代表點的數量控制在大於或等於二的情況以利
43
斜率趨 勢的 取得 。 取完代 表點 後,本 研究將 用一 個演算 法算出 該時 刻下該 Section 代表預期速度的 SPV 和代表位置的 SRO 資訊。以下筆者將逐步介紹代表 點的取得演算法、區段預期速度和預期位置演算法。
Representative point algorithm RP
Compute
Average point
average location Acceleration
and deceleration
point sets GMVs in
Window
Right average location
SPV and SRO algorithm
More-than-one-RP algorithm Representative
Value
圖4-8 區段預期速度和代表性偏移演算法方塊圖
步驟 1:代表點演算法設計
首先如圖[圖 4-9]所示,本文在位置和時間的二維平面中將 Section register 中五張 Frame 的 GMV 位置資訊連線(Connection line of GMVs),再對該連 線取上下包絡線(Upper and lower envelope)並將 GMV 資訊分兩種類,分別為:屬 於上包絡線的上點(Upper point),或稱減速點(Deceleration point);反之,屬於下 包絡線的下點(Lower point),或稱加速點(Acceleration point);接著,將所有上點 與其相鄰的下點取兩者的平均位置,其在位置─時間二維座標系中即為本文所 認定的代表點(representative point)。以下為了介紹方便,將簡稱「Section 中的五 個 GMV 位置資訊取樣點」為「取樣點」。
首先,為避免上下包絡線邊界取捨問題和計算複雜度,本文的設計有三項要 點:第一,Section 暫存器首項和末項在上下包絡線歸屬是參考各自鄰近的上點 或是下點來決定其性質。意即在位置資訊上,若距離首項或末項取樣點最鄰近 擁有非零代表值的取樣點為上點,則該取樣點(首項或末項)歸屬於下點(Lower point);反之,若首或末項取樣點最鄰近擁有非零代表值的取樣點為下點,則該 點歸屬於上點(Upper point)。第二,因為演算法僅用不同類別(Upper point 和
44
Lower point)的兩點取平均來獲得代表點,所以我們的上下包絡線不需要也不用 以傳統三次曲線近似法(Cubic spline),避免了包絡線的邊界問題。第三,假如首 項和末項取樣點之間都沒有受到分類的上點或下點存在,意即代表點算出來只 有一點以下,此時的情況為 Section 內 GMV 資訊連線相當接近水平或斜直線,我 們的對應方法是直接將首項和末項取樣點兩點當作代表點。
Lower point)的兩點取平均來獲得代表點,所以我們的上下包絡線不需要也不用 以傳統三次曲線近似法(Cubic spline),避免了包絡線的邊界問題。第三,假如首 項和末項取樣點之間都沒有受到分類的上點或下點存在,意即代表點算出來只 有一點以下,此時的情況為 Section 內 GMV 資訊連線相當接近水平或斜直線,我 們的對應方法是直接將首項和末項取樣點兩點當作代表點。