專利名稱::視頻編碼系統(tǒng)的運(yùn)動估計(jì)裝置及其方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種視頻編碼系統(tǒng),具體涉及一種運(yùn)動估計(jì)裝置及其方法。
背景技術(shù):
:二維的數(shù)字化圖象序列通常用象素點(diǎn)的YUV三分量來表示,由于一幅圖象的像素點(diǎn)數(shù)量非常多,需要大量的數(shù)據(jù)來表示,給圖象的存儲與傳輸帶來很大的麻煩,這就需要對圖象數(shù)據(jù)進(jìn)行壓縮,以減少其數(shù)據(jù)量。事實(shí)上,連續(xù)的圖象序列在空間和時(shí)間上有著非常高的相關(guān)性,可以利用這一特性來消除數(shù)據(jù)冗余以獲得有效的數(shù)據(jù)壓縮。消除空間冗余的方法是幀內(nèi)預(yù)測,為編碼一幀圖象的某個(gè)區(qū)域,可以使用本幀圖象內(nèi)與該區(qū)域相鄰部分的信息來預(yù)測。消除時(shí)間冗余信息的關(guān)^建技術(shù)是運(yùn)動補(bǔ)償,它的思想是,相鄰的兩幀圖象相似程度非常高,有些時(shí)候甚至是完全相同的,所以在編碼后一幀圖象的某一區(qū)域時(shí),可以用前一幀圖象的相似區(qū)域來預(yù)測,這樣做的好處是,只需要存儲或傳輸兩個(gè)區(qū)域位置的相對偏移和插值信息即可,由于插值信息包含的信息量非常小,可以用很少的數(shù)據(jù)位來表示,所以可以取得很高的壓縮效率。在現(xiàn)行的編解碼框架中,一般采用塊編碼結(jié)構(gòu),編碼的基本單位是16x16的像素塊。據(jù)此,在編碼當(dāng)前幀的某個(gè)像素塊時(shí),需要在前一幀(又稱為參考幀)中搜索匹配程度最高的象素塊,這個(gè)過程稱為運(yùn)動估計(jì)。運(yùn)動估計(jì)的過程大致可以描述如下,對于當(dāng)前幀的一個(gè)^f寺編碼塊(在此稱為目標(biāo)塊),需要在參考幀中找到一個(gè)最佳匹配塊??紤]到圖象的運(yùn)動特性以及計(jì)算的復(fù)雜度,不需要對整個(gè)參考幀進(jìn)行搜索,可以事先在參考幀中確定一個(gè)搜索窗口,只在搜索窗口中進(jìn)行搜索。在運(yùn)動估計(jì)過程中,評價(jià)一個(gè)參考塊與目標(biāo)塊的匹配程度的標(biāo)準(zhǔn)是這兩個(gè)塊的絕對誤差和(SAD:SumofAbsoluteDifference)。<formula>formulaseeoriginaldocumentpage5</formula>其中block為塊的邊長,一般為8或16,MB。(x,y)表示目標(biāo)塊中坐標(biāo)(x,y)的象素值,MBr(x,y)表示參考塊中坐標(biāo)(x,y)的象素值。SAD運(yùn)算是一種耗時(shí)(timeconsuming)運(yùn)算。找到最佳匹配的整像素參考塊之后,為提高匹配精度,一般還需要在整像素點(diǎn)周圍進(jìn)行分像素搜索,所謂分像素搜索就是對整像素參考塊進(jìn)行二分之一甚至四分之一差值,以期望更大程度的消除冗余,求得更小的SAD,插值運(yùn)算的耗時(shí)一般是SAD運(yùn)算的幾倍以上。以搜索窗口為48x48大小,目標(biāo)塊為16x16大小,搜索精確為四分之一像素為例,最原始的搜索算法是全搜索,也就是對搜索窗口中所有可能的參考塊進(jìn)行搜索,為求得最佳整像素參考塊,需要做32x32=984次SAD運(yùn)算。為得到最佳分像素參考塊,還需要對整像素點(diǎn)做5x5-1-24次插值運(yùn)算和24次SAD運(yùn)算。為提高搜索效率,人們提出了各種快速搜索算法,這些算法利用圖象的平滑特性,使用較小的SAD次數(shù)便可以得到搜索窗口中的局部最優(yōu)點(diǎn),以較小的性能損失換來了計(jì)算量的大量節(jié)省。常見的快速搜索算法有,二維對數(shù)搜索法,三步法,菱形搜索法,逸些算法能將整像數(shù)搜索的SAD次數(shù)減少到平均15-20次,而且搜索精度保持在90°/。以上。有關(guān)搜索的起始點(diǎn)的問題,最初的方法是在參考幀中與目標(biāo)塊在當(dāng)前幀中有著相同坐標(biāo)的參考塊開始搜索,也就是坐標(biāo)偏移為(0,0)的點(diǎn)開始。考慮到物體運(yùn)動的連續(xù)性,前一幀中某物體運(yùn)動的方向應(yīng)當(dāng)與當(dāng)前幀中同一物體的運(yùn)動方向相同,與此同時(shí),在同一幀內(nèi)部,位置相鄰的兩個(gè)塊中的物體,由于塊的大小很小,在大部分時(shí)候也有著相似的運(yùn)動方向。所以,搜索的起始點(diǎn)可以通過本幀內(nèi)相鄰塊的運(yùn)動向量和上一幀中相同位置塊的運(yùn)動向量來預(yù)測,這也有助于提高搜索的效率。我們知道,在便攜式應(yīng)用中,計(jì)算復(fù)雜度的大小是方案能否取得成功的關(guān)鍵,因?yàn)楸銛y式處理器考慮到功耗,面積等因素,其處理能力一般都較弱,而對視頻編碼這種對計(jì)算量要求很高的應(yīng)用,需要大量算法上和架構(gòu)上的優(yōu)化才能取得成功。普通的快速搜索算法雖然能較大程度的減少搜索次數(shù),但這對便攜式應(yīng)用還顯不夠。以菱形搜索為例,平均每個(gè)16x16的宏塊需要10-15次SAD運(yùn)算,和至少4次插值運(yùn)算。每次SAD需要256次減法,256次求絕對值,255次累加。假設(shè)插值采用的是四抽頭濾波器,那么每個(gè)插值點(diǎn)需要4次乘法,三次累加和一次移位運(yùn)算,對兩個(gè)方向均是分^^素的二維插值,需要兩倍于一維插值的運(yùn)算量。據(jù)統(tǒng)計(jì),一個(gè)16x16宏塊的運(yùn)動估計(jì)需要耗費(fèi)通用處理器15000至25000個(gè)周期,以CIF(352x288)分辯率圖象為例,以每秒30幀的速度編碼,運(yùn)動估計(jì)模塊需要200MMIPS以上的運(yùn)算量,再加上內(nèi)部存儲器的讀寫延遲,需要400-500MMIPS的運(yùn)算量。這對便攜式處理器來說無論在處理能力上還是在功耗上都是不能接受的。此外,搜索窗口的數(shù)據(jù)從內(nèi)部存儲器到高速緩存之間的傳輸需要占用大量的總線帶寬。以士16像素點(diǎn)的偏移極限為例,搜索窗口為(3x16)x(3x16)字節(jié)大小,再加上4抽頭插值所需的額外3個(gè)像素點(diǎn),共計(jì)52x52=2704字節(jié)大小。這樣一來,對于CIF(352x288)大小的運(yùn)動圖像,每編碼一幀需要傳輸2704x396=1.07兆字節(jié)的搜索窗口數(shù)據(jù),以30幀每秒計(jì)算,約需要32M字節(jié)每秒的總線帶寬。專利CN1440203A中提出的算法需要做一個(gè)全搜索,這對降低運(yùn)算復(fù)雜度沒有幫助;專利CN1177483C中提出了預(yù)測運(yùn)動向量搜索的方法,但其閾值是固定的,不能做到動態(tài)調(diào)整,因此也就不能有效減少整^象素和分像素搜索的次數(shù)。
發(fā)明內(nèi)容運(yùn)動估計(jì)是編碼器的關(guān)鍵算法,即使采用現(xiàn)有快速搜索算法,仍然需要耗費(fèi)200MMIPS以上(CIF30幀每秒的圖l象),這對通用型侵_攜式處理器來說,是無法承受的。此外,搜索窗口的傳輸需要占用30MByte/s以上的總線帶寬,這也是便攜式處理器無法接受的。當(dāng)前大多數(shù)快速搜索算法旨在提高整像素和分像素搜索的速度,減少每次搜索所需的SAD和插值運(yùn)算次數(shù)。本發(fā)明提出的一種算法旨在減少整像素和分像素搜索的次數(shù),本算法對符合要求的目標(biāo)塊,不需要做整像素和分像素搜索,只需要做一次預(yù)測點(diǎn)的插值和SAD計(jì)算即可找到較優(yōu)的分像素匹配塊,對其余的塊,我們依然采用普通的菱形快速搜索和分像素搜索的方法。另外,對搜索起始點(diǎn)進(jìn)行預(yù)測能使得大部分搜索在開始的時(shí)候就接近最優(yōu)點(diǎn),也因此提高了搜索效率,本發(fā)明中也釆納了這一方法。本發(fā)明的一個(gè)目的在于提供一種視頻編碼系統(tǒng)中的運(yùn)動估計(jì)裝置,所述裝置包括預(yù)測運(yùn)動向量發(fā)生模塊,用于產(chǎn)生目標(biāo)塊的預(yù)測運(yùn)動向量;預(yù)測目標(biāo)塊估計(jì)模塊,使用預(yù)測運(yùn)動向量對參考塊進(jìn)行插值得到預(yù)測目標(biāo)塊,并計(jì)算所述預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD);預(yù)測運(yùn)動向.量裁決模塊,比較所述絕對誤差和(SAD)與設(shè)定的閾值,基于比較結(jié)果決定是否進(jìn)行整像素與分像素運(yùn)動估計(jì);整像素與分像素運(yùn)動估計(jì)模塊,用于進(jìn)行整像素與分像素運(yùn)動估計(jì),在搜索窗口中尋找最佳整像素匹配塊。進(jìn)一步,還包括基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)^f亍調(diào)整的裝置。進(jìn)一步,基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整的裝置使用以下/>式調(diào)整下一幀的閾值SADthresholdn+1=SAD」hreshold,i,ASR廣OSR,、、+2xOSRn其中,SAD—thresholds表示第n+l幀圖像的絕對誤差和閾值,SADJhresholdn表示第n幀圖像的絕對誤差和閾值,AS&表示第n幀圖像的實(shí)際搜索比,OSRn表示第n幀圖像的最優(yōu)搜索比。進(jìn)一步,所述設(shè)定的閾值是通過對預(yù)定測試流的絕對誤差和閾值與實(shí)際搜索比進(jìn)行函數(shù)擬合而確定的。進(jìn)一步,所述設(shè)定的閾值是通過計(jì)算所述擬合的函數(shù)的拐點(diǎn)而確定的。進(jìn)一步,所述比較結(jié)果為當(dāng)所述絕對誤差和(SAD)小于設(shè)定的閾值時(shí),直接用預(yù)測運(yùn)動向量作為所述目標(biāo)塊的運(yùn)動向量;當(dāng)所述絕對誤差和(SAD)大于設(shè)定的閾值時(shí),進(jìn)行整像素與分像素運(yùn)動估計(jì)。本發(fā)明的第二個(gè)目的在于提供一種視頻編碼系統(tǒng)中的運(yùn)動估計(jì)方法,所述方法包括產(chǎn)生預(yù)測運(yùn)動向量;使用所述預(yù)測運(yùn)動向量對參考塊進(jìn)行插值得到預(yù)測目標(biāo)塊,計(jì)算所述預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD);比較所述絕對誤差和(SAD)與設(shè)定的閣值,基于比較結(jié)果決定是否進(jìn)行整像素與分^^素運(yùn)動估計(jì);整像素與分像素運(yùn)動估計(jì),首先用菱形算法搜索最佳整像素塊,然后使用分像素搜索得到最佳分像素塊。進(jìn)一步,還包括基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整。進(jìn)一步,所述基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整使用以下公式調(diào)整下一幀的閾值SADthresholds,=SADthreshold.、,ASRn-OSR,、、+2xOSRn乂其中,SAD—thresholds表示第n+1幀圖像的絕對誤差和閾值,SAD—thresholdn表示第n幀圖像的絕對誤差和閾值,ASRn表示第n幀圖像的實(shí)際搜索比,OSR。表示第n幀圖像的最優(yōu)搜索比。進(jìn)一步,所述設(shè)定的閾值是通過對預(yù)定測試流的絕對誤差和閾值與實(shí)際搜索比進(jìn)行函數(shù)擬合而確定的。進(jìn)一步,所述設(shè)定的闞值是通過計(jì)算所擬合的函數(shù)的拐點(diǎn)而確定的。進(jìn)一步,所述比較結(jié)果為當(dāng)所述絕對誤差和(SAD)小于設(shè)定的閾值時(shí),直接用預(yù)測運(yùn)動向量作為所述目標(biāo)塊的運(yùn)動向量;當(dāng)所述絕對誤差和(SAD)大于設(shè)定的閾值時(shí),進(jìn)行整像素與分像素運(yùn)動估計(jì)。經(jīng)過實(shí)際的測試,對大部分的視頻序列,本發(fā)明對50%以上的搜索是有效的,對某些運(yùn)動較少的低比特率序列,甚至可以達(dá)到90%以上的有效性。相對于單純的菱形搜索,本發(fā)明以犧牲PSNR0.1以內(nèi)的孩t小代價(jià),換得了至少2倍的速度提升。此外,本發(fā)明還能節(jié)省傳輸搜索窗口所需的總線帶寬。圖1為按照本發(fā)明的運(yùn)動估計(jì)模塊框架圖2是預(yù)測運(yùn)動向量發(fā)生器生成預(yù)測運(yùn)動向量過程的示意圖;圖3為在Matlab中采用三次樣條插值函數(shù)對Akiyo—cif測試流的擬合結(jié)果;圖4為計(jì)算閾值最優(yōu)時(shí)的ESR與0SR的函數(shù)關(guān)系式時(shí)使用的線性擬合圖5為動態(tài)調(diào)整閾值步驟的流程圖。具體實(shí)施方式.圖l是本發(fā)明的運(yùn)動估計(jì)模塊框架圖,包括預(yù)測運(yùn)動向量發(fā)生模塊101,預(yù)測運(yùn)動向量裁決模塊102,預(yù)測目標(biāo)塊估計(jì)模塊103,整像素與分像素運(yùn)動估計(jì)模塊104。本發(fā)明提出的運(yùn)動估計(jì)方法的各步驟在以上的4個(gè)模塊中執(zhí)行。本發(fā)明中,將目標(biāo)塊的運(yùn)動估計(jì)分為4個(gè)步驟。首先,執(zhí)行預(yù)測運(yùn)動向量產(chǎn)生步驟,通過預(yù)測運(yùn)動向量發(fā)生器產(chǎn)生預(yù)測運(yùn)動向量;然后,執(zhí)行預(yù)測目標(biāo)塊估計(jì)步驟,使用所述預(yù)測運(yùn)動向量對參考塊進(jìn)行插值得到預(yù)測目標(biāo)塊,計(jì)算所述預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD);之后,執(zhí)行預(yù)測運(yùn)動向量裁決步驟,通過比較所述絕對誤差和(SAD)與設(shè)定的閾值的大小,決定是否進(jìn)行整像素與分像素運(yùn)動估計(jì)步驟;最后,如果所述絕對誤差和(SAD)小于設(shè)定的閾值,則完成目標(biāo)塊的運(yùn)動估計(jì);否貝'J,執(zhí)行整像素與分像素運(yùn)動估計(jì)步驟,即首先用菱形算法搜索最佳整像素塊,然后使用分像素搜索得到最佳分像素塊。所謂整像素搜索,就是指在搜索窗口中尋找最佳整像素匹配塊的過程。分像素搜索是指對整像素匹配塊進(jìn)行適當(dāng)?shù)牟逯颠\(yùn)算,以期找到更高匹配程度的匹配塊的過程。這些過程都是為大家都共識的,因?yàn)楣墓δ芘c結(jié)構(gòu)會以不必要的細(xì)節(jié)掩蓋本發(fā)明,所以對其不進(jìn)行詳細(xì)描述。圖2是預(yù)測運(yùn)動向量發(fā)生模塊產(chǎn)生預(yù)測運(yùn)動向量過程的示意圖。當(dāng)前塊的位置是C塊203,其左,上,右上塊分別是L塊204,U塊201和UR塊202。它們的運(yùn)動向量分別是MVL,MVU,MVUR,每個(gè)向量包含水平和垂直方向的兩個(gè)分量。首先從MVL,MVU,MVUR的三者的水平分量中取中間值得到預(yù)測運(yùn)動向量的水平分量,再從它們的垂直分量中取中間值得到預(yù)測運(yùn)動向量的垂直分量,這就是所謂的"取中值法"。需要注意的一點(diǎn)是,如果L204,U201,UR202位置的塊不存在,則在生成預(yù)測運(yùn)動向量的過程中,將它們的運(yùn)動向量設(shè)為(0,0)。預(yù)測目標(biāo)塊估計(jì)至多需要一次插值和一次SAD運(yùn)算。這個(gè)過程是,首先以預(yù)測運(yùn)動向量的整數(shù)部分作為偏移從參考幀中取出一個(gè)參考塊,然后根據(jù)分像素部分查表得到相應(yīng)的插值系數(shù),對這個(gè)參考塊進(jìn)行插值得到一個(gè)預(yù)測目標(biāo)塊,最后再將這個(gè)預(yù)測目標(biāo)塊與目標(biāo)塊一起做一次SAD運(yùn)算。相對后續(xù)搜索所需要的至少4次插值和15-20次SAD運(yùn)算來說,是很小的一個(gè)運(yùn)算量。如果能夠讓搜索中止于此,將對搜索速度有一個(gè)^f艮大的提升。事實(shí)上我們也發(fā)現(xiàn),通過后續(xù)搜索所得到的匹配塊與預(yù)測目標(biāo)塊是一致的,有時(shí)雖然不一致,但相似度甚至不如預(yù)測目標(biāo)塊。如何能夠在作完預(yù)測目標(biāo)塊估計(jì)之后,就事先知道后續(xù)搜索是無效的呢?我們可以通過對預(yù)測目標(biāo)塊SAD設(shè)立閾值來解決問題。如前所述,我們從目標(biāo)塊的'左,,'上,,'上右,三個(gè)位置的運(yùn)動向量中采用"取中值法"挑選出一個(gè),作為目標(biāo)塊的預(yù)測運(yùn)動向量。然后使用該運(yùn)動向量計(jì)算參考塊得到相應(yīng)的SAD。如果該SAD比設(shè)定的閾值小,則直接用預(yù)測運(yùn)動向量作為本塊的運(yùn)動向量,否則繼續(xù)進(jìn)行后續(xù)搜索。為保證準(zhǔn)確性,閾值還需要?jiǎng)討B(tài)的調(diào)整,我們可以通過使用線性擬合算法來尋找"最優(yōu)搜索比,,與"有效搜索比"之間的函數(shù)關(guān)系式,從而找到動態(tài)調(diào)整最優(yōu)閾值的方法。后面將參照圖5作進(jìn)一步描述。此外,本發(fā)明提出的方法還可以節(jié)省大量內(nèi)存帶寬。例如,對于4抽頭濾波器,16x16的預(yù)測目標(biāo)塊估計(jì)至多需要19x19個(gè)像素點(diǎn),不需要把52x52大小的搜索窗口全部復(fù)制到高速緩存。我們可以在搜索的第一步時(shí)只復(fù)制19x19個(gè)像素點(diǎn)至高速緩存,只有當(dāng)預(yù)測目標(biāo)塊的SAD大于閾值時(shí),由于需要進(jìn)行執(zhí)行整像素與分像素運(yùn)動估計(jì)步驟,才需要將剩余的像素點(diǎn)復(fù)制過去。如果預(yù)測目標(biāo)塊估計(jì)的效率比較高的話,可以節(jié)省大量的內(nèi)存帶寬。事實(shí)上,經(jīng)過實(shí)際的測試,對大部分的視頻序列,本算法對50%以上塊是有效的,對某些運(yùn)動較少的低比特率序列,甚至可以達(dá)到90%以上的有效性。在本方法中,只有當(dāng)預(yù)測塊的SAD值大于閾值時(shí),才需要進(jìn)行后續(xù)的整像素和分像素搜索,我們把實(shí)際進(jìn)行的搜索次數(shù)稱為實(shí)際搜索次數(shù),將實(shí)際搜索次數(shù)與塊的個(gè)數(shù)相除得到實(shí)際搜索比(ActualSearchRation)。blocksSearchASR=(公式l)blocks對于一次整像素和分像素搜索,如果最終搜索到的匹配塊的SAD比預(yù)測目標(biāo)塊的SAD小,則稱為有效搜索,否則稱為無效搜索。將有效搜索次數(shù)與總共的搜索次數(shù)相除,得到有效搜索比(EffectiveSearchRation)。blocksEffectiveSearchESR=blocksSearch(公式2)以下是動態(tài)閾值的采樣和調(diào)整過程的推導(dǎo)。通過對MPEG4提供的7個(gè)標(biāo)準(zhǔn)測試流的測試,我們可以得到下表<table>tableseeoriginaldocumentpage11</column></row><table>表l:各測i式流的ESR在上表中可以看出,大部分的搜索都是無效的,也就是說預(yù)測點(diǎn)的SAD在大部分情況下都比通過整像素和分像素搜索所得到的最優(yōu)匹配塊的SAD小或者相等。因此,本發(fā)明中,在對一個(gè)目標(biāo)塊進(jìn)行搜索前先設(shè)定一個(gè)閾值,當(dāng)預(yù)測目標(biāo)塊估計(jì)得到的SAD小于該閾值時(shí)即停止后面的搜索,反之繼續(xù)。而對預(yù)測目標(biāo)塊SAD閾值的設(shè)定則成為了本算法的關(guān)鍵。事實(shí)上,若閾值定得過大,則會影響搜索效果,反之若定得過小,則基本上不會起什么作用。而且,該閾值對于各個(gè)不同的測試流也不是一成不變的,不同的測試流有著不同的最優(yōu)閾值。如果把閾值設(shè)為0,則所有的塊都要進(jìn)行搜索,此時(shí)一幅圖象的搜索次數(shù)等于塊的個(gè)數(shù)。在逐步增加閾值的情況下,搜索次數(shù)也會相應(yīng)的減少,當(dāng)然此時(shí)也會伴隨著搜索效果的降低,即圖像峰值信噪比(PSNR:PeakSignal-to-NoiseRatio)的降低。我們要做的事情是在搜索次數(shù)與性能損失之間找到一個(gè)平衡,爭取在最小性能損失的前提下使用最少的搜索次數(shù)得到最優(yōu)匹配塊。在對7個(gè)標(biāo)準(zhǔn)測試流的測試后,我們得到了SAD—threshold(絕對誤差和閾值),PSNR,ESR,ASR,bitrate(比特率,也就是每秒鐘的比特?cái)?shù))五者之間關(guān)系的數(shù)據(jù)。表2Hall—cif流測試數(shù)據(jù)(其中Bits/frame為每幀的比特?cái)?shù))<table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table>表3Container_cif流測試數(shù)據(jù)(其中Bits/frame為每幀的比特?cái)?shù))<table>tableseeoriginaldocumentpage13</column></row><table>200033.0273.677.949164表4Coastguard-cif流測試凄t據(jù)(其中Bits/frame為每幀的比特?cái)?shù))閾值PSNRESR(%)ASR(%)Bits/frame031.37729.81002188280031.376829.898218829.0031.376429.7496.3721875100031.37329.6392.5821888110031.36929.4886.2121903120031.36129.1278.821947130031.35528.3871.3821998140031.34127.664.422076150031.32726.6757.8922162160031.30925.6251.8922301170031.29124.17846.322415180031.26523.0841.322621190031.24121.7536.6822855200031.21320.5232.6723084210031.19319.1728.7423328220031.16217.9925.4423671250031.07914.818.524751表5Akiyo-cif流測試數(shù)據(jù)(其中Bits/frame為每幀的比特?cái)?shù))閾值PSNRESR(%)ASR(%)Bits/frame<table>tableseeoriginaldocumentpage15</column></row><table>表6Mother_daughter_cif流測試數(shù)據(jù)(其中Bits/frame為每幀的比特?cái)?shù))<table>tableseeoriginaldocumentpage16</column></row><table>表7Foreman_cif流測試數(shù)據(jù)(其中Bits/frame為每幀的比特?cái)?shù))<table>tableseeoriginaldocumentpage16</column></row><table>100033.03928.9762.9414452110033.01927.8156.7614535120032.99526.7651.1314631130032.98025.2345.714776140032.94724.06化0814940150032.91522.6836.8415122160032.88221.2632.9315380170032.8542029.715617180032.8261839526.9115898表3News-cif流測試數(shù)據(jù)(其中Bits/frame為每幀的比特?cái)?shù))閾值PSNRESR(%)ASR(%)Bits/frame034.66413.61100837530034.66413.6190.39837540034.66413.6182.2837550034.66213.6168.54838060034.663115460.92837370034.65913.4554.64838180034.64713.1447.03839790034.63012.6840.58409100034.60912.0734.878466110034.59011.3830.148504120034.56410.5325.718561130034.5379.6621,368654140034.5018.9317.728757<table>tableseeoriginaldocumentpage18</column></row><table>為了找到各個(gè)測試流的最優(yōu)閾值,需要對每個(gè)流的SAD-threshold和ASR進(jìn)行函數(shù)擬合,從而找到最優(yōu)的ASR值,圖3是在Matlab中采用三次樣條插值函數(shù)對Akiyo—cif測試流的擬合結(jié)果。通過計(jì)算函數(shù)的拐點(diǎn)可以得到該測試流的最優(yōu)闊值和此時(shí)的ASR分別是850和26.28%,也就是說,當(dāng)把閾值"i殳為850時(shí),只有26.28%的塊需要搜索。查表可以得到此時(shí)的PSNR損失為0.04,幾乎可以忽略。我們將最優(yōu)閾值對應(yīng)的實(shí)際搜索比稱為最優(yōu)搜索比率(OptimalSearchRation)。采用同樣的方法可以計(jì)算出其它測試流的最優(yōu)閾值和最優(yōu)搜索比,總結(jié)如下<table>tableseeoriginaldocumentpage18</column></row><table>圖4為考慮到計(jì)算的復(fù)雜度,采用線性擬合,得到閾值最優(yōu)時(shí)的ESR與OSR的函數(shù)關(guān)系式OSR=2*ESR+10whenESR<15,八丄-,、C公式3)OSR=1*ESR+20whenESR>=15圖5為動態(tài)調(diào)整閾值步驟的流程圖;以下參照圖5描述動態(tài)調(diào)整閾值的計(jì)算步驟,其中,P幀是指單向預(yù)測幀,通常以前一個(gè)P幀作為參考幀,來消除時(shí)間上的冗余,同時(shí)也將作為下一個(gè)P幀的參考幀。步驟l:編碼一個(gè)視頻段(G0P)501,并在此前預(yù)設(shè)blocks=0,blocks_Search=0,blocks—EffectiveSearch=0,SAD—threshold=SADfl步驟2:判斷是否為最后幀504,若為是,則結(jié)束;否則,對于每一個(gè)塊blocks++506;預(yù)測目標(biāo)塊估計(jì)使用"取中值法"從目標(biāo)塊的'左,,'上,,'上右,三個(gè)位置的運(yùn)動向量中挑選出預(yù)測運(yùn)動向量,將19x19的參考塊復(fù)制到高速緩存,使用預(yù)測運(yùn)動向量對參考塊插值得到預(yù)測目標(biāo)塊,并計(jì)算預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD)507;如果預(yù)測SAD小于閾值508,則預(yù)測運(yùn)動向量是最優(yōu)運(yùn)動向量,從而得到最優(yōu)運(yùn)動向量,然后繼續(xù)判斷是否為最后塊505,直至該P(yáng)幀的所有目標(biāo)塊都搜索完畢;否則,拷貝剩余的2343字節(jié)的搜索窗口至高速緩存,對該目標(biāo)塊實(shí)行整像素搜索和分像素搜索,得到最優(yōu)運(yùn)動向量和相應(yīng)的最優(yōu)SAD509;blocks—Search十+510;如果最優(yōu)SAD大于或等于預(yù)測SAD511,則預(yù)測運(yùn)動向量是最優(yōu)運(yùn)動向量,從而得到最優(yōu)運(yùn)動向量,然后繼續(xù)判斷是否為最后塊505,直至該P(yáng)幀的所有目標(biāo)塊都^:索完畢;否則,blocks—EffectiveSearch++512,實(shí)際估計(jì)得到的運(yùn)動向量是最優(yōu)運(yùn)動向量,/人而^尋到最優(yōu)運(yùn)動向量;步驟3:繼續(xù)步驟2,判斷是否為最后塊505,直至該P(yáng)幀的所有目標(biāo)塊都搜索完畢。步驟4:分別利用公式(l),(2),(3)初始化數(shù)據(jù),即計(jì)算該P(yáng)幀的ESR,ASR和0SR502;步驟5:使用以下公式修改下一P幀的閾值<formula>formulaseeoriginaldocumentpage19</formula>其中,SAD」hreshold^表示第n+1幀圖像的絕對誤差和閾值,SADJhresholdn表示第n幀圖像的絕對誤差和閾值,ASR。表示第n幀圖像的實(shí)際搜索比,OSRn表示第n幀圖像的最優(yōu)搜索比。步驟6:為了防止誤差累積,到下一個(gè)視頻段(GOP)時(shí),重新設(shè)定SAD_threshold=SAD0,但blocks,blocks-Search,blocks_EffectiveSearch依然有效。以上所述,僅為本發(fā)明中的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到的變換或替換,都應(yīng)涵蓋在本發(fā)明的包含范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。權(quán)利要求1.一種視頻編碼系統(tǒng)中的運(yùn)動估計(jì)裝置,其特征在于,包括預(yù)測運(yùn)動向量發(fā)生模塊,用于產(chǎn)生目標(biāo)塊的預(yù)測運(yùn)動向量;預(yù)測目標(biāo)塊估計(jì)模塊,使用預(yù)測運(yùn)動向量對參考塊進(jìn)行插值得到預(yù)測目標(biāo)塊,并計(jì)算所述預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD);預(yù)測運(yùn)動向量裁決模塊,比較所述絕對誤差和(SAD)與設(shè)定的閾值,基于比較結(jié)果決定是否進(jìn)行整像素與分像素運(yùn)動估計(jì);整像素與分像素運(yùn)動估計(jì)模塊,用于進(jìn)行整像素與分像素運(yùn)動估計(jì),在搜索窗口中尋找最佳整像素匹配塊。2.根據(jù)權(quán)利要求1所述的裝置,其特征在于,還包括基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整的裝置。3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整的裝置使用以下公式調(diào)整下一幀的閾值SAD—thresholdn+1=SAD—threshold,,ASR_OSR,、1+2xOSR其中,SADJhreshold^表示第n+1幀圖像的絕對誤差和閾值,SAD—threshold表示第n幀圖像的絕對誤差和閾值,ASK表示第n幀圖像的實(shí)際搜索比,OSRn表示第n幀圖像的最優(yōu)搜索比。4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述設(shè)定的閾值是通過對預(yù)定測試流的絕對誤差和閾值與實(shí)際搜索比進(jìn)行函數(shù)擬合而確定的。5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述設(shè)定的閾值是通過計(jì)算所述擬合的函數(shù)的拐點(diǎn)而確定的。6.根據(jù)權(quán)利要求1所述的裝置,其特征在于,所述比較結(jié)果為當(dāng)所述絕對誤差和(SAD)小于設(shè)定的閾值時(shí),直接用預(yù)測運(yùn)動向量作為所述目標(biāo)塊的運(yùn)動向量;當(dāng)所述絕對誤差和(SAD)大于設(shè)定的閾值時(shí),進(jìn)行整像素與分像素運(yùn)動估計(jì)。7.—種視頻編碼系統(tǒng)中的運(yùn)動估計(jì)方法,其特征在于,包括產(chǎn)生預(yù)測運(yùn)動向量;使用所述預(yù)測運(yùn)動向量對參考塊進(jìn)行插值得到預(yù)測目標(biāo)塊,計(jì)算所述預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD);比較所述絕對誤差和(SAD)與設(shè)定的閾值,基于比較結(jié)果決定是否進(jìn)行整像素與分像素運(yùn)動估計(jì);整寸象素與分^象素運(yùn)動估計(jì),首先用菱形算法搜索最佳整^f象素塊,然后使用分像素搜索得到最佳分像素塊。8.根據(jù)權(quán)利要求7所述的方法,其特征在于,還包括基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整。9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述基于當(dāng)前幀的設(shè)定閾值對下一幀的閾值進(jìn)行調(diào)整使用以下^^式調(diào)整下一幀的閾值<formula>formulaseeoriginaldocumentpage3</formula>其中,SAD」hreshold^表示第n+l幀圖像的絕對誤差和閾值,SAD—thresholdn表示第n幀圖像的絕對誤差和閾值,ASK表示第n幀圖像的實(shí)際搜索比,OSRn表示第n幀圖像的最優(yōu)搜索比。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述設(shè)定的閾值是通過對預(yù)定測試流的絕對誤差和閾值與實(shí)際搜索比進(jìn)行函數(shù)擬合而確定的。11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述設(shè)定的閾值是通過計(jì)算所擬合的函數(shù)的拐點(diǎn)而確定的。12.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述比較結(jié)果為當(dāng)所述絕對誤差和(SAD)小于設(shè)定的閾值時(shí),直接用預(yù)測運(yùn)動向量作為所述目標(biāo)塊的運(yùn)動向量;當(dāng)所述絕對誤差和(SAD)大于設(shè)定的閾值時(shí),進(jìn)行整像素與分像素運(yùn)動估計(jì)。全文摘要本發(fā)明是一種視頻編碼系統(tǒng)中的運(yùn)動估計(jì)裝置及其方法,所述方法包括產(chǎn)生預(yù)測運(yùn)動向量;使用所述預(yù)測運(yùn)動向量對參考塊進(jìn)行插值得到預(yù)測目標(biāo)塊,計(jì)算所述預(yù)測目標(biāo)塊與目標(biāo)塊之間的絕對誤差和(SAD);比較所述絕對誤差和(SAD)與設(shè)定的閾值,基于比較結(jié)果決定是否進(jìn)行整像素與分像素運(yùn)動估計(jì);整像素與分像素運(yùn)動估計(jì),首先用菱形算法搜索最佳整像素塊,然后使用分像素搜索得到最佳分像素塊。本方法可以減少整像素和分像素搜索的次數(shù)。文檔編號H04N7/26GK101227614SQ20081006597公開日2008年7月23日申請日期2008年1月22日優(yōu)先權(quán)日2008年1月22日發(fā)明者王立波申請人:炬力集成電路設(shè)計(jì)有限公司