• 沒有找到結果。

1.3 全文架構

本論文共分為五章,以下為各章的內容概述:

【第一章】緒論

說明本論文的研究背景、研究動機、研究目的和全文的架構。

【第二章】過去的相關研究

介紹 Directional Asymmetric Search 及 Search Pattern Switching 兩種方法。

【第三章】新的演算法

介紹我們所提出的新演算法以及演算法的流程。

【第四章】實驗結果以及數據探討

呈現本論文所提出的成果數據以及數據討論。

【第五章】結論

對本論文做最後的總結。

8

第二章 過去的相關研究

本章將討論本論文所使用到的基礎背景,將介紹兩種 BMA (Block-Matching

Algorithm),Directional Asymmetric Search 以及 Search Pattern Switching,讓大家 能對後面的實驗有些瞭解。

2.1 Directional Asymmetric Search

Center-biased 這個特性,已經廣泛的被使用在許多研究中了 [8] ,這個特 性是說,絕大部分的 Motion Vector 都會很靠近 Zero Motion (見表 2.1),所以好的 搜尋策略就是從 Search Window 中心開始搜尋。

另外,在欲搜尋最小點(Local Minimum 或 Global Minimum)的周圍,大部分 都會呈現嚴格遞減的狀況,也就是說,越接近最小點時,Error 會越小。於是就 利用這個特性,以最大點往最小點的方向 (見圖 2.1)作為 DAS (Directional

Asymmetric Search)的方向,之後會在這個方向上選出下次欲搜尋的 Pattern。

9

表 2.1 Motion Vector 之分佈

圖 2.1 圖中灰色的點為 Error 最大點,白色

點為最小點,箭頭的方向即為 DAS 的方向。

10

DAS 由 13 種 Pattern 所組成,其中 12 種是看方向性來決定的,剩下的一種 則是最基礎的起始 Pattern。一開始先看在 Search Window 中心,由五個點所組成 的十字架型的 Pattern,如果 Minimum Block Distortion(MBD)發生在十字型 Pattern 的中央的話,則停止搜尋;如果不是的話,則以 Pattern 中最大 Block Distortion 的點往最小 Block Distortion 之點為方向,加入新的 Pattern (方向性與 Pattern 的 關連請見圖 2.2),再以最小 Block Distortion 的點跟新加入的 Pattern 做比較,如 果原先最小 Block Distortion 的點依然為最小的點,則搜尋終止;否則將從最小

Block Distortion 的點及新加入的 Pattern 中,挑出最大及最小 Block Distortion 的 點,決定出新的 DAS 之方向,繼續做比較,直到 Minimum Block Distortion 發生 在原來最小 Block Distortion 之點上。

11

圖 2.2 13 種 DAS 的 Pattern(白色的點代表第一次搜尋的點,紅色點代表

第二次搜尋所加的點,箭頭即為 DAS 的方向)

最後我們整理一下整個 DAS 搜尋的步驟:

12

1) 在 Search Window 的中央,建立起始的 Pattern(如圖 2.2 中的白色十字型 Pattern)。

2) 計算十字型 Pattern 的五個點之 Block Distortion,若 Minimum Block Distortion 發生在 Pattern 中央的話,則 Motion Vector 設為 0(Zero Motion Vector);否則 進行步驟三。

3) 將步驟二 Block Distortion 最小的點設為中心點,並以 Block Distortion 最大點 往最小點的方向,做為 DAS 之方向,來選擇應加入的 Pattern。

4) 根據 DAS 的方向,加入對應的點之後(可見圖 2.2 紅色的點),計算新加入的 三個點,在與之前 Block Distortion 最小之點做比較,若前一步之 Block

Distortion 最小點仍為 Minimum Block Distortion,則搜尋終止,並將 Minimum Block Distortion 之點設為 Motion Vector;否則便重複步驟三及步驟四。

13

此外,根據許多研究我們知道,許多 Stationary Blocks 或 Quasi-Stationary

Blocks,它們的 Block Distortion 是很低的。所以當找到一個擁有非常小的 Block Distortion 的 Block 時,其實可以不用再去搜尋其他的 Block 了,因為即使找到更 小的 Block Distortion,也不會有太顯著的改善,反而會消耗掉許多時間。所以這

裡設了一個參數 Tbest為門檻值,在每次計算 Block Distortion 的時候,只要小於

Tbest這個門檻值,就停止搜尋,並且將小於 Tbest的這點設為 Motion Vector,如 此便可以加快搜尋的速度。我們在這裡會依 Block Size 的不同而有變化,在 16 ×

16 的 Block 下,Tbest設為 256。

14

