專利名稱:基于時空域相關(guān)性快速運動估計的視頻編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)數(shù)字視頻編碼技術(shù)領(lǐng)域,針對的是視頻編碼系統(tǒng),如高清電視(HDTV)、高清激光視盤(HD-DVD)和流媒體服務(wù)器等應(yīng)用。
背景技術(shù):
對于目前的基于運動補(bǔ)償?shù)囊曨l編碼標(biāo)準(zhǔn)而言,塊匹配運動估計(BMME,Block-matching motion estimation)是其的最重要組成部分之一。運動估計與補(bǔ)償技術(shù)可以有效地去除視頻序列相鄰幀間存在的時間冗余,極大地提高視頻編碼的編碼效率。
對視頻編碼而言,通常圖像幀首先被分為大小相等的矩形塊,例如對H.264而言,矩形塊的大小是從16×16到4×4的七種模式,運動估計就是在前一個或幾個重建參考幀中尋找與當(dāng)前編碼塊最相似的矩形塊的過程。全搜索(FS,F(xiàn)ull search)算法是最直接的運動估計實現(xiàn)方法。FS算法通過對搜索窗內(nèi)的所有點進(jìn)行搜索,因而可以得到最優(yōu)匹配,但是FS算法的計算量巨大,難以實時實現(xiàn)。一般而言,運動估計通??梢哉嫉秸麄€視頻編碼60%左右的計算量。
為了減少BMME的計算量,許多學(xué)者都研究了BMME的快速搜索算法。這些方法可以分為三類1)通過減少搜索點的快速算法。如二維對數(shù)法、三步法,新三步法、四步法、十字法、鉆石法以及改進(jìn)的鉆石法等。2)快速塊匹配誤差計算方法。如子集匹配法和基于投影的方法。3)運動場下采樣法。與后兩種方法相比,第一類方法最為高效,是最常用的快速搜索算法,其中菱形算法(DS,Diamond search)是目前最為高效的運動估計方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于克服目前編碼系統(tǒng)中運動估計部分計算量大、難以實時實現(xiàn)的不足,在保證不降低編碼質(zhì)量的前提下,有效地提高編碼的實時性,設(shè)計了一種結(jié)合宏塊在時間域和空間域上相關(guān)性的快速運動估計方法。其技術(shù)思路特征在于1.綜合利用了在時間域和空間域上相鄰宏塊間運動的相關(guān)性,并根據(jù)其相關(guān)性的不同而采用了不同的模板策略,提高了運動估計的速度和精度;2.提出了一種適應(yīng)不同運動相關(guān)性的搜索策略,即根據(jù)相鄰宏塊間運動相關(guān)性的不同而將相鄰宏塊的運動分為兩種不同的狀態(tài),對于每種運動狀態(tài)分別采用了不同的搜索起始點和搜索模板。
本發(fā)明的技術(shù)方案參見圖3-圖8。這種基于時空域相關(guān)性快速運動估計的視頻編碼方法,是由攝像機(jī)(1),將目標(biāo)物狀態(tài)轉(zhuǎn)換成視頻信號輸入到采集卡(2)中;采集卡將視頻信號轉(zhuǎn)換成數(shù)字視頻序列,并存放在視頻緩存中,這些數(shù)字視頻序列或是以視頻序列文件形式存放在計算機(jī)硬盤中的視頻數(shù)據(jù),都被稱為原始視頻序列,作為該系統(tǒng)的輸入用于壓縮;計算機(jī)(3)存放原始視頻序列和執(zhí)行視頻編碼子程序,并生成壓縮后的碼流文件,本發(fā)明的特征在于計算機(jī)首先從采集卡的視頻存儲器或存放在計算機(jī)硬盤上的視頻序列文件中讀一幀視頻數(shù)據(jù)到計算機(jī)的緩沖區(qū)中,通過執(zhí)行視頻編碼子程序?qū)υ搸M(jìn)行編碼。
視頻編碼子程序采用了基于運動補(bǔ)償/離散余弦變換(DCt,Discrete cosinetransform)的混合編碼方法,除運動估計子程序這一部分外,采用了國際視頻編碼標(biāo)準(zhǔn)H.264 JM6.0的編碼框架。
視頻編碼子程序在視頻編碼時,將一個輸入的視頻序列幀被分為16×16的宏塊,編碼過程是以宏塊為單位進(jìn)行的;計算機(jī)開始執(zhí)行視頻編碼子程序后,首先對編碼進(jìn)行初始化,這些初始化工作主要包括對編碼參數(shù)和緩沖區(qū)的設(shè)置。
然后計算機(jī)按照從上到下、從左到右的次序先對第一個宏塊執(zhí)行運動估計子程序;運動估計結(jié)束后對得到的運動矢量做差值編碼,并對宏塊像素進(jìn)行預(yù)測得到該宏塊殘差圖像;而對殘差圖像則首先進(jìn)行DCT變換,然后對DCT系數(shù)進(jìn)行量化和變長編碼(VLC,Variable length coding)編碼,最后進(jìn)行解碼、生成相應(yīng)參考宏塊;該宏塊編碼結(jié)束后,對當(dāng)前編碼幀的所有宏塊循環(huán)執(zhí)行上述編碼過程,完成對一個視頻序列幀的編碼;一幀編碼結(jié)束后循環(huán)編碼下一幀,至到視頻序列的最后一幀編碼結(jié)束,并生成壓縮后的碼流文件,系統(tǒng)執(zhí)行程序結(jié)束。
在上述的視頻編碼子程序中,運動估計子程序中所采用的快速搜索算法,綜合利用了在時間域和空間域上相鄰宏塊間的運動相關(guān)性,并根據(jù)宏塊間運動相關(guān)性的不同而采用了不同的搜索策略,有效地提高了運動估計的精度和速度,最終提高了系統(tǒng)編碼的實時性。
其所述的運動估計子程序中的搜索算法如下(1)首先進(jìn)行相鄰宏塊間運動相關(guān)性的判斷;對于圖1所示的宏塊在時間域和空間域上的相鄰關(guān)系,設(shè)Ei是當(dāng)前幀i的編碼宏塊,Ai、Bi、Ci、Di、Gi、Hi分別為其左側(cè)、上側(cè)、右上側(cè)、左上側(cè)、右側(cè)和下側(cè)的相鄰宏塊,在前一幀(i-1)對應(yīng)位置上的宏塊分別表示為Ei-1、Ai-1、Bi-1、Ci-1、Di-1、Gi-1和Hi-l。
這里設(shè)B={C1C2C3C4C5}為Ei相鄰宏塊Ai、Bi、Ei-1、Gi-1和Hi-1的運動矢量組成的集合,如圖2所示。
(a)如果對于任意i,i∈[1,5],都滿足|Ci-C3|≤TH則Ei相鄰宏塊間的運動相關(guān)性為高。
(b)如果對于任意i,i∈[1,3)U(3,5],都滿足|Ci-C3|>TH則Ei相鄰宏塊間的運動相關(guān)性為低。
其中TH為閾值。
(2)根據(jù)(1)的判斷結(jié)果,當(dāng)前編碼宏塊的運動估計算法如下根據(jù)時空域相鄰宏塊間的運動相關(guān)性的不同,分別采用了不同的搜索策略。其采用的兩種搜索模板如圖7和圖8所示,其中圖7為小菱形搜索模板(LDSP,Little diamond search pattern),圖8為方菱形搜索模板(SDSP,Square diamondsearch pattern)。其搜索步驟如下步驟1根據(jù)(1)所描述的宏塊運動相關(guān)性描述方法,如果宏塊運動相關(guān)性為高,則以Ai、Bi、Ei-1運動矢量的中值作為搜索的起始點,跳轉(zhuǎn)到步驟2,否則跳轉(zhuǎn)到步驟3。
步驟2采用LDSP模板進(jìn)行搜索,如果最小塊差值點(BDM,Blockdifference minimum)位于LDSP模板的中心點a,則搜索結(jié)束,以該點的位移作為運動矢量;如果BDM位于LDSP的四個頂點b,則以該點為新的搜索起始點,循環(huán)執(zhí)行步驟2進(jìn)行搜索。
步驟3以當(dāng)前塊在前一幀對應(yīng)位置的(0,0)、Ai、Bi、Ei-1、Gi-1和Hi-1為搜索起始點,如果BDM位于(0,0)點,且絕對差值和(SAD,Sum of absolutedifference)大于1024時,則跳轉(zhuǎn)到步驟4進(jìn)行搜索,否則,以該點為新的搜索起始點跳轉(zhuǎn)到步驟2進(jìn)行搜索。
步驟4采用SDSP模板進(jìn)行搜索,如果BDM位于中心點c,則搜索結(jié)束,并以該點的位移作為運動矢量;如果BDM位于四個菱形頂點d,則以該點為新的搜索起始點,跳轉(zhuǎn)到步驟2進(jìn)行搜索;如果BDM位于四個方形頂點e,則以該頂點作為新的搜索起始點,循環(huán)執(zhí)行步驟4進(jìn)行搜索。
搜索結(jié)束后得到該宏塊的運動矢量。
下面將結(jié)合附圖對具體實施方式
進(jìn)行詳細(xì)說明。
圖1是宏塊在時間域和空間域上的相鄰關(guān)系;圖2是用于判斷運動相關(guān)性的五個宏塊的相鄰關(guān)系;圖3是視頻編碼系統(tǒng)框圖;圖4是視頻編碼系統(tǒng)主程序框圖;圖5是視頻編碼子程序框圖;圖6是運動估計子程序框圖;圖7是小菱形搜索模板(LDSP);其中標(biāo)a的點為LDSP模板的中心點,標(biāo)b的點為LDSP模板的菱形頂點;圖8是方菱形搜索模板(SDSP);其中標(biāo)c的點為SDSP模板的中心點,標(biāo)d的點為SDSP模板的菱形頂點,標(biāo)e的點SDSP模板的為方形頂點;
具體實施例方式本發(fā)明的視頻編碼方法的目的在于采用高效的運動估計算法,減少其計算量,在保持編碼質(zhì)量的前提下,利于編碼系統(tǒng)的實時實現(xiàn)。在圖3所示的視頻編碼系統(tǒng)框圖中,攝像機(jī)和采集卡是市售的,用于將目標(biāo)對象轉(zhuǎn)換成計算機(jī)可以處理的數(shù)字視頻序列。圖中的視頻序列文件表示該系統(tǒng)輸入的也可以是通過其他設(shè)備獲得的、并事先存放在計算機(jī)硬盤上的數(shù)字視頻序列。這些數(shù)字視頻序列就是原始視頻序列,作為該系統(tǒng)的輸入用于壓縮。在計算機(jī)上執(zhí)行視頻編碼子程序,對原始視頻序進(jìn)行壓縮,壓縮的結(jié)果是以生成碼流文件的形式存放在計算機(jī)硬盤上。與輸入的原始視頻序列相比,生成的碼流文件的數(shù)據(jù)量非常小,因而該系統(tǒng)達(dá)到了對視頻數(shù)據(jù)壓縮的目的。
圖4所示是該系統(tǒng)執(zhí)行程序的總體框圖。在圖4中,視頻編碼子程序采用了基于運動補(bǔ)償/DCT的混合編碼方法。除運動估計子程序這一部分外,本發(fā)明采用了國際視頻編碼標(biāo)準(zhǔn)H.264 JM6.0的基本編碼框架,其程序流程如圖4所示。應(yīng)該指出,在視頻編碼時,一個輸入的視頻序列幀被分為16×16的宏塊,編碼過程是以宏塊為單位進(jìn)行的。計算機(jī)開始執(zhí)行視頻編碼子程序后,首先對編碼進(jìn)行初始化,這些初始化工作包括對視頻序列格式、幀率、量化參數(shù)、運動估計的搜索范圍、參考幀的數(shù)目、各緩沖區(qū)以及輸出碼流文件名等的設(shè)置。然后計算機(jī)按照從上到下、從左到右的次序先將第一個宏塊的數(shù)據(jù)讀入緩沖區(qū),對該宏塊執(zhí)行如圖5所示的運動估計子程序,運動估計結(jié)束后對得到的運動矢量做差值編碼,并對宏塊像素進(jìn)行預(yù)測得到該宏塊殘差圖像;而對殘差圖像則首先進(jìn)行DCT變換,然后對DCT系數(shù)進(jìn)行量化和VLC編碼,之后輸出該宏塊的壓縮碼流并存放在緩沖區(qū)中。為了下一幀編碼的需要,最后進(jìn)行解碼、生成相應(yīng)參考宏塊,存放在計算機(jī)內(nèi)存中。該宏塊編碼結(jié)束后,對當(dāng)前編碼幀的所有宏塊循環(huán)執(zhí)行上述編碼過程,完成對一個視頻序列幀的編碼。
對于圖5所示的視頻編碼子程序,其中的運動估計子程序部分其程序框圖如圖6所示,該估計估計方法是本發(fā)明的核心,與目前其他的快速運動估計方法不同。該運動估計方法綜合利用了時間和空間域上的相關(guān)性,并根據(jù)相鄰宏塊間運動相關(guān)程度的不同而采用了不同的搜索策略。其具體執(zhí)行過程如下所述。在圖5所示的初始過程中,設(shè)置兩個長度都為L=W×H8]]>的緩沖區(qū),其中W為圖像幀的寬度,H圖像幀的高度,用于存放前一幀和當(dāng)前幀所有4×4子塊的運動矢量。
在計算機(jī)進(jìn)入圖6的運動估計子程序后,首先對當(dāng)前編碼宏塊Ei進(jìn)行相鄰宏塊間運動相關(guān)性的判斷,執(zhí)行的算法程序如前所述。在執(zhí)行完Ei相鄰宏塊間運動相關(guān)性的判斷之后,根據(jù)這一判斷結(jié)果,開始執(zhí)行相應(yīng)的搜索算法程序,搜索過程也如前所述,最后得到該宏塊的運動矢量。
為了驗證本發(fā)明的實際效率,進(jìn)行了如下的對比實驗。對相同的視頻序列,這里以foreman(176×144,100幀,15fps)序列為例,在本發(fā)明的編碼系統(tǒng)上執(zhí)行(1)采用本發(fā)明運動估計算法的編碼程序;(2)采用FS算法的編碼程序;(3)采用DS算法的編碼程序。其中FS的搜索精度最優(yōu),但計算量最大;DS算法是目前最優(yōu)的快速運動估計方法。表2是本發(fā)明與這兩種運動估計算法編碼結(jié)果的比較。編碼參數(shù)都按如表1所示的編碼配置文件設(shè)置,量化參數(shù)QP都分別取20,28,34和40四個值進(jìn)行實驗。依據(jù)大量實驗測試結(jié)果,在相鄰宏塊間運動相關(guān)性的判斷時,閾值TH選取8為最優(yōu)。
表1是編碼系統(tǒng)的配置文件。配置文件用于設(shè)置系統(tǒng)的編碼參數(shù),其中主要包括運動估計的精度為1/4像素,搜索范圍為±32像素;參考幀的數(shù)目為2幀;熵編碼采用上下文自適應(yīng)的變長編碼(CAVLC);禁止塊大小自適應(yīng)變換(ABT);必須執(zhí)行哈達(dá)瑪(Hadamard)變換和率失真(R-D)優(yōu)化;圖像組的結(jié)構(gòu)是第一幀為I幀,以后都為P幀;表2中峰值信噪比(PSNR,Peak signal noise ratio)表示重建視頻圖像的峰值信噪比。其中搜索點數(shù)是指每個宏塊的平均搜索點數(shù)。第一列為全搜索算法的實驗結(jié)果,第二列為菱形搜索算法的實驗結(jié)果,第三列為本發(fā)明運動估計算法的實驗結(jié)果??梢钥闯?,與DS算法相比,本文方法明顯地減少計算量,同時又在不同程度上提高編碼質(zhì)量。對于測試序列,本發(fā)明方法的搜索速度,比FS算法平均提高了74.17%,比DS算法平均提高了24.91%;PSNR平均比DS算法提高了0.04db,更接近FS算法的編碼質(zhì)量。
表1是編碼系統(tǒng)的配置文件
表2是編碼結(jié)果示例
權(quán)利要求
1.基于時空域相關(guān)性運動估計的視頻編碼方法,是由攝像機(jī)(1),將目標(biāo)物狀態(tài)轉(zhuǎn)換成視頻信號置于采集卡(2)中;采集卡將視頻信號轉(zhuǎn)換成數(shù)字視頻序列,并存放在視頻緩存中,這些數(shù)字視頻序列或是以視頻序列文件形式存放在計算機(jī)硬盤中的視頻數(shù)據(jù),作為該系統(tǒng)的輸入用于壓縮;計算機(jī)(3)存放原始視頻序列和執(zhí)行視頻編碼程序,并生成壓縮后的碼流文件,本發(fā)明的特征在于計算機(jī)首先從采集卡的視頻存儲器或存放在計算機(jī)硬盤上的視頻序列文件中讀一幀視頻數(shù)據(jù)到計算機(jī)的緩沖區(qū)中,通過執(zhí)行視頻編碼子程序?qū)υ搸M(jìn)行編碼;視頻編碼子程序在視頻編碼時,一個輸入的視頻序列幀被分為16×16的宏塊,編碼過程是以宏塊為單位進(jìn)行的;計算機(jī)開始執(zhí)行視頻編碼子程序后,首先對編碼進(jìn)行初始化;然后計算機(jī)按照從上到下、從左到右的次序先對第一個宏塊執(zhí)行運動估計子程序;運動估計結(jié)束后對得到的運動矢量做差值編碼,并對宏塊像素進(jìn)行預(yù)測得到該宏塊殘差圖像;而對殘差圖像則首先進(jìn)行離散余弦變換(DCT),然后對變換系數(shù)進(jìn)行量化和變長編碼(VLC)編碼,之后輸出該宏塊的壓縮碼流放入計算機(jī)的緩沖區(qū)中;最后進(jìn)行解碼、生成相應(yīng)參考宏塊;該宏塊編碼結(jié)束后,對當(dāng)前編碼幀的所有宏塊循環(huán)執(zhí)行上述編碼過程,完成對一個視頻序列幀的編碼;一幀編碼結(jié)束后循環(huán)編碼下一幀,至到視頻序列的最后一幀編碼結(jié)束,并生成壓縮后的碼流文件,系統(tǒng)執(zhí)行程序結(jié)束。
2.根據(jù)權(quán)利要求1所述的基于時空域相關(guān)性運動估計的視頻編碼方法,其特征在于所述的運動估計子程序中所采用的綜合利用在時間域和空間域上相鄰宏塊的相關(guān)性,并根據(jù)其相關(guān)性的不同采用不同搜索策略的運動估計方法步驟如下(1)首先進(jìn)行相鄰宏塊間運動相關(guān)性的判斷;對當(dāng)前任一編碼宏塊,其相鄰宏塊間運動相關(guān)性的描述方法為設(shè)Ei是當(dāng)前幀i的編碼宏塊,Ai、Bi、Ci、Di、Gi、Hi分別為其左側(cè)、上側(cè)、右上側(cè)、左上側(cè)、右側(cè)和下側(cè)的相鄰宏塊,在前一幀(i-1)對應(yīng)位置上的宏塊分別表示為Ei-l、Ai-1、Bi-1、Ci-1、Di-1、Gi-1和Hi-1;這里設(shè)B={C1C2C3C4C5}為Ei相鄰宏塊Ai、Bi、Ei-1、Gi-1和Hi-1的運動矢量組成的集合;(a)如果對于任意i,i∈[1,5],都滿足|Ci-C3|≤TH則Ei相鄰宏塊間的運動相關(guān)性為高;(b)如果對于任意i,i∈[1,3)U(3,5],都滿足|Ci-C3|>TH則Ei相鄰宏塊間的運動相關(guān)性為低;這里設(shè)B={C1C2C3C4C5}為Ei相鄰宏塊Ai、Bi、Ei-1、Gi-1和Hi-1的運動矢量組成的集合;(2)根據(jù)(1)的判斷結(jié)果,當(dāng)前編碼宏塊的運動估計算法如下根據(jù)時空域相鄰宏塊間的運動相關(guān)性的不同,分別采用了不同的搜索策略,其搜索步驟如下步驟1根據(jù)(1)所描述的宏塊運動相關(guān)性描述方法,如果宏塊運動相關(guān)性為高,則以Ai、Bi、Ei-1運動矢量的中值作為搜索的起始點,跳轉(zhuǎn)到步驟2,否則跳轉(zhuǎn)到步驟3;步驟2采用小菱形搜索模板(LDSP)進(jìn)行搜索,如果最小塊差值點(BDM)位于LDSP模板的中心點a,則搜索結(jié)束,則搜索結(jié)束,以該點的位移作為運動矢量;如果BDM位于LDSP的四個頂點b,則以該點為新的搜索起始點,循環(huán)執(zhí)行步驟2進(jìn)行搜索;步驟3以當(dāng)前塊在前一幀對應(yīng)位置的(0,0)、Ai、Bi、Ei-1、Gi-1和Hi-1為搜索起始點,如果BDM位于(0,0)點,且絕對差值和(SAD)大于1024時,則跳轉(zhuǎn)到步驟4進(jìn)行搜索,否則,以該點為新的搜索起始點跳轉(zhuǎn)到步驟2進(jìn)行搜索;步驟4采用方菱形搜索模板(SDSP)進(jìn)行搜索,如果BDM位于中心點c,則搜索結(jié)束,并以該點的位移作為運動矢量;如果BDM位于四個菱形頂點d,則以該點為新的搜索起始點,跳轉(zhuǎn)到步驟2進(jìn)行搜索;如果BDM位于四個方形頂點e,則以該頂點作為新的搜索起始點,循環(huán)執(zhí)行步驟4進(jìn)行搜索;整個搜索過程結(jié)束后得到該宏塊的運動矢量。
3.根據(jù)權(quán)利要求1所述的基于時空域相關(guān)性運動估計的視頻編碼方法,其特征在于所述的視頻編碼子程序,采用了基于運動補(bǔ)償/離散余弦變換(DCT)的混合編碼方法;除運動估計子程序這一部分外,本發(fā)明采用了國際視頻編碼標(biāo)準(zhǔn)H.264 JM6.0的基本編碼框架。
全文摘要
基于時空域相關(guān)性運動估計的視頻編碼方法,屬于計算機(jī)數(shù)字視頻編碼技術(shù)領(lǐng)域。本發(fā)明特征為提出一種利用在時間域和空間域上相鄰宏塊間運動相關(guān)性的運動估計方法。方法步驟依次為攝像機(jī)將目標(biāo)物狀態(tài)轉(zhuǎn)換成視頻信號,視頻信號通過采集卡轉(zhuǎn)換成數(shù)字視頻序列,并存放在視頻緩存中,作為系統(tǒng)輸入用于壓縮;計算機(jī)進(jìn)入完成對原始視頻幀進(jìn)行基于運動補(bǔ)償/DCT的混合編碼子程序,進(jìn)行視頻壓縮并生成碼流文件。本發(fā)明重點在于運動估計子程序,其方法主要為首先進(jìn)行相鄰宏塊間運動相關(guān)性的判斷,根據(jù)相關(guān)性不同而采用了不同的搜索策略,提高了運動估計的精度和速度。該系統(tǒng)有效地降低了運動估計的計算量,提高了視頻的實時性,同時也保證了視頻的編碼質(zhì)量。
文檔編號H04N5/917GK1482802SQ0315357
公開日2004年3月17日 申請日期2003年8月18日 優(yōu)先權(quán)日2003年8月18日
發(fā)明者薛金柱, 沈蘭蓀 申請人:北京工業(yè)大學(xué)