專利名稱:運動搜索中宏塊劃分模式的選擇方法
技術領域:
本發明屬于視頻編碼技術,具體涉及一種H. 264的幀間分數級運動搜索方法。
技術背景H.264/AVC是由聯合視頻工作組(Joint Video Team, JVT)制定的。該標準為廣播、存儲 設備、對話服務以及無線網絡等方面的視頻技術提供了技術支持,該標準和以往的標準相比 ,例如H.263、 H.263+、 H. 263++#MPEG-4,在視頻編碼效率上取得了很大的提高,在相同 視頻質量下,H. 264不僅比H. 263和MPEG-4節約了50。/。的碼率,而且對網絡傳輸具有更好的支 持功能。& 264〃¥(]采用了許多新的技術,包括多模式的幀內預測、FMO(靈活模塊次序)、 1/4像素精度的運動估計和運動補償、多參考幀技術、環路濾波技術等。這些新的技術不僅 使得H. 264具有了更好的視頻壓縮性能,而且讓視頻標準能更廣泛地、更靈活地應用于不同 的網絡環境。視頻源由視頻圖像序列構成,視頻序列被劃分為不同的GOP (視頻圖像組),在視頻圖 像組里,可以由三種不同的視頻圖像幀構成,分別為I幀、P幀和B幀。I幀為幀內預測幀,其 視頻圖像通過本幀內的圖像信息進行壓縮編碼,這種模式的編碼效率往往不高。P幀為幀間 預測幀,其采用了幀間運動補償技術,即通過前面已編碼幀的信息來預測當前幀。B幀為雙 向幀間預測幀,它可以利用前面已編碼幀或者后續幀,或者同時使用前面和后續重建幀的信 息來進行幀間預測。P幀和B幀相比I幀,只需要很少的編碼比特來存儲圖像信息,這些信息 主要是幀間預測的殘差。幀間預測通過運動補償預測對視頻源進行壓縮編碼。當前幀中的宏塊通過在參考幀中尋 找匹配的宏塊進行預測,其當前幀中的宏塊位置與參考幀中的宏塊位置差為運動向量。幀間 預測的關鍵部分就在于如何尋找匹配塊,即運動搜索。運動搜索精確度影響著視頻壓縮的效 率和重建的質量,在H. 264中采用了l/4像素精度的運動搜索方法和多種宏塊劃分模式進行運 動搜索。而在H.264中需要遍歷宏塊的每種劃分模式,這樣需要大量的計算量。H.264之所以 進行不同宏塊劃分模式的運動搜索,目的是為了盡可能減少運動搜索的殘差與編碼運動向量 比特數。宏塊劃分成的塊越小,運動搜索能夠更加精確地匹配到參考幀中的圖像,其幀間預 測的殘差就可以越少。但是宏塊劃分成的塊越多,其所需要傳輸的運動向量越多。因此宏塊 的最佳劃分模式應該由殘差的多少(由絕對誤差和(sum of absolute difference, SAD)決定)和編碼運動向量的編碼比特數共同決定。由于宏塊劃分的模式種類很多,對于16X 16的宏塊可劃分為16X16、 8X16、 16X8和8X8四種模式,如圖1所示,進一步的,每個8X 8的塊還可以劃分為8X8、 8X4、 4X8和4X4四種模式,如圖2所示。現有技術在運動搜索中 ,選擇最優的宏塊劃分模式需要遍歷的宏塊劃分的各種模式(16X16宏塊有第一模式16X 16、第二模式8X16、第三模式16X8、第四模式8X8; 8X8宏塊有第一模式8X8、第二模式 4X8、第三模式8X4和第四模式4X4),得到每種劃分模式下運動搜索的運動向量和殘差( 絕對誤差和),計算出其匹配誤差函數,找出宏塊在各劃分模式下具有最小的匹配誤差函數 的模式作為該宏塊的劃分模式。這需要大量的計算量,影響了視頻編碼的速度,尤其是在實 時通信時,這種搜索方法很難滿足實際需要。 每個塊的匹配誤差函數計算公式如下其中MD (絕對誤差和〕的計算公式如下&辦其中,s是當前進行編碼的原始數據,而c是已經編碼重建的用語進行運動補償的參考幀的數據;^為候選的運動矢量,P,為預測的運動矢量;^""^^為拉格朗日常數;PMO代表了運動矢量差分編碼可能耗費的比特數;M^表示運動向量^在x軸方向的大小;^^表示運動向量i在y軸方向的大小。得到每個塊的匹配誤差函數后,將宏 塊內所有塊的匹配誤差函數相加,便得到宏塊在這種劃分模式下的匹配誤差函數。 發明內容本發明所要解決的技術問題是,提供一種運動搜索中能快速劃分宏塊的宏塊劃分模式的 選擇方法。本發明為解決上述技術問題所采用的技術方案是,運動搜索中宏塊劃分模式的選擇方法 ,包括以下步驟a、 以第一模式作為當前宏塊劃分模式,對宏塊進行第一次運動搜索,得到第一模式塊 對應的殘差矩陣與運動向量,計算從第一模式塊劃分得到的4個第四模式塊的SAD值;b、 選出所述4個第四模式塊中具有最大SAD的第四模式塊,將該第四模式塊對應的SAD值 分別于其水平相鄰和垂直相鄰的第四模式塊的SAD值相加;判斷與水平相鄰的第四模式塊的 SAD值相加的值是否大于與垂直相鄰的第四模式塊的SAD值相加的值,如是,則將第二模式作 為當前宏塊劃分模式,第二次運動搜索以第二模式來劃分宏塊;如否,則將第三模式作為當前宏塊劃分模式,第二次運動搜索以第三模式來劃分宏塊;c、 計算當前宏塊劃分模式下,分別將劃分得到的2個第二模式塊或第三模式塊的SAD值 與第一閾值比較,逐一判斷當前宏塊劃分模式下的第二模式塊或第三模式塊的SAD值是否大 于第一閾值,如是,對大于第二閾值的第二模式塊或第三模式塊進行第二次運動搜索,得到 該第二模式塊或第三模式塊對應的殘差矩陣與運動向量;如否,以第一次運動搜索得到的殘 差矩陣與運動向量作為第二模式塊或第三模式塊對應得到的殘差矩陣與運動向量;d、 根據第二次運動搜索得到的殘差矩陣,計算第二模式塊或第三模式塊劃分得到的第 四模式塊的SAD值;e、 逐一判斷各第四模式塊的SAD值是否大于第二閾值,如是,以第四模式來劃分宏塊, 對大于第二閾值的第四模式塊進行第三次運動搜索,得到該第四模式塊對應的殘差矩陣與運 動向量;如否,以上一次運動搜索得到的殘差矩陣與運動向量作為第四模式塊對應的殘差矩 陣與運動向量;f、 統計宏塊在第一模式、第二模式與第四模式,或者第一模式、第三模式與第四模式 下對應的殘差矩陣與運動向量,并計算出各個模式的匹配誤差函數,以最小的匹配誤差函數 對應的宏塊劃分模式作為當前宏塊的劃分模式。步驟e中,所述上一次運動搜索具體為,當該第四模式塊所在的第二模式塊或第三模式 塊在步驟c中的SAD值與第一閾值判斷中,對應的第二模式塊或第三模式塊的SAD值大于第一 閾值,那么該第四模式塊對應的上一次運動搜索為第二次運動搜索;否則,該第四模式塊對 應的上一次運動搜索為第一次運動搜索。殘差矩陣為當前宏塊減去參考幀中最匹配塊的差值,SAD值體現了殘差的大小,SAD值越 大表明當前宏塊與參考幀的匹配度越低,本發明中,采用閾值對劃分后的塊的SAD值進行判 斷,從而判定當前模式下塊的匹配度,如劃分的塊在當前模式下匹配度較高,則對該塊不再 進行其它模式的劃分,以減少宏塊劃分模式的選擇量;如劃分的塊在當前模式下匹配度較低 ,為了保證幀間預測精度,則對該塊進行其它模式的劃分。所述宏塊為16X16塊或8X8塊;當宏塊為16X16塊時,對應的第一模式塊為16 X 16塊, 第二模式為8X16塊,第三模式塊為16X8,第四模式塊為8X8;所述宏塊為8X8塊時,對應 的第一模式塊為8X8塊,第二模式為4X8塊,第三模式塊為8X4,第四模式塊為4X4。本發明的有益效果是,有效地減少宏塊劃分選擇模式的選擇量和塊的運動搜索次數,從 而提高編碼器算法速度。
圖1為16X16宏塊劃分模式;圖2為8X8宏塊劃分模式;圖3為16 X 16宏塊中劃分塊的SAD值表示;圖4為8 X 8宏塊中劃分塊的SAD值表示。
具體實施方式
以對16X16宏塊劃分模式選擇的方法為例,先進行16X16宏塊劃分模式選擇,再對8X 8宏塊的劃分模式進行選擇,最終的宏塊劃分模式的確定根據不同劃分模式下的匹配誤差函 數決定。本發明的具體實施步驟如下I.進行16X16宏塊的劃分模式選擇,各劃分塊的SAD值如圖3所示1) 采用16X16的模式(第一模式)進行運動搜索;2) 根據運動搜索,得到16X16塊對應的殘差矩陣與運動向量,并計算4個8X8塊(第四 模式塊)的SAD值;這4個8X8塊的SAD值分別為SAD41、 SAD42、 SAD43和SAD44,它們的大小關 系為SAD41〉SAD42〉SAD43〉SAD44;3) 找出4個8X8塊中具有最大SAD值的塊(SAD41),將其SAD41分別于水平相鄰8X8塊 和垂直相鄰8 X 8塊的SAD值(水平相鄰8 X 8塊的SAD值為SAD42,垂直相鄰8 X 8塊的SAD值為 SAD43)相加,由于(SAD41+ SAD42)大于(SAD41+ SAD43),則采用8X16塊(第二模式塊 )作為當前宏塊劃分模式;SAD41值與SAD42相加得到SAD21;4) 計算在第二模式下另一個8X16塊的SAD值,SAD43值與SAD44相加得到SAD22,分別判 斷這兩個塊的SAD值(SAD21、 SAD22)是否大于8X 16劃分模式的閾值(TSAD23,第一閾值),SAD21大于TSAD23,貝I」SAD21對應的8X 16塊需要進行一次新的運動搜索(將8X16模式作為 當前宏塊劃分模式),并得到該8X16塊對應的殘差矩陣與運動向量;SAD22小于TSAD23, SAD22對應的8X 16塊則不需要進行新的運動搜索,該8 X 16塊的運動向量及殘差矩陣仍采用 16X16塊運動搜索得到的結果;5) 根據步驟4)對SAD21對應的8X16塊進行的新的運動搜索,得到其2個8X8塊(第四 模式塊)的SAD值(SAD41' 、 SAD42' ) , SAD41' >SAD43>SAD42' >SAD44;6) 判斷SAD41' 、 SAD42' 、 SAD43和SAD44是否大于8X8劃分模式的閾值(TSAD4,第二 閾值),其中,SAD41' > SAD43〉TSAD4〉 SAD42' > SAD44; SAD41'禾口SAD43大于TSAD4,貝lj SAD41'和SAD43對應的8X8塊需要進行一次新的運動搜索(將8X8模式作為當前8X 16塊塊 劃分模式),并得到該8X8塊對應的殘差矩陣與運動向量;SAD42'和SAD44小于TSAD4,則不需要進行新的運動搜索,SAD42'對應8X8塊的運動向量及殘差矩陣仍采用8X16塊運動搜 索得到的結果,而SAD44對應8X8塊的運動向量及殘差矩陣仍采用16X 16塊運動搜索得到的 結果;II. 進行該宏塊內每個8X8塊的劃分模式選擇,各劃分塊的SAD值如圖4所示1) 得到的每個8X8塊(第一模式塊)的殘差矩陣與運動向量,并計算其每個8X8塊中 的4個4X4塊(第四模式塊)的SAD值(SAD71、 SAD72、 SAD73和SAD74), SAD71>SAD74>SAD72>SAD73;2) 找出4個4X4塊中具有最大SAD值的塊(SAD71),將其SAD71分別于水平相鄰和垂直 相鄰4X4塊的SAD值(SAD72、 SAD73)相加,比較這兩個相加得到的SAD值,找出最大的一個 SAD及其4X4塊組合模式(4X8 (第二模式)或8X4 (第三模式)的宏塊劃分模式),( SAD71+ SAD73)大于(SAD71+ SAD72),表明應采用8X4塊的宏塊劃分模式;SAD71值與 SAD73相力口得至USAD51;3) 計算在這種宏塊劃分模式下另一個塊的SAD值,SAD74與SAD72相加得到SAD52;分別 判斷這SAD51、 SAD52是否大于該塊劃分模式的閾值(TSAD56,第一閾值);SAD51> TSAD56〉SAD52; SAD51對應的8 X 4塊需要進行一次新的運動搜索(將8 X 4模式作為當前8 X 8 塊塊劃分模式),并得到該8X4塊對應的殘差矩陣與運動向量;SAD52對應的8X4塊不需要 進行新的運動搜索,該塊的運動向量及殘差矩陣仍采用8X8塊的運動搜索得到的結果;4) 根據SAD51對應的8X4塊得到其中2個4X4塊的SAD值(SAD71' 、 SAD73' ) ; SAD71 '> SAD74> SAD72> SAD73';5) 判斷SAD71' 、 SAD72、 SAD73'和SAD74是否大于4X4宏塊劃分模式的閾值(TSAD7, 第二閾值),SAD71' > TSAD7> SAD74> SAD72> SAD73' , SAD71'大于TSAD7,貝lJSAD71' X寸 應的4X4塊需要進行一次新的運動搜索(將4X4模式作為當前8X4塊的劃分模式),并得到 該4X4塊對應的殘差矩陣與運動向量;SAD72、 SAD73'和SAD74小于TSAD7,它們對應的4X 4塊不需要進行新的運動搜索,其SAD73'對應塊的運動向量及殘差矩陣仍采用8X4塊的運動 搜索得到的結果,而SAD72和SAD74對應塊的運動向量及殘差矩陣仍采用8X8塊的運動搜索得 到的結果;III. 根據第I和II步得到的結果,統計出宏塊每種劃分模式下運動搜索的運動向量和殘 差,計算出其匹配誤差函數,找出宏塊在各種劃分模式下具有最小的匹配誤差函數的模式作 為該宏塊的劃分模式。在算法實現過程中,閾值的設置影響了算法的速度和幀間預測的精度。往往閾值設置越低,幀間預測的精度越高,但是需要遍歷的宏塊劃分模式的數量越多,同時在不同模式下需 要進行運動搜索塊的數量也越多,其編碼器速度越慢,反之幀間預測的精度越低,但是需要 遍歷的宏塊劃分模式的數量越少,同時在不同模式下需要進行運動搜索塊的數量也越少,其 編碼器速度越快。 一般而言,其閾值的設定不宜太低,這樣做的目的是在一些塊的SAD已經 很小的情況下,再對其塊進行進一步劃分和運動搜索來達到降低SAD的可能性不大,即使能 有所降低,其降低的程度也會很小,但是卻需要更多的運動向量編碼比特,這些情況下塊的 進一步劃分很難成為最優的劃分模式。
權利要求
1.運動搜索中宏塊劃分模式的選擇方法,其特征在于,包括以下步驟a、以第一模式作為當前宏塊劃分模式,對宏塊進行第一次運動搜索,得到第一模式塊對應的殘差矩陣與運動向量,計算從第一模式塊劃分得到的4個第四模式塊的SAD值;b、選出所述4個第四模式塊中具有最大SAD的第四模式塊,將該第四模式塊對應的SAD值分別于其水平相鄰和垂直相鄰的第四模式塊的SAD值相加;判斷與水平相鄰的第四模式塊的SAD值相加的值是否大于與垂直相鄰的第四模式塊的SAD值相加的值,如是,則將第二模式作為當前宏塊劃分模式,第二次運動搜索以第二模式來劃分宏塊;如否,則將第三模式作為當前宏塊劃分模式,第二次運動搜索以第三模式來劃分宏塊;c、計算當前宏塊劃分模式下,分別將劃分得到的2個第二模式塊或第三模式塊的SAD值與第一閾值比較,逐一判斷當前宏塊劃分模式下的第二模式塊或第三模式塊的SAD值是否大于第一閾值,如是,對大于第二閾值的第二模式塊或第三模式塊進行第二次運動搜索,得到該第二模式塊或第三模式塊對應的殘差矩陣與運動向量;如否,以第一次運動搜索得到的殘差矩陣與運動向量作為第二模式塊或第三模式塊對應得到的殘差矩陣與運動向量;d、根據第二次運動搜索得到的殘差矩陣,計算第二模式塊或第三模式塊劃分得到的第四模式塊的SAD值;e、逐一判斷各第四模式塊的SAD值是否大于第二閾值,如是,以第四模式來劃分宏塊,對大于第二閾值的第四模式塊進行第三次運動搜索,得到該第四模式塊對應的殘差矩陣與運動向量;如否,以上一次運動搜索得到的殘差矩陣與運動向量作為第四模式塊對應的殘差矩陣與運動向量;f、統計宏塊在第一模式、第二模式與第四模式,或者第一模式、第三模式與第四模式下對應的殘差矩陣與運動向量,并計算出各個模式的匹配誤差函數,以最小的匹配誤差函數對應的宏塊劃分模式作為當前宏塊的劃分模式。
2.如權利要求l所述運動搜索中宏塊劃分模式的選擇方法,步驟e中,所述上一次運動搜索具體為,當該第四模式塊所在的第二模式塊或第三模式塊在步驟c中 的SAD值與第一閾值判斷中,對應的第二模式塊或第三模式塊的SAD值大于第一閾值,那么該 第四模式塊對應的上一次運動搜索為第二次運動搜索;否則,該第四模式塊對應的上一次運 動搜索為第一次運動搜索。
3.如權利要求1或2所述運動搜索中宏塊劃分模式的選擇方法,所述 宏塊為16X16塊,對應的第一模式塊為16X16塊,第二模式為8X16塊,第三模式塊為16X 8,第四模式塊為8X8。
4.如權利要求1或2所述運動搜索中宏塊劃分模式的選擇方法,所述 宏塊為8X8塊時,對應的第一模式塊為8X8塊,第二模式為4X8塊,第三模式塊為8X4,第 四模式塊為4X4。
全文摘要
本發明屬于視頻編碼技術,具體涉及一種H.264的幀間分數級運動搜索方法。本發明所要解決的技術問題是,提供一種運動搜索中能快速劃分宏塊的宏塊劃分模式的選擇方法。運動搜索中宏塊劃分模式的選擇方法,采用閾值對劃分后的塊的SAD值進行判斷,從而判定當前模式下塊的匹配度,如劃分的塊在當前模式下匹配度較高,則對該塊不再進行其它模式的劃分,以減少宏塊劃分模式的選擇量;如劃分的塊在當前模式下匹配度較低,為了保證幀間預測精度,則對該塊進行其它模式的劃分。本發明能有效地減少宏塊劃分選擇模式的選擇量和塊的運動搜索次數,從而提高編碼器算法速度。
文檔編號H04N7/32GK101404774SQ200810305538
公開日2009年4月8日 申請日期2008年11月13日 優先權日2008年11月13日
發明者春 方, 魯國寧 申請人:四川虹微技術有限公司