2.2 Search Pattern Switching Algorithm

根據研究,越接近 Global Minimum Block Distortion 的時候,此時 Block

Distortion 會產生嚴格遞減的狀況,也就是說,越接近 Global Minimum 時,Block Distortion 減少的狀況就會越快,圖 2.3 可以解說這種狀況。越接近 Global Minimum,減少的速率就越快(可見圖 2.3 右邊的斜線,斜率較陡);比較遠離 Global Minimum 的地方,減少的速度就較緩慢(斜率較為平緩)。

由上述可知,利用 Search Window 中央的中心點,計算它與周圍幾個點的 差異,作為斜率,可以來推測 Global Minimum 的遠近。第一步先找出 Search

Window 的中心點,並計算出它的 Block Distortion,先將這個點的 Block Distortion 命名為 DA,再來計算它周圍的四個點(上下左右的四個點),並選出其中 Block

Distortion 的最小點,將其 Distortion 值命名為 DB,於是,可以利用(DB-DA),去 計算斜率;之後再以斜率的陡峭或是平緩,來判斷 Global Minimum 離目前計算 的點之遠近。

15

圖 2.3 靠近 Global Minimum 時,Block Distortion 減少的狀況

但(DB-DA)的大小會跟著影片的不同而有所變化;所以(DB-DA)無法取出一 個定值來給予參考,判斷此時斜率是大或者是小。例如:在 Football 這個範例影

片中,DB的值為 10000、DA的值為 9000(DB-DA)的值為 1000;而在 Foreman 這 段影片中,DB的值為 1800、DA的值為 800,(DB-DA)的值也為 1000。但可以看 得出在 Football 中,Block Distortion 減少的斜率是很平緩的,而在 Foreman 中,

則是很陡峭的。所以用(DB-DA)這個數值來判斷並不是一個好的方法。

16

由於 DB與 DA之間的差,是與影片有關的,所以要定義一個新變數 EDR

(Error Descent Rate),它是利用 DB與 DA之間的比例,來計算斜率。這樣 EDR 便可以不受到不同影片的影響。定義 EDR = DB/DA,例如在鄰近 Search Window 中心的四個點中,選出其中 Block Distortion 最小之點,它的 Distortion 即為 DB

=800,再計算出 Search Window 中心點的 Block Distortion,DA =1000,那麼這裡 的 EDR = 800/1000 = 0.8。而根據實驗,當 EDR > 0.9 時,便可以推測此時 Global

Minimum 是在較遠處,反之,Global Minimum 是在 Search Window 中心點附近。

Search Pattern Switching (SPS) Algorithm 便利用 EDR 來將 MV 分類,判斷 Global Minimum 的遠近後,再去決定用何種方法來搜尋。當 EDR ≧ 1 時,便是 鄰近 Search Window 中心點的四個點的 Block Distortion 皆大於中心點,根據之前 的研究,這種狀況下 Global Minimum 很可能在中心點鄰近的部分,這時候會使 用 Zero Motion Vector,這樣可以使得演算法可以在編碼的品質跟速度上都取得 平衡。當 EDR < 1 時,若 EDR 大於門檻值 0.9,便認為 Global Minimum 不在 Search

Window 中心點附近,所以這時便會使用範圍較大的 Block Matching Algorithm (BMA),例如:3SS(Three-Step Search);若 EDR < 1,但 EDR 小於等於門檻值 0.9,

我們便認為 Global Minimum 不會離 Search Window 中心太遠,則便會選用範圍

17

較小的 BMA,例如: BBGDS(Block-Based Gradient Descent Search)。

SPS Algorithm 也可以使用其他 Pattern 的 BMA,例如範圍較大的演算法,可以 用 4SS(Four-Step Search)來取代 3SS;範圍較小的演算法,可以用 DS (Diamond

Search)來替換 BBGDS;所以 SPS Algorithm 是可以結合其他不同演算法的,我 們就要利用這個特性去結合之前提過的 DAS(Directional Asymmetric Search)。

18

上一章節所提到的 DAS(Directional Asymmetric Search),雖然是一種很快速 的 Block Matching Algorithm,但由於它是單方向性,且終止條件容易滿足,所以 雖然 DAS 搜尋時間快速,可是它在 Bitrates 跟 PSNR 的表現上,就會稍微差一 點,而且因為終止條件容易滿足,很容易陷入 Local Minimum 的狀況;也就是說,

BMA 可能只是找到區域的最小值(Local Minimum),而不是 Search Window 內的 最小值(Global Minimum)。

所以為了解決這種狀況。我們決定加入 SPS(Search Pattern Switching)

