一種適用于h.264視頻編解碼的整像素運(yùn)動(dòng)估計(jì)方法
【專利摘要】本發(fā)明公開了一種適用于H.264視頻編解碼的整像素運(yùn)動(dòng)估計(jì)方法,其算法的步驟包括:a.對(duì)參考幀進(jìn)行邊界填充;b.進(jìn)行場(chǎng)景檢測(cè);c.并行的絕對(duì)誤差和計(jì)算;d.求候選運(yùn)動(dòng)矢量;e.求預(yù)測(cè)運(yùn)動(dòng)矢量;f.求最佳預(yù)測(cè)運(yùn)動(dòng)矢量;g.求最佳匹配塊。本發(fā)明提出的運(yùn)動(dòng)估計(jì)算法可提高運(yùn)動(dòng)搜索的準(zhǔn)確度,降低視頻編碼時(shí)殘差塊的數(shù)據(jù)量,有效提高H.264視頻編碼的質(zhì)量。
【專利說明】一種適用于Η. 264視頻編解碼的整像素運(yùn)動(dòng)估計(jì)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于視頻編解碼【技術(shù)領(lǐng)域】,尤其涉及一種適用于Η. 264視頻編解碼的整像 素運(yùn)動(dòng)估計(jì)方法。
【背景技術(shù)】
[0002] Η. 264較之前的視頻編解碼標(biāo)準(zhǔn)MPEG1/2/4、Η. 261、Η. 263相比,具有更高的數(shù)據(jù) 壓縮比率、更好的網(wǎng)絡(luò)適應(yīng)性。在同等圖像質(zhì)量的條件下,Η. 264的壓縮比是MPEG-2的2倍 以上,是MPEG-4的1. 5?2倍。Η. 264性能的改善是許多技術(shù)改進(jìn)的結(jié)果。Η. 264在沿用 之前的整體編解碼框架結(jié)構(gòu)的基礎(chǔ)上采用了許多新的技術(shù),例如:多宏塊分割方式、多幀預(yù) 測(cè)、亞像素精度運(yùn)動(dòng)估計(jì)。
[0003] 基于塊匹配的運(yùn)動(dòng)估計(jì)是視頻編碼標(biāo)準(zhǔn)里最重要的部分,準(zhǔn)確而高效的塊匹配運(yùn) 動(dòng)估計(jì)算法,將大大減少食品序列的時(shí)間相關(guān)性以及冗余,從而帶來高的壓縮比。所謂運(yùn) 動(dòng)估計(jì)就是在進(jìn)行幀間預(yù)測(cè)時(shí),為確定當(dāng)前幀中待編碼宏塊在參考幀中的位置所進(jìn)行的搜 索過程。在基于塊的運(yùn)動(dòng)估計(jì)中,前一幀將對(duì)分為一些像素方塊,就是所說的宏塊和塊的概 念,運(yùn)動(dòng)估計(jì)的目的就是根據(jù)預(yù)定義的偏差標(biāo)準(zhǔn),在參考幀中找到當(dāng)前宏塊的最佳匹配塊。 在運(yùn)動(dòng)估計(jì)結(jié)束之后,對(duì)于當(dāng)前塊,只要將當(dāng)前塊和匹配塊的殘差塊以及運(yùn)動(dòng)信息即運(yùn)動(dòng) 矢量編碼即可,從而減少了編碼所需的數(shù)據(jù)量。尤其對(duì)于運(yùn)動(dòng)量不大的圖像,前后圖像的區(qū) 別不大,用運(yùn)動(dòng)估計(jì)可以有效的提高壓縮比。因此,提供一個(gè)更加精確的運(yùn)動(dòng)估計(jì)算法,在 視頻編碼中顯得相當(dāng)重要。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明所要解決的技術(shù)問題是提供一種提高了運(yùn)動(dòng)估計(jì)的匹配準(zhǔn)確度,降低了殘 差塊的編碼數(shù)據(jù)量,提高了 Η. 264視頻編碼的質(zhì)量的整像素運(yùn)動(dòng)估計(jì)算法。
[0005] 本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種適用于Η. 264視頻編解碼的整 像素運(yùn)動(dòng)估計(jì)方法,包括本發(fā)明的方法通過以下具體步驟實(shí)現(xiàn):
[0006] 一、找到最佳初始預(yù)測(cè)點(diǎn):
[0007] 現(xiàn)有的運(yùn)動(dòng)估計(jì)算法,容易陷入局部最小點(diǎn),由于物體在運(yùn)動(dòng)時(shí)表現(xiàn)出的完整性, 使時(shí)域和空域相鄰塊具有相關(guān)性,我們可以利用時(shí)域和空域相鄰塊運(yùn)動(dòng)矢量的相關(guān)性,找 到距離最佳匹配點(diǎn)最近的初始預(yù)測(cè)點(diǎn),尋找初始預(yù)測(cè)點(diǎn)的方法如下:
[0008] 1、對(duì)參考幀進(jìn)行邊界填充:
[0009] 進(jìn)行幀間運(yùn)動(dòng)估計(jì)之前,先進(jìn)行參考幀的邊界填充。使參考幀滿足16*16倍數(shù)的 大小。
[0010] 2、場(chǎng)景檢測(cè):
[0011] 場(chǎng)景檢測(cè)即為確定當(dāng)前幀是否是一個(gè)新的圖片,場(chǎng)景檢測(cè)可用來確定當(dāng)前幀運(yùn)動(dòng) 矢量預(yù)測(cè)類型,設(shè)置當(dāng)前幀運(yùn)動(dòng)矢量預(yù)測(cè)類型為變量type_pred。若場(chǎng)景檢測(cè)出此幀為新的 圖片,則將此幀設(shè)為I幀,此幀的宏塊在進(jìn)行運(yùn)動(dòng)矢量預(yù)測(cè)時(shí)只進(jìn)行幀內(nèi)預(yù)測(cè),不進(jìn)行幀間 預(yù)測(cè)。若幀率小于5,或者當(dāng)前場(chǎng)景太接近前一個(gè)I幀,則不進(jìn)行場(chǎng)景檢測(cè),不進(jìn)行場(chǎng)景檢測(cè) 時(shí)當(dāng)前巾貞運(yùn)動(dòng)矢量預(yù)測(cè)類型為2,即type_pred = 2。
[0012] 3、并行計(jì)算絕對(duì)誤差和SAD :
[0013] 在用塊匹配法進(jìn)行運(yùn)動(dòng)估計(jì)時(shí),衡量在參考幀中搜索到的匹配點(diǎn)是否是最優(yōu)匹配 點(diǎn),用到的匹配準(zhǔn)則較多為SAD(sum of absolute differences),如下所示:
[0014]
【權(quán)利要求】
1. 一種適用于Η. 264視頻編解碼的整像素運(yùn)動(dòng)估計(jì)方法,其特征在于,包括如下步驟: a. 邊界填充:對(duì)解碼后的參考幀進(jìn)行邊界像素值上下左右的邊界填充,獲得具有邊界 和有效邊界的參考幀,使參考幀滿足16*16倍數(shù)的大小; b. 場(chǎng)景檢測(cè):確定當(dāng)前幀是否為全新圖片以及確定當(dāng)前幀運(yùn)動(dòng)矢量預(yù)測(cè)類型,設(shè)置當(dāng) 前幀運(yùn)動(dòng)矢量預(yù)測(cè)類型為變量type_pred,若場(chǎng)景檢測(cè)出此幀為全新圖片,則將此幀設(shè)為I 幀,若場(chǎng)景檢測(cè)出此幀的幀率小于5或當(dāng)前場(chǎng)景接近前一個(gè)I幀,則不進(jìn)行場(chǎng)景檢測(cè),不進(jìn) 行場(chǎng)景檢測(cè)時(shí)當(dāng)前幀運(yùn)動(dòng)矢量預(yù)測(cè)類型為2,即type_p red = 2 ; c. 并行計(jì)算絕對(duì)誤差和SAD :每次對(duì)16*16的宏塊進(jìn)行運(yùn)動(dòng)估計(jì),并采用SMD技術(shù) 進(jìn)行計(jì)算,即通過移位、與、或操作,每次并行計(jì)算多個(gè)像素,若ref為指向參考幀對(duì)應(yīng)像素 的指針,貝1J判斷式子(uint32)ref&0x3是否等于零,若(uint32)ref&0x3等于零,說明ref 所指向的數(shù)據(jù)是字對(duì)齊的,若(uint32)ref&0x3不等于零,貝U先對(duì)指針ref左移(uint32) ref&0x3位后再進(jìn)行操作; d. 求宏塊候選運(yùn)動(dòng)矢量:對(duì)當(dāng)前宏塊預(yù)測(cè)類型的時(shí)空預(yù)測(cè)和空間預(yù)測(cè); e. 求宏塊的預(yù)測(cè)運(yùn)動(dòng)矢量:判斷當(dāng)前幀中或參考幀中的當(dāng)前宏塊是否滿足存在左鄰 居宏塊A (運(yùn)動(dòng)矢量為pmvA_X),同時(shí)不存在上部B (運(yùn)動(dòng)矢量為pmvB_X)和右上部鄰居宏塊 C(運(yùn)動(dòng)矢量為pmvC_X)的條件,滿足則當(dāng)前宏塊的預(yù)測(cè)運(yùn)動(dòng)矢量為當(dāng)前宏塊左鄰居宏塊的 運(yùn)動(dòng)矢量,即cmvx = pmvA_x,cmvy = pmvA_y ;不滿足則當(dāng)前宏塊的預(yù)測(cè)運(yùn)動(dòng)矢量為cmvx =MEDIAN(pmvA_x, pmvB_x, pmvC_x), cmvy = MEDIAN(pmvA_y, pmvB_y, pmvC_y); f. 求宏塊的最佳預(yù)測(cè)運(yùn)動(dòng)矢量:由候選運(yùn)動(dòng)矢量分別確定待編碼宏塊在參考幀中對(duì) 應(yīng)的參考宏塊位置,通過步驟c,計(jì)算當(dāng)前宏塊和參考宏塊的SAD以及候選運(yùn)動(dòng)矢量與預(yù)測(cè) 運(yùn)動(dòng)矢量的差值MV_COST,選擇SAD+MV_COST最小的運(yùn)動(dòng)矢量,為最佳運(yùn)動(dòng)矢量,此時(shí)可得 到參考宏塊的位置,記為(imin, jmin); g. 查找最佳匹配塊:從最佳初始預(yù)測(cè)點(diǎn)開始進(jìn)行一次小菱形搜索,計(jì)算SAD的值,若 SAD值小于1,說明運(yùn)動(dòng)物體較大,直接進(jìn)行六角形搜索;若SAD值小于2,說明運(yùn)動(dòng)物體較 小,繼續(xù)小菱形搜索,當(dāng)代價(jià)函數(shù)最小值位于搜索中心點(diǎn)時(shí),停止搜索。
2. 根據(jù)權(quán)利要求1所述的一種適用于H. 264視頻編解碼的整像素運(yùn)動(dòng)估計(jì)方法,其特 征在于,所述d.求宏塊候選運(yùn)動(dòng)矢量具體步驟為: A、 若當(dāng)前宏塊預(yù)測(cè)類型為時(shí)空預(yù)測(cè)且precLtpye等于0,則候選運(yùn)動(dòng)矢量分別為: a) 參考幀中與當(dāng)前宏塊坐標(biāo)相同的宏塊的運(yùn)動(dòng)矢量, b) 參考幀中與當(dāng)前宏塊坐標(biāo)相同的宏塊左鄰居或右鄰居的運(yùn)動(dòng)矢量, c) 參考幀中與當(dāng)前宏塊坐標(biāo)相同的宏塊頂部或底部鄰居的運(yùn)動(dòng)矢量, d) 參考幀中與當(dāng)前宏塊坐標(biāo)相同的宏塊左上部宏塊的運(yùn)動(dòng)矢量, e) 參考幀中與當(dāng)前宏塊坐標(biāo)相同的宏塊右上部宏塊的運(yùn)動(dòng)矢量; B、 若當(dāng)前宏塊預(yù)測(cè)類型為時(shí)空預(yù)測(cè)且precLtpye等于1,則候選運(yùn)動(dòng)矢量分別為: a) 參考幀中與當(dāng)前宏塊坐標(biāo)相同的宏塊的運(yùn)動(dòng)矢量, b) 當(dāng)前幀中當(dāng)前宏塊左鄰居宏塊的運(yùn)動(dòng)矢量, c) 當(dāng)前幀中當(dāng)前宏塊上部宏塊的運(yùn)動(dòng)矢量, d) 參考幀中當(dāng)前宏塊右邊宏塊的運(yùn)動(dòng)矢量, e) 參考幀中當(dāng)前宏塊下部宏塊的運(yùn)動(dòng)矢量; C、 若當(dāng)前宏塊預(yù)測(cè)類型僅為空間預(yù)測(cè)且precLtpye等于0,則候選運(yùn)動(dòng)矢量分別為: a) 當(dāng)前幀中當(dāng)前宏塊左邊宏塊的運(yùn)動(dòng)矢量, b) 當(dāng)前幀中當(dāng)前宏塊左上部宏塊運(yùn)動(dòng)矢量, c) 當(dāng)前幀中當(dāng)前宏塊右上部宏塊運(yùn)動(dòng)矢量; D、 若當(dāng)前宏塊預(yù)測(cè)類型僅為空間預(yù)測(cè)且precLtpye等于1,則候選運(yùn)動(dòng)矢量分別為: a) 當(dāng)前幀中此宏塊左部宏塊的運(yùn)動(dòng)矢量, b) 當(dāng)前幀中此宏塊上部宏塊的運(yùn)動(dòng)矢量, c) 當(dāng)前幀中此宏塊右部宏塊的運(yùn)動(dòng)矢量, d) 當(dāng)前幀中此宏塊下部宏塊的運(yùn)動(dòng)矢量。
【文檔編號(hào)】H04N19/56GK104113756SQ201310138420
【公開日】2014年10月22日 申請(qǐng)日期:2013年4月22日 優(yōu)先權(quán)日:2013年4月22日
【發(fā)明者】王飛躍, 孔慶杰 申請(qǐng)人:蘇州派瑞雷爾智能科技有限公司