Algorithm 的概念進來,利用它裡面的 EDR(Error Descent Rate),來判斷 Global Minimum 的遠近,再來使用 DAS。因為如果 DAS 的起始位置離 Global Minimum

19

的距離很遠的話,那麼很有可能在搜尋的途中,就會因為陷入 Local Minimum 的 狀況,而導致搜尋終止,所以 DAS 的起始點不宜離 Local Minimum 太遠,而使 用 EDR 便可以解決這個狀況。

因此在我們的演算法中,第一步便先在 Search Window 的中心,設一個小 型 Diamond Search 的 Pattern(圖 2.2 之起始 Pattern),並計算這五個點的 Block

Distortion,若中心點的 Block Distortion 比周圍的四個點的還小,就會使用 Zero Motion Vector,用以加速演算法的進行。若鄰近的四個點中,有存在一點之 Block Distortion 比中心點的 Distortion 還小,則開始計算 Error Descent Rate,將鄰近四 點中,最小點之 Distortion 設為 DB,將中心點之 Distortion 設為 DA,令 EDR =

DB/DA。計算出 EDR 之後,再看看 EDR 有沒有超過門檻值(0.9),若沒有超過門 檻值的話,就可以直接在中心點開始做 DAS(之前做小型 Diamond Search 時,已 可將最大及最小點記錄起來,用以決定 DAS 之方向),但若 EDR 超過門檻值(0.9),

則代表 Global Minimum 是在較遠處,此時我們就要決定,DAS 要從哪裡開始執 行起。

於是根據不同的測試影片,去觀察當 EDR 超過門檻值(0.9)時,DAS 的起點 應從哪裡開始,才會有較好的效果。根據實驗,當 EDR 超過門檻值(0.9)時,選

20

擇的 Pattern 會如同圖 3.1。將圖 3.1 上的八個點分別計算完之後,取出其中 Block

Distortion 最小的點,與上一步所找出之最小 Block Distortion 之點做比較,若上 一步所找之點較小,則以上一步所找的點,將其設為 DAS 的起始位置;反之,

則將 Pattern 上最小 Block Distortion 之點設為下一次 DAS 的起始位置。

找到下一次 DAS 的起始位置後,一樣要先做小型的 DS Pattern,看中心點 位置是否最小,如果是就以目前中心點位置為 Motion Vector;若最小 Distortion 位置不為中心點,則找出最大及最小 Distortion 位置,決定 DAS 方向,重複 DAS,

直到滿足終止條件為止。但在最後,在利用 DAS 找出的最小 Distortion 之點後,

再搜尋周圍的八個點,類似像 BBGDS 那樣,以確保剛好因為 DAS 特性而剛好 漏掉搜尋的點。

21

圖 3.1 當 EDR 超過門檻值時,所要搜尋的 Pattern。

22

23

若點 2 也大於上一步所求之最小點,則依序計算點 3,此時便如同 DAS 一 樣,在四個點中找出最大最小位置,求其方向性。重複上述的步驟,直到最小點 位置不再變化為止。

圖 3.2 新的 Pattern 加入順序

因為若點 1 小於上一步之最小點,則方向性依然為上一步驟之 DAS 的方向,

可以符合我們一般的認知。若點 1 大於上一步之最小點,則有三種狀況 一)點 2 比點 1 大 二)點 2 比上一步之最小點小 三)點 2 介於兩者之間;而只要點 2 大於 上一步之最小點,便一定會計算點 3,這樣便跟 DAS 的 Pattern 一樣了。而點 2 可能比點 3 小,所以偏差的機率只有六分之一。

24

但在點 1 較上一步最小點還大的狀況下,我們無法去評估,到底先做點 2 好還是點 3 好,所以我們選擇,在發現點 1 大於上一 步最小點後,便做 DAS 的

Pattern,來較完整的估測方向性。

為了解決 MV 太大,DAS 會跑太久,或陷入到 Local Minimum 的狀況,我 們決定結合 SPS(Search Pattern Switching)的概念,在起始的小型 Diamond Pattern 做完之後,令中心點之 Distortion 為 DA,周圍四點最小點的 Distortion 設為 DB, 如果周圍四點皆比中心點之 Distortion 大的話,則最後傳出 Zero Vector;否則計 算(DB / DA),用以判斷我們演算法的起始位置。 比起始 Pattern 最小點小,則加入該方向性的四個點的 Pattern,若三點皆比起始

25

Pattern 之點大,則還是從起始 Pattern 展開演算法;否則,計算遠方新加入四點

Pattern 之點大,則還是從起始 Pattern 展開演算法;否則,計算遠方新加入四點

相關文件