專利名稱:混合視頻壓縮方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻壓縮,特別涉及一種用于壓縮視頻幀序列的方法和裝置。
多媒體在日常生活中扮演著一個(gè)日益重要的角色。幾乎在任何地方都可以發(fā)現(xiàn)數(shù)字視頻圖像(運(yùn)動(dòng)圖像)。
數(shù)字視頻中包含的信息量要求改進(jìn)數(shù)字視頻系統(tǒng)的傳輸帶寬以及要求更高容量的存儲(chǔ)設(shè)備。在后一個(gè)領(lǐng)域中的一個(gè)發(fā)展證據(jù)是近年來(lái)閃存半導(dǎo)體存儲(chǔ)器模塊容量的飛速增長(zhǎng)。不幸的是,數(shù)字視頻的信息內(nèi)容非常多,這使得使用半導(dǎo)體存儲(chǔ)器來(lái)存儲(chǔ)視頻數(shù)字?jǐn)?shù)據(jù)是不可能的或至少是十分昂貴的。
例如,在無(wú)壓縮的情況下,一分鐘的全解析度(D1)數(shù)字視頻需要1,866G字節(jié)存儲(chǔ)容量。帶寬可能達(dá)到248000kbit/s。
在20世紀(jì)九十年代早期,出現(xiàn)了名為MPEG1的視頻編碼系統(tǒng),該系統(tǒng)能夠?qū)?shù)字視頻數(shù)據(jù)量減少到大概原始的1/30。由于質(zhì)量問(wèn)題,對(duì)這個(gè)系統(tǒng)進(jìn)行了改進(jìn),并且名為MPEG2的視頻編碼器誕生了。這主要用于DVD和DVB系統(tǒng)。作為該系統(tǒng)的一個(gè)改進(jìn)版本,MPEG4被設(shè)計(jì)用于面向互聯(lián)網(wǎng)的、所謂的流媒體。
本發(fā)明的目標(biāo)是一個(gè)高效的視頻數(shù)據(jù)壓縮系統(tǒng)。所提出的系統(tǒng)使得在半導(dǎo)體存儲(chǔ)器模塊中存儲(chǔ)視頻數(shù)據(jù)成為可能,允許利用低成本的RAM存儲(chǔ)器模塊來(lái)存儲(chǔ)視頻數(shù)據(jù),這種RAM模塊在計(jì)算機(jī)市場(chǎng)上很普遍。這樣一種非機(jī)械的存儲(chǔ)系統(tǒng)(即不包含運(yùn)動(dòng)部件的存儲(chǔ)系統(tǒng))可被有利地用在電視機(jī)和用于衛(wèi)星和有線電視應(yīng)用的所謂的機(jī)頂盒中,用于廣播節(jié)目的中間存儲(chǔ),同時(shí)還作為常規(guī)磁帶錄像機(jī)的一種替代品。
應(yīng)用本發(fā)明壓縮方法的編碼系統(tǒng)還可被有利地用于代替常規(guī)攝像機(jī)的機(jī)械磁帶記錄系統(tǒng),例如在閃存中存儲(chǔ)數(shù)字視頻數(shù)據(jù)。
所提出的混合視頻壓縮編碼系統(tǒng)使得數(shù)字?jǐn)?shù)據(jù)流的帶寬可被減少到300-600kbit/s,同時(shí)保留好的視頻質(zhì)量,這意味著對(duì)于兩小時(shí)的視頻僅僅需要4-500M字節(jié)的存儲(chǔ)空間。
I.
背景技術(shù):
已經(jīng)有多種不同的方法被設(shè)計(jì)用于壓縮視頻幀序列。
在視頻幀的編碼過(guò)程中,為了維持期望的質(zhì)量和期望的總體數(shù)據(jù)長(zhǎng)度,編碼數(shù)據(jù)量總是在最小和最大極限之間動(dòng)態(tài)地變化。
通常,已知的軟件程序根據(jù)對(duì)一個(gè)由x個(gè)幀構(gòu)成的序列計(jì)算出的平均編碼幀長(zhǎng)度來(lái)執(zhí)行壓縮控制。如果平均長(zhǎng)度超過(guò)了上一個(gè)平均長(zhǎng)度值,壓縮將會(huì)更強(qiáng)(壓縮比增加)。如果平均長(zhǎng)度小于上一個(gè)值,壓縮比就會(huì)在指定的最小和最大極限值之間減小。
通常通過(guò)選擇“更強(qiáng)的”量化來(lái)增加壓縮比(在變換期間執(zhí)行了一個(gè)“舍入”操作,見(jiàn)下文)。那會(huì)引起更高的錯(cuò)誤率和噪聲。錯(cuò)誤通常在視覺(jué)上明顯且干擾的,特別是在1Mbit/s的情況下。由于可壓縮性因幀而異,在恒定期望質(zhì)量的情況下,通常很難維持所期望的平均幀長(zhǎng)度。
通常最小和最大長(zhǎng)度值不能被設(shè)置過(guò)高,因?yàn)槟菢訉?huì)使得控制范圍變得太寬,并且編碼長(zhǎng)度在過(guò)大的尺度上變化。通常的情況是,指定的最小值不能提供所期望的質(zhì)量,因而有必要進(jìn)一步提高壓縮比。
I.1.MPEG方法MPEG是用于壓縮視頻數(shù)據(jù)的最普遍、最已知的方法之一??梢哉J(rèn)為它是一種混合編碼方法,因?yàn)樗Y(jié)合了基于空間冗余的壓縮和基于時(shí)間冗余的壓縮。
基于空間冗余的方法要么通過(guò)減少細(xì)節(jié)來(lái)減少幀的信息內(nèi)容,要么通過(guò)識(shí)別并且利用幀中的重現(xiàn)特征。在另一方面,基于時(shí)間冗余的壓縮方法利用先前和后續(xù)幀,并且僅僅對(duì)這些變化進(jìn)行編碼。
JPEG是用于靜態(tài)圖像壓縮的已知方法之一。該方法也是基于利用空間冗余。將要被壓縮的圖像劃分成塊,并且使用離散余弦變換來(lái)減少這些塊的信息內(nèi)容。
為了更加容易理解本發(fā)明的創(chuàng)新特征,讓我們簡(jiǎn)要地回顧已知的MPEG系統(tǒng)的操作。該系統(tǒng)的操作如
圖1所示,圖1顯示了其功能單元。接收到的要被壓縮的塊通過(guò)輸入線1被傳遞給選擇器2。選擇器2決定給定塊是否是一個(gè)內(nèi)部塊、幀間塊或預(yù)測(cè)塊,并對(duì)其作相應(yīng)處理。已經(jīng)通過(guò)DCT(離散余弦變換)模塊3和量化模塊4的塊,在熵編碼模塊13中被編碼并且通過(guò)視頻多路復(fù)用器14寫(xiě)出到輸出15,進(jìn)入即將被傳輸或存儲(chǔ)的壓縮輸出數(shù)據(jù)流。內(nèi)部/幀間塊的變換數(shù)據(jù)(見(jiàn)下面的解釋)是由反量化模塊5,IDCT(反余弦變化)模塊6和選擇器7被重建的,并且這些數(shù)據(jù)最后被寫(xiě)入?yún)⒖紟鎯?chǔ)器8。如下面所詳細(xì)解釋的那樣,量化模塊4在本質(zhì)上用量化因子來(lái)除DCT變換塊的元素(DCT系數(shù))。這些系數(shù)是由反量化模塊5進(jìn)行重建的,實(shí)際上是通過(guò)將它們與量化因子相乘。換句話說(shuō),反量化模塊試圖將DCT系數(shù)的原始值至少恢復(fù)到整除引起的錯(cuò)誤所允許的可能的程度。這樣做的目的是對(duì)每一幀或一幀內(nèi)的每一塊立即進(jìn)行解碼。由于該方法使用已解碼的幀作為對(duì)下一幀進(jìn)行編碼的參考,有必要進(jìn)行立即解碼。這個(gè)過(guò)程不包括熵編碼(解碼),因?yàn)榭紤]到熵編碼不會(huì)引起在已解碼的參考幀中應(yīng)當(dāng)加以考慮的信息丟失,它將是多余的。
第一個(gè)幀沒(méi)有參考,這意味著它總是所謂的內(nèi)部幀(I幀)。因此,對(duì)于第一個(gè)幀,重復(fù)上面的過(guò)程直道整個(gè)I-型幀被處理。使用前導(dǎo)或后繼幀作為參考幀的幀或塊被分別稱為P-型和B-型幀/塊。
下一個(gè)接收到的幀的塊被提供給運(yùn)動(dòng)估計(jì)模塊10,該單元試圖從存儲(chǔ)在參考幀存儲(chǔ)器8中的參考幀中為要被編碼的塊尋找一個(gè)參考?jí)K。
運(yùn)動(dòng)估計(jì)模塊10使用找到的參考?jí)K執(zhí)行運(yùn)動(dòng)補(bǔ)償,接著由預(yù)測(cè)模塊9從參考?jí)K中減去了要被編碼的(原始)塊,差被傳遞給執(zhí)行上述變換的模塊到選擇器2,DCT變換模塊3和量化模塊4,接著到熵編碼模塊13,以及最后到多路復(fù)用器14。作為運(yùn)動(dòng)補(bǔ)償?shù)慕Y(jié)果而產(chǎn)生的運(yùn)動(dòng)向量(MV)由熵編碼模塊12進(jìn)行編碼并且被傳遞給多路復(fù)用器14,該多路復(fù)用器將運(yùn)動(dòng)向量插入到輸出數(shù)據(jù)流15。
模塊7是一個(gè)選擇器/和數(shù)模塊,該模塊對(duì)I-型塊不做變動(dòng),而在P-型和B-型塊的情況下,將找到的參考?jí)K與反變換的差數(shù)相加。這樣重建得到的塊最后被寫(xiě)入?yún)⒖紟鎯?chǔ)器。
在搜索中發(fā)現(xiàn)的位置被熵編碼模塊12轉(zhuǎn)換成向量并且編碼。
下面將更加詳細(xì)的描述這些操作。
I.2.1.
依賴時(shí)間冗余的壓縮系統(tǒng)僅僅對(duì)連續(xù)幀的變化部分進(jìn)行編碼。實(shí)際上,這是通過(guò)將幀劃分成塊并且將各個(gè)塊與先前或后續(xù)幀的一個(gè)搜索范圍內(nèi)的像素逐個(gè)像素地進(jìn)行比較而實(shí)現(xiàn)的。這個(gè)過(guò)程如圖2所示,圖2顯示了正在位于先前幀16的搜索范圍21或后續(xù)幀18的搜索范圍19中搜索一個(gè)與幀17的給定塊20最佳匹配的參考?jí)K。該參考?jí)K可以位于任何地方,并不需要與參考幀16或18中指定的搜索范圍(灰色顯示)相一致。當(dāng)然在這種情況下,會(huì)出現(xiàn)在給定參考幀中參考搜索不成功的現(xiàn)象。顯然,并未因參考搜索而將參考幀17,18劃分成塊,圖2顯示的塊僅僅是為了更好的概述。
使用下面的表達(dá)式來(lái)進(jìn)行比較MSE(k,l;u,v)=1MNΣi=0M-1Σj=0N-1(In(k+i,l+j)-In-1(k+i+u,l+j+v))2]]>其中MSE是所謂的均方誤差,在本質(zhì)上對(duì)待編碼塊與找到的參考?jí)K的各個(gè)像素的比較值進(jìn)行了量化,所述的比較是逐個(gè)像素進(jìn)行的,下標(biāo)k,l是確定待編碼塊的位置下標(biāo),下標(biāo)u,v是指向位于參考幀中的搜索范圍的下標(biāo),以及M,N是該塊的水平和垂直尺寸。
位于包含有待編碼塊的幀緊前面或緊后面的幀被統(tǒng)一稱為參考幀。
在搜索過(guò)程當(dāng)中,在參考幀中建立了一個(gè)典型尺寸為-32/32像素的搜索范圍。當(dāng)前待編碼塊的位置將被指定為搜索范圍的中心。就是說(shuō),如果編碼過(guò)程當(dāng)前是在位置10,10,那么這個(gè)位置將會(huì)是參考幀中搜索范圍的中心。用當(dāng)前塊逐步地掃描該范圍并且在每一步計(jì)算出誤差(上面指定的MSE值)。最佳參考候選將會(huì)是在該處的搜索給出最小誤差的位置,就是說(shuō),與當(dāng)前待編碼塊最佳匹配的塊?;谠撜`差值,可以確定該搜索是否可以被認(rèn)為是成功的。在成功搜索的情況下,查找到的參考?jí)K位置是在全解析度模式中獲得的。然而,在大多數(shù)情況下,搜索結(jié)果是不滿意的。
如果我們更加詳細(xì)地檢查該問(wèn)題,很快就會(huì)發(fā)現(xiàn)導(dǎo)致過(guò)量錯(cuò)誤(因而不成功的搜索)的原因在于錯(cuò)誤估計(jì)方法。例如,在噪聲幀的情況下,即使在最佳位置兩個(gè)塊都不可能是相同的,所述塊的信息內(nèi)容僅僅因?yàn)樵肼暥煌?。?dāng)塊的位移不是嚴(yán)格的像素尺寸的倍數(shù)時(shí),位移在兩個(gè)整數(shù)像素之間結(jié)束,即實(shí)際位移僅可以被嚴(yán)格地表示為像素尺寸的分?jǐn)?shù),這種情況也會(huì)出現(xiàn)。
因此,為了在當(dāng)前塊及其參考之間提供一個(gè)適當(dāng)?shù)钠ヅ?,?yīng)當(dāng)過(guò)濾掉噪聲以及其它干擾因素。通常低通濾波器被用于此目的。所述的濾波器根據(jù)預(yù)先確定的采樣頻率執(zhí)行高頻部分的衰減,并且因而能夠在某種程度上抑制圖片噪聲。濾波器通常通過(guò)將每個(gè)像素與其旁邊和/或上面的像素或兩者進(jìn)行平均來(lái)對(duì)誤差進(jìn)行補(bǔ)償。例如,所謂的1/2像素解析度參考幀是通過(guò)在原始幀的每?jī)蓚€(gè)相鄰像素之間插入一個(gè)像素來(lái)產(chǎn)生的,插入像素的值為兩個(gè)相鄰像素的平均值。如果從每?jī)蓚€(gè)相鄰像素的平均值創(chuàng)建新像素,使用該新像素來(lái)創(chuàng)建一個(gè)與原始幀解析度相同的新幀,則結(jié)果基本上相同。實(shí)際上,在水平插值的情況下,這個(gè)幀相對(duì)原始幀被向左移了1/2像素,并且在垂直插值的情況下向上移了1/2像素。
I.2.2.
對(duì)于誤差補(bǔ)償,通常建議雙線性濾波器。雙線性濾波器包括創(chuàng)建三個(gè)插值(過(guò)濾)參考幀,即一個(gè)垂直插值,一個(gè)水平插值,以及一個(gè)既垂直又水平插值。應(yīng)當(dāng)記住一個(gè)參考幀被解碼(重建)為一個(gè)編碼的內(nèi)部(或幀間)幀的變種。這么做是為了防止基于給定參考幀的更多幀被已解碼的參考幀中存在的量化誤差進(jìn)一步惡化。
在下一個(gè)階段中,搜索是以1/2像素解析度執(zhí)行的(就是說(shuō),它是在經(jīng)過(guò)濾波的參考幀中繼續(xù)的)。根據(jù)匹配的x,y位置的位元,利用表達(dá)式S=(y&1)*2+x&1(這里&代表一個(gè)邏輯AND操作)生成了一個(gè)選擇器S。
接著,建立了一個(gè)范圍為-1/+1,-1/+1,即在點(diǎn)(x+(-1/+1)),y+(-1/+1))的新的搜索范圍,用在第一搜索階段(在未濾波參考搜索)中發(fā)現(xiàn)的最佳塊的位置作為該范圍的中心。
下面使用新的范圍重復(fù)搜索。選擇器根據(jù)位置來(lái)挑選所需的插值參考幀并且在幀中挑選由所述位置確定的特定塊,并且計(jì)算相對(duì)于當(dāng)前塊的平方誤差。在搜索的末尾,保留了誤差值最小的位置。如此,從選擇器所指的誤差最小的塊的像素中減去當(dāng)前塊的像素。這點(diǎn)被顯示在圖3中。在參考幀23中找到了一個(gè)與待編碼幀22的塊24相似或相同的塊。當(dāng)發(fā)現(xiàn)最佳匹配塊25時(shí),將其內(nèi)容通過(guò)數(shù)據(jù)線28提供給Sad/Sub(比較)模塊29,根據(jù)選擇器在位置值的基礎(chǔ)上利用表達(dá)式S=(y&1)*2+x&1所做的選擇,所述的比較是使用下述一種參考幀執(zhí)行的未濾波的參考幀,水平插值(濾波)參考幀,垂直插值(濾波)參考幀或雙向插值(濾波)參考幀。這個(gè)過(guò)程僅僅涉及一個(gè)未濾波參考幀,該參考幀在本地被濾波(插值)。在前面濾波的三個(gè)參考幀(水平,垂直,以及雙向插值)可用的情況下,該過(guò)程是相同的。在那種情況下,選擇器從上述備選(未濾波幀以及三個(gè)不同的濾波幀)中選擇一個(gè)適當(dāng)?shù)膮⒖紟⑶姨峁┨幱谖恢脁,y的塊,用于進(jìn)一步的比較和處理。
最后,或者是平方誤差或者,在最小誤差塊的情況下,參考?jí)K25和待編碼塊24之間的差異被傳遞給輸出30。
I.2.3.
接著,得到的差異(如果搜索成功)或者當(dāng)前塊本身(如果搜索不成功)被利用DCT變換從空間表示轉(zhuǎn)換到頻率表示。這樣通過(guò)所謂的量化操作減少了不必要的數(shù)據(jù)精度。這在本質(zhì)上涉及丟棄由DCT產(chǎn)生的高階系數(shù),因?yàn)檫@些系數(shù)通常很小。剩下的DCT系數(shù)也要么很小要么是零值,這些值以及上面建立的位置值可以用熵編碼有效地編碼。這個(gè)過(guò)程顯示在圖4-5中。
圖4顯示了對(duì)于一個(gè)內(nèi)部幀的編碼過(guò)程的示意性框圖。輸入幀31具有Y,UV格式,其中Y包含亮度信息并且UV包含顏色差異(色度)信息。幀31包括例如8×8像素大小的塊。因而,各個(gè)塊是8×8的矩陣,具有與給定的幀相關(guān)聯(lián)的單獨(dú)的Y和UV塊。在下面,如果沒(méi)有特別指出,Y和UV塊同樣地被編碼,因此在圖4中它們一般地用矩陣f(i,j)表示。在步驟31中在給定塊上執(zhí)行DCT變換的結(jié)果是由F(u,v)表示的矩陣,該矩陣也包括8×8的元素。在步驟33中修改矩陣F(u,v)單獨(dú)的元素,我們獲得了量化后的矩陣Fq(u,v),在圖4中用參考數(shù)字37指代。正如在前面已經(jīng)指出的那樣,量化在本質(zhì)上涉及減少不必要的數(shù)據(jù)精度,實(shí)際上是通過(guò)丟棄矩陣F(u,v)的某些元素實(shí)現(xiàn)的。從而,從此以后,原始?jí)K中包含的信息被包含在量化矩陣37中。在步驟34中使用差分脈沖編碼調(diào)制(DPCM)減少了量化矩陣37的第一個(gè)元素,即所謂的DC系數(shù)。這在本質(zhì)上意味具有相同數(shù)量級(jí)的后續(xù)塊的DC系數(shù)被彼此相減,并且以這種方式獲得了小振幅的DC系數(shù),這些DC系數(shù)可以由步驟36中執(zhí)行的靜態(tài)霍夫曼熵編碼更加有效地編碼。所述矩陣的其它元素,即所謂的AC系數(shù),使用所謂的游程編碼進(jìn)行編碼,對(duì)于重復(fù)出現(xiàn)的系數(shù)游程編碼僅僅記錄出現(xiàn)次數(shù)和系數(shù)值(下面詳細(xì)描述了該過(guò)程)。DC和AC系數(shù)是從8×8量化矩陣中遵循所謂的Z字形(Zig-Zag)掃描順序提取的,如在矩陣37中所示的那樣。因此這些系數(shù)是以頻率增加的順序被提供給熵編碼器的,從低頻系數(shù)開(kāi)始,一直到高頻系數(shù)。
I.2.4.
在不是內(nèi)部塊而是幀間編碼塊的情況下,圖5顯示了一個(gè)匹配和補(bǔ)償?shù)腜-型塊的編碼。通過(guò)搜索來(lái)為待編碼塊42找到一個(gè)參考?jí)K43。塊42位于其原始位置40,在當(dāng)前待編碼幀的塊38之間。參考?jí)K43可以位于參考數(shù)字41所指示的位置。搜索是通過(guò)把待編碼塊42步進(jìn)穿過(guò)參考幀的搜索范圍39來(lái)執(zhí)行的。如果找到最佳匹配,就從參考?jí)K43中減去待編碼塊42(或相反)來(lái)生成待編碼塊42和匹配的參考?jí)K43之間的誤差。以這種方式,獲得了誤差的亮度44和色度45分量。在步驟46中,這些分量要經(jīng)歷DCT變換,量化,以及游程編碼,并且最后在步驟47中,游程編碼數(shù)據(jù)要經(jīng)歷進(jìn)一步的熵編碼。
由于原始幀在解碼過(guò)程中不能作為參考,只有已解碼的幀能被用作參考。這就是為什么有必要在編碼過(guò)程中從已經(jīng)編碼的數(shù)據(jù)中重建參考幀。這么做最簡(jiǎn)單的方式是在量化之后立即執(zhí)行反量化和反DCT變換。
在參考搜索成功的情況下,匹配的參考?jí)K被添加到反變換塊,并且反變換塊被寫(xiě)入當(dāng)前幀的當(dāng)前位置。因?yàn)檫@個(gè)步驟中獲得的幀將用作下一個(gè)幀的參考,當(dāng)前幀的所有塊都需要被更新。
如果參考搜索成功,該塊被劃分為幀間塊,而在搜索不成功時(shí)該塊被劃分為內(nèi)部塊。塊分類數(shù)據(jù)對(duì)于解碼器是必要的,因?yàn)樗鼈冎赋鲈搲K在編碼過(guò)程中是如何生成的。幀是按照相同的原則被分類的。
如果沒(méi)有找到一個(gè)幀的參考(或者如果該幀相對(duì)參考幀發(fā)生的變化大到這樣一種程度差分編碼將需要與原始幀編碼幾乎相同的數(shù)據(jù)量),使用DCT對(duì)整個(gè)幀進(jìn)行轉(zhuǎn)換并且該幀被劃分為I-幀。如果一個(gè)幀僅僅使用前導(dǎo)幀作為參考,它被劃分為P-幀,而在該幀使用前后幀作為參考的情況下,它被劃分為B-幀。
圖6示例了對(duì)于B-幀,編碼系統(tǒng)既在前導(dǎo)幀48又在后續(xù)幀50中來(lái)搜索待編碼塊C的一個(gè)參考49,最后要么讓產(chǎn)生最小誤差的幀作為參考,要么讓兩幀的線性插值平均值作為參考。
首先計(jì)算出匹配塊P和C的MSE值,接著計(jì)算塊F和C的MSE。接下來(lái),該系統(tǒng)計(jì)算表達(dá)式0.5*(P+F)產(chǎn)生的塊和塊C的MSE,并且最終對(duì)產(chǎn)生最小MSE的備選塊進(jìn)行編碼。就是說(shuō),在塊C的MSE與前導(dǎo)幀48最相關(guān)時(shí),所述幀48的塊P變成了塊C的參考?jí)K。在最佳結(jié)果是由緊隨幀49的幀50產(chǎn)生的情況下,那么幀50的塊F就變成了C的參考,以及如果最佳結(jié)果是利用F和P的平均獲得時(shí),那么這兩塊都被用作C的參考。如果沒(méi)有足夠好的結(jié)果,那么該塊被編碼成一個(gè)內(nèi)部塊。塊描述符結(jié)構(gòu)必須總是顯示出參考的源,就是說(shuō),塊C是如何編碼的。
I.2.5.
在參考搜索成功的情況下,所建立的參考位置被轉(zhuǎn)換成了向量并且這些向量被編碼。這些向量指定了待編碼塊相對(duì)于參考的位移幅度和方向。
可以由以下事實(shí)說(shuō)明使用DCT的合理性在部分系數(shù)被刪除(被清零)的情況下,反DCT變換能夠以很好的近似重建原始數(shù)據(jù)塊。
可能會(huì)出現(xiàn)這個(gè)問(wèn)題既然DCT僅僅是FFT的一個(gè)變種,為什么使用DCT?答案在于經(jīng)驗(yàn)證明對(duì)于視頻編碼DCT給出了比FFT更好的功能近似。在圖7中用一些具體值作為例子說(shuō)明了這一點(diǎn)。FFT系數(shù)52和DCT系數(shù)53是通過(guò)在輸入數(shù)據(jù)51上分別執(zhí)行FFT和DCT變換產(chǎn)生的。量化之后(就是說(shuō),丟棄或刪簡(jiǎn)系數(shù)之后),獲得了刪簡(jiǎn)的FFT系數(shù)54和刪簡(jiǎn)的DCT系數(shù)55。反變換后,獲得了IFFT重建數(shù)據(jù)56和I DCT重建數(shù)據(jù)57。用曲線58和59描繪重建數(shù)據(jù),可以看出FFT對(duì)于系數(shù)刪簡(jiǎn)更加敏感。
I.2.6.
量化的目的是減少幀數(shù)據(jù)的精度(詳細(xì)程度),丟棄不必要的細(xì)節(jié)。
如果對(duì)一個(gè)給定塊進(jìn)行仔細(xì)檢查,就可以注意到該塊包含許多視覺(jué)察覺(jué)不到的細(xì)節(jié)。原因在于人眼的敏感度朝著較低的空間頻率分量增加。因而,如果該幀的高頻分量比低頻分量衰減得更厲害,直到某個(gè)極限,雖然數(shù)據(jù)的壓縮率增加了但在解碼幀中視覺(jué)上察覺(jué)不到變化。MPEG1-2標(biāo)準(zhǔn)使用了這種量化。根據(jù)另一種已知的方法,忽略了系數(shù)的頻率分布,因此每個(gè)系數(shù)將除以相同的常數(shù)(H26x-MPEG4)。量化最重要的功能是減少描述DCT系數(shù)的比特?cái)?shù)。換句話說(shuō),希望用盡可能少的比特來(lái)描述DCT變換系數(shù)。描述一個(gè)系數(shù)的比特?cái)?shù)越少,壓縮率就更好。然而,當(dāng)除數(shù)的值增加時(shí),整除引起的錯(cuò)誤也會(huì)增加。
還存在其它用于減少表示DCT系數(shù)的比特?cái)?shù)的已知方法。例如,所謂的DC(增量碼)預(yù)測(cè)是基于認(rèn)識(shí)到位于連續(xù)DCT塊第0個(gè)位置的值彼此之間僅有輕微差異。因此,如果從前一個(gè)DC值中減去當(dāng)前的DC值,有可能減小DC分量的值以及表示這些值的比特?cái)?shù)。(位于一個(gè)塊第0個(gè)位置的系數(shù)被稱為DC,而其它的被稱為AC。)AC預(yù)測(cè)的過(guò)程與DC預(yù)測(cè)相似,差異在于以不同的方向來(lái)掃描系數(shù),并且使用不同的方法來(lái)平均系數(shù)。對(duì)于AC/DC預(yù)測(cè)有許多已知的解決方案,因此不需要在這里詳細(xì)的對(duì)它們進(jìn)行描述。
II.
本發(fā)明的總目的是改進(jìn)上面提到的已知方法的壓縮效率,或更確切地,是以相對(duì)低的計(jì)算負(fù)載提供有效的壓縮。利用附屬于本說(shuō)明書(shū)后面的獨(dú)立權(quán)利要求中描述的發(fā)明方法已實(shí)現(xiàn)了該目的。
雖然上述方法可被有效地單獨(dú)使用,但同時(shí)使用它們可以導(dǎo)致特別重要的改進(jìn),這一方面由于各個(gè)方法的效果被疊加了,另一方面由于各個(gè)方法關(guān)注壓縮過(guò)程的不同階段。
執(zhí)行本發(fā)明方法的步驟的其它裝置和軟件(計(jì)算機(jī)程序產(chǎn)品),以及其它主要是對(duì)編碼數(shù)據(jù)執(zhí)行解壓縮的逆方法,也是本發(fā)明的目的。
結(jié)合附圖詳細(xì)解釋了本發(fā)明,其中圖1顯示了現(xiàn)有MPEG編碼技術(shù)的示意性的框圖,圖2示出了發(fā)現(xiàn)幀間幀的方法,圖3示出了用于比較參考?jí)K和待編碼塊的方法,圖4顯示了DCT變換、量化以及后面的熵編碼的步驟,圖5示出了從參考?jí)K中減去待編碼塊的方法,圖6示出了在前導(dǎo)或后繼幀中搜索參考幀的過(guò)程,圖7顯示了DCT和FFT方法之間的差異,圖8是本發(fā)明的混合視頻編碼器的示意性功能圖,
圖9示出了內(nèi)部塊的預(yù)測(cè)模式,圖10示出了如何從可能的預(yù)測(cè)模式中選擇預(yù)測(cè)模式,圖11顯示了塊分割編碼的一個(gè)實(shí)施例,圖12顯示了使用不同尺寸子塊的可能的塊分割,圖13示出了包括三個(gè)不同塊尺寸的分割,圖14示出了包括兩個(gè)不同塊尺寸的分割,圖15a-c顯示了可用于P和B幀的搜索模式,圖16示出了使用減少的樣本的參考搜索方法,顯示了搜索過(guò)程中使用的塊尺寸和塊模式,圖17顯示了在根據(jù)本發(fā)明的方法中使用的插值參考幀是如何生成的,圖18a示出了根據(jù)本發(fā)明在神經(jīng)算術(shù)編碼單元中選擇(尋址)神經(jīng)元,還顯示了神經(jīng)元組合在地址范圍中的布局,圖18b顯示了用于根據(jù)本發(fā)明的神經(jīng)帶寬控制系統(tǒng)的一個(gè)實(shí)施例的神經(jīng)網(wǎng)絡(luò)示意圖,圖18c顯示了用于根據(jù)本發(fā)明的神經(jīng)帶寬控制系統(tǒng)的另一個(gè)實(shí)施例的神經(jīng)網(wǎng)絡(luò)示意圖,圖19顯示了在高度動(dòng)態(tài)范圍神經(jīng)帶寬控制系統(tǒng)中輸入數(shù)據(jù)的數(shù)據(jù)路徑的修改,圖20示出了根據(jù)本發(fā)明的動(dòng)態(tài)縮放方法,圖21顯示了在本發(fā)明的動(dòng)態(tài)縮放方法中實(shí)現(xiàn)的傳輸信噪特征,與無(wú)動(dòng)態(tài)縮放的特征進(jìn)行了比較,圖22是對(duì)利用根據(jù)本發(fā)明的方法編碼的視頻數(shù)據(jù)進(jìn)行解碼的過(guò)程的流程23是應(yīng)用了根據(jù)本發(fā)明的方法的音頻視頻數(shù)據(jù)編碼系統(tǒng)的示意框圖,圖24是一個(gè)系統(tǒng)的示意框圖,該系統(tǒng)用于對(duì)依照本發(fā)明編碼的音頻和視頻數(shù)據(jù)進(jìn)行解碼。
III.
圖8示出了根據(jù)本發(fā)明的混合編碼系統(tǒng)的邏輯結(jié)構(gòu)(示意功能圖)。該系統(tǒng)的主要功能單元在許多方面與圖1所示的已知MPEG編碼系統(tǒng)相似。輸入視頻數(shù)據(jù)60,換句話說(shuō),待編碼幀被提供給幀縮放單元61,該單元根據(jù)許多不同標(biāo)準(zhǔn)(下面詳細(xì)討論),要么減少輸入幀的尺寸要么對(duì)其不做改變。整個(gè)系統(tǒng)由編碼控制單元62控制,在本說(shuō)明書(shū)中稍后將對(duì)其確切功能加以闡明。依據(jù)內(nèi)部/幀間開(kāi)關(guān)63,根據(jù)內(nèi)部或幀間編碼編碼這些幀或塊。經(jīng)過(guò)DCT變換模塊64,量化模塊65以及熵編碼模塊72之后,處于已變換、已量化并且已編碼的狀態(tài)的塊被引導(dǎo)到輸出73。由反量化模塊66和反DCT模塊67生成編碼幀間幀所需的參考幀,重建的參考幀從這些模塊通過(guò)一個(gè)解塊(de-block)濾波器69被提供給幀存儲(chǔ)器70。運(yùn)動(dòng)補(bǔ)償,即產(chǎn)生濾波的參考幀以及補(bǔ)償?shù)倪\(yùn)動(dòng)信息74(運(yùn)動(dòng)向量及被減塊)是由參考數(shù)字68指代的一個(gè)模塊執(zhí)行的(其解析度可以在1/2,1/4以及1/8像素之間調(diào)整)。幀存儲(chǔ)器70存儲(chǔ)當(dāng)前參考幀,其中的塊被自動(dòng)地刷新(實(shí)現(xiàn))。模塊71執(zhí)行對(duì)變化的識(shí)別,并且發(fā)現(xiàn)最適合用于跟蹤幀中變化的塊分割,并且模塊71使用四杈樹(shù)結(jié)構(gòu)(后文詳述)描述最佳塊分割。熵編碼模塊72是一個(gè)所謂的神經(jīng)算術(shù)壓縮器(見(jiàn)下)。
下面我們將更加詳細(xì)地解釋根據(jù)本發(fā)明的編碼(壓縮)過(guò)程的某些特征。
本說(shuō)明書(shū)中使用的術(shù)語(yǔ)“預(yù)測(cè)”,在某種意義上涵蓋了可逆轉(zhuǎn)的數(shù)學(xué)表達(dá)式,這些數(shù)學(xué)表達(dá)式利用實(shí)際的或潛在的可預(yù)期的相似性,基于一種實(shí)質(zhì)上平均特征的操作,并且返回具有良好近似性的原始值。這意味著數(shù)據(jù)重建只能產(chǎn)生原始數(shù)據(jù)的近似值,換句話說(shuō),期望值是“預(yù)測(cè)的”。出于實(shí)踐目的,使用一個(gè)特定函數(shù)來(lái)執(zhí)行這些計(jì)算(通常涉及取平均操作)。
本發(fā)明的壓縮方法本質(zhì)上具有一種混合特性,因?yàn)樗瑫r(shí)利用了時(shí)間和空間冗余?;诜謱拥膲K結(jié)構(gòu)實(shí)現(xiàn)了壓縮,該結(jié)構(gòu)包含了尺寸動(dòng)態(tài)變化的塊。參考搜索不僅使用緊鄰當(dāng)前幀的前導(dǎo)或后繼幀,還使用更多的前導(dǎo)或后繼幀,最大深度為+1和-3個(gè)幀(就是說(shuō),允許在1個(gè)后繼幀和3個(gè)前導(dǎo)幀中進(jìn)行參考搜索)。由該方法實(shí)現(xiàn)了高級(jí)別的運(yùn)動(dòng)補(bǔ)償,解析度范圍從1/2到1/8像素變化。熵壓縮器基于多級(jí)預(yù)測(cè)執(zhí)行最優(yōu)化的算術(shù)編碼。
在下面,術(shù)語(yǔ)“內(nèi)部預(yù)測(cè)”意味著一種可逆轉(zhuǎn)的算術(shù)表達(dá)式,它基于一個(gè)或多個(gè)參考?jí)K中的值,減少或清除當(dāng)前待編碼塊的像素值。
為了清楚起見(jiàn),不得不指出在本說(shuō)明書(shū)中參考了兩種本質(zhì)上不同的預(yù)測(cè)原則1.所謂的“內(nèi)部預(yù)測(cè)”,用于對(duì)內(nèi)部幀編碼,以及2.用于神經(jīng)熵編碼的預(yù)測(cè)。
在適當(dāng)?shù)牡胤街赋隽诉@些預(yù)測(cè)原則。
IV.對(duì)待編碼塊的快速內(nèi)部預(yù)測(cè)IV.1.
內(nèi)部預(yù)測(cè)是基于觀察到一個(gè)給定幀中相鄰塊通常具有相似的屬性,因此這些相鄰塊之間的空間相關(guān)性可被用于減少信息。因而,使用上述的內(nèi)部預(yù)測(cè)過(guò)程,可以根據(jù)與所選塊相鄰的一塊或多塊中預(yù)定像素的信息內(nèi)容,來(lái)修改所選塊(待編碼塊)的信息內(nèi)容。在一個(gè)可能的方面,可以使用位于待編碼塊前面的塊的垂直線76或位于待編碼塊上面的塊的水平線77(就是說(shuō),其中的像素值)或二者來(lái)實(shí)現(xiàn)內(nèi)部預(yù)測(cè),如圖9中所示意。另垂直線76被稱為B,水平線77稱為A。
讓我們考慮一個(gè)具體的例子令221,224,230,232是位于待編碼塊上面的塊的最后一條水平線77的元素。
令待編碼塊如下-------------------------------219,223,226,232219,224,224,231217,220,221,229214,220,221,228現(xiàn)在從待編碼塊的每條水平線中減去水平線77。我們獲得如下預(yù)測(cè)塊2,1,4,02,0,6,14,4,9,37,4,9,4這個(gè)例子使用水平預(yù)測(cè)。該預(yù)測(cè)的優(yōu)點(diǎn)在于減少像素的比特,以及,由于可以觀察到在水平線77中值從左向右增加的趨勢(shì),證明與待編碼塊中的情況相同,待編碼數(shù)據(jù)的熵也提高了。得到的值的分布為2ד2”,2ד1”,2ד0”,4ד4”,2ד9”,1ד7”,這顯示了比原始?jí)K更高的符號(hào)出現(xiàn)率。
定義了更多的變換/預(yù)測(cè)類型,通過(guò)應(yīng)用其中之一,可以獲得更好的熵。因而,在所提解決方案的一個(gè)實(shí)際的實(shí)施例中,對(duì)修改的(預(yù)測(cè)的)塊進(jìn)行了編碼,而沒(méi)有對(duì)原始的待編碼塊75進(jìn)行編碼。預(yù)測(cè)塊這樣計(jì)算的通過(guò)逐線地從待編碼塊75的水平或垂直線中減去鄰接水平線77A或垂直線76B,或者從原始像素值中減去A和B的平均值,典型地利用公式(像素-(A+B)/2)完成該計(jì)算,并且從而獲得所謂的預(yù)測(cè)塊。本質(zhì)上這是一個(gè)已知的解決方案,但是我們認(rèn)識(shí)到,如果我們?cè)试S使用不同尺寸的塊,甚至同時(shí)混合它們(通過(guò)這種方式我們通常獲得了可被更好地壓縮的塊),則內(nèi)部編碼的效率可被顯著地提高。然而,必須執(zhí)行的大量計(jì)算使得這種解決方案本身不可行。在已知的方法中,是通過(guò)在預(yù)測(cè)塊上有效執(zhí)行DCT變換和熵編碼而發(fā)現(xiàn)最終、最佳的壓縮預(yù)測(cè)塊的。只有在此之后,才能確定給定的預(yù)測(cè)塊可被壓縮的程度。然而,在以上步驟中發(fā)現(xiàn)的最佳壓縮預(yù)測(cè)塊只有在重建塊(與原始?jí)K相比)的誤差不太高時(shí)才可被使用。因此,為了測(cè)量誤差還必須執(zhí)行反變換??偠灾枰獦O高的計(jì)算能力。
因而,根據(jù)本發(fā)明,在執(zhí)行DCT變換之前,在待編碼塊上執(zhí)行了一個(gè)可壓縮性分析?;谏鲜隹蓧嚎s性分析,使用DCT和熵編碼對(duì)該塊進(jìn)行編碼。然而,在大多數(shù)情況下,可壓縮性分析顯示值得通過(guò)將待編碼塊劃分成進(jìn)一步的子塊來(lái)檢查該塊的可壓縮性。在這種情況下,分析了與不同塊分割變量相關(guān)的塊的可壓縮性,并且選擇了能夠?qū)崿F(xiàn)最佳潛在結(jié)果的分割。最后,經(jīng)過(guò)塊分割以及緊隨其后的內(nèi)部預(yù)測(cè)之后,在所選擇的、潛在最有利的塊分割的基礎(chǔ)上,執(zhí)行了DCT變換。
IV.2.
下面將更加詳細(xì)地描述這個(gè)過(guò)程。
正在圖12中可以看到的那樣,在所示的本發(fā)明的實(shí)施例中,可能的塊尺寸為16×16,8×8,以及4×4像素??梢砸远喾N方法來(lái)執(zhí)行不同尺寸塊的(內(nèi)部)預(yù)測(cè)。這些被列舉在后面的頁(yè)中。
IV.2.1. 4×4塊的預(yù)測(cè)定義了六種類型的預(yù)測(cè)。
1.DC預(yù)測(cè)令S0是預(yù)測(cè)向量如果存在A和B,那么S0=∑(Aj+Bj+4)/8否則,如果只存在AS0=∑(Aj+2)/4否則,如果只存在BS0=∑(Bj+2)/4否則S0=128因而根據(jù)下面的公式計(jì)算出了預(yù)測(cè)塊DCP(j,i)=IB(j,i)-S0,其中j=0..3,i=0..3其中IB是待編碼塊,以及DCP是預(yù)測(cè)塊。
2.水平預(yù)測(cè)DCP(j,i)=IB(j,i)-A(i),其中j=0..3,i=0..33.垂直預(yù)測(cè)DCP(j,i)=IB(j,i)-B(i),其中j=0..3,i=0..34.組合了水平和垂直預(yù)測(cè)的對(duì)角線預(yù)測(cè)T(0,0)=(B(3)+2*B(2)+B(1)+2)/4T(1,0)=(B(2)+2*B(1)+B(0)+2)/4T(2,0)=(B(1)+2*B(0)+A(-1)+2)/4T(3,0)=(B(0)+2*A(-1)+A(0)+2)/4T(4,0)=(A(-1)+2*A(0)+A(1)+2)/4T(5,0)=(A(0)+2*A(1)+A(2)+2)/4T(6,0)=(A(1)+2*A(2)+A(3)+2)/4DCP(j,i)=IB(j,i)-T(j-i+3)其中j=0..3,i=0..3
5.垂直對(duì)角線預(yù)測(cè)T(j,i)=A(3)其中j=0..3,i=0..3T(0,0)=(A(0)+A(1))/2T(1,0)=A(1)T(0,1)=T(2,0)=(A(1)+A(2))/2T(1,1)=T(3,0)=A(2)T(0,2)=T(2,1)=(A(2)+A(3))/2DCP(j,i)=IB(j,i)-T(j,i)其中j=0..3,i=0..36.水平對(duì)角線預(yù)測(cè)T(j,i)=B(3)其中j=0..3,i=0..3T(0,0)=(B(0)+B(1))/2T(0,1)=B(1)T(1,0)=T(0,2)=(B(1)+B(2))/2T(1,1)=T(0,3)=B(2)T(2,0)=T(1,2)=(B(2)+B(3))/2DCP(j,i)=IB(j,i)-T(j,i)其中j=0..3,i=0..3IV.2.2.根據(jù)類似的原則,可以實(shí)現(xiàn)尺寸為8×8像素的塊的預(yù)測(cè)。
在這種情況下,定義了四種可能的預(yù)測(cè)類型1.DC預(yù)測(cè)如果存在A和B,那么S0=∑(Aj+Bj+8)/16否則,如果只存在AS0=∑(Aj+4)/8否則,如果只存在BS0=∑(Bj+4)/8否則S0=1282.水平預(yù)測(cè)
DCP(j,i)=IB(j,i)-A(i),其中j=0..8,i=0..83.垂直預(yù)測(cè)DCP(j,i)=IB(j,i)-B(i),其中j=0..8,i=0..84.對(duì)角預(yù)測(cè)DCP(j,i)=IB(j,i)-(A(i)+B(i))/2,其中j=0..8,i=0..8IV.2.3.最后,16×16像素塊的預(yù)測(cè)也是類似的。
在這種情況下,定義了四種預(yù)測(cè)類型1.DC預(yù)測(cè)如果存在A和B,那么S0=∑(Aj+Bj+16)/32否則,如果只存在AS0=∑(Aj+8)/16否則,如果只存在BS0=∑(Bj+8)/16否則S0=128DCP(j,i)=IB(j,i)-S0,其中j=0..15,i=0..15(IB是當(dāng)前塊,DCP是預(yù)測(cè)塊)2.水平預(yù)測(cè)DCP(j,i)=IB(j,i)-A(i),其中j=0..15,i=0..153.垂直預(yù)測(cè)DCP(j,i)=IB(j,i)-B(i),其中j=0..15,i=0..154.所謂的平面預(yù)測(cè)v=5*((∑(A(j+7)-A(j-7))*j))/4)/4h=5*((∑(B(j+7)-B(j-7))*j))/4)/4k=A(15)+B(15)T(j,i)=(k+(i-7)*h+(j-7)*v+16)/32DCP(j,i)=IB(j,i)-T(i),其中j=0..15,i=0..15IV.2.4.因此,在這個(gè)情況下,所提的方法使用了三種不同的塊尺寸以及多達(dá)14種預(yù)測(cè)類型。很容易發(fā)現(xiàn),如果應(yīng)用了已知的方法,就會(huì)需要很高的計(jì)算機(jī)能力,因?yàn)樗蓄A(yù)測(cè)和后續(xù)計(jì)算應(yīng)該在16×16模式(就是說(shuō),在允許塊尺寸為16×16的情況下)中被執(zhí)行4次,在8×8模式中也是4次,以及在4×4模式中16次。
實(shí)際上,這意味著如果16×16尺寸的塊沒(méi)有被劃分成子塊,P→DCT→Q→IQ→IDCT→IP變換序列,以及后續(xù)的對(duì)系數(shù)的熵編碼,以及確定原始和反變換塊的MSE值,都需要被執(zhí)行4次。如果允許將塊劃分成子塊,根據(jù)上面描述的方法,總共的變換次數(shù)增加到16(4*4)或甚至96(6*16)次之多(雖然塊尺寸較小)。
因此,對(duì)最佳預(yù)測(cè)塊的選擇是根據(jù)圖10所示的流程圖執(zhí)行的。塊數(shù)據(jù)79通過(guò)多路復(fù)用器/選擇器80根據(jù)塊尺寸,從上面列舉的模式中選擇當(dāng)前的預(yù)測(cè)模式81。選擇器82b可由用戶設(shè)置為將預(yù)測(cè)塊的塊數(shù)據(jù)79直接地或通過(guò)一個(gè)哈達(dá)馬(Hadamard)變換模塊82a引導(dǎo)到處理單元82c。處理單元82c產(chǎn)生該塊的絕對(duì)平方和,并用比較器83評(píng)估產(chǎn)生的和。在該值小于參考閾值的情況下,用該瞬時(shí)和覆蓋所述的參考閾值,并由處理單元84將當(dāng)前預(yù)測(cè)模式和預(yù)測(cè)塊一起存儲(chǔ)。接下來(lái),多路復(fù)用器/選擇器80為下一次預(yù)測(cè)選擇模式,并且重復(fù)整個(gè)過(guò)程直到所有可用的模式——換句話說(shuō),與該塊不同的潛在分割有關(guān)的所有預(yù)測(cè)模式——進(jìn)行過(guò)測(cè)試。最后,確定最佳預(yù)測(cè)塊以及產(chǎn)生該最佳預(yù)測(cè)塊的預(yù)測(cè)模式。
處理單元82c使用下面的公式來(lái)對(duì)預(yù)測(cè)塊進(jìn)行疊加sum(i)=Σi=0Mabs(pixel(i))2]]>(方程I)其中M是塊長(zhǎng)度。
在某些情況下,可以證明上面的方法沒(méi)有考慮空間頻率是不利的。這就是包括Hadamard變換模塊82a的原因。在計(jì)算平方和之前執(zhí)行該變換,并且用戶可以決定是否應(yīng)用該變換。Hadamard變換的定義在下面給出。在產(chǎn)生了變換塊的頻率分量/系數(shù)的意義上,該變換與DCT相似。在大多數(shù)情況下,將會(huì)產(chǎn)生更加有效的預(yù)測(cè),其中變換塊包含更少的頻率分量/系數(shù)。
在如上所述確定了最佳塊分割和相應(yīng)的預(yù)測(cè)模式之后,執(zhí)行剩下的變換(DCT...)并且用熵編碼模塊對(duì)該塊進(jìn)行編碼。
通過(guò)將本發(fā)明方法與已知的解決方案進(jìn)行對(duì)比,可以看出我們的方法的質(zhì)量/壓縮比要好cca.1dB。雖然已知的方法可以實(shí)現(xiàn)更好的壓縮,但它總是以質(zhì)量為代價(jià)。然而,本發(fā)明方法提供了更好的圖像質(zhì)量以及實(shí)際上相同的壓縮率。
本發(fā)明方法的另一個(gè)重要特征是如果執(zhí)行了哈達(dá)馬變換其計(jì)算負(fù)載大概是已知方法的1/10,以及如果不應(yīng)用哈達(dá)馬變換其計(jì)算負(fù)載大概是已知方法所需的計(jì)算負(fù)載的1/16。
由于為了成功解碼必須以某種方法記錄塊的分割,因此根據(jù)所謂的四杈樹(shù)結(jié)構(gòu)對(duì)塊進(jìn)行分割。每個(gè)16×16像素的塊可被想象成有四個(gè)子孫葉子的根,這些葉子依次可被進(jìn)一步分解成四個(gè)其它的子孫,塊尺寸減少到4×4。在圖11中示出了這一點(diǎn),其中在給定塊的4×4像素的子塊之一(03)中,顯示了進(jìn)一步的2×2像素子塊,并且在其中一個(gè)2×2像素的塊中,顯示了各個(gè)像素。在該塊的圖像旁邊的圖示出了各個(gè)子塊,或者甚至該塊的各個(gè)像素在需要的情況下是如何被標(biāo)識(shí)的??梢郧宄乜吹?,隨著解析度的增加,描述給定分割所需的數(shù)據(jù)量也增加。
這種分割方法(允許三種不同的塊尺寸)被提出作為本發(fā)明方法的默認(rèn)方法。然而,在另外一種實(shí)現(xiàn)中,可以由用戶或系統(tǒng)本身將其改寫(xiě),并且可以設(shè)置一種僅僅使用兩種不同塊尺寸的模式。這種模式將方便地屬于整個(gè)幀,并且不會(huì)與三個(gè)塊尺寸模式混淆,避免給定幀中的一個(gè)塊是以兩種塊模式編碼的,而另一個(gè)是以三種塊模式編碼的。
在本發(fā)明所提出的一個(gè)方面中的內(nèi)部預(yù)測(cè)編碼通過(guò)使用動(dòng)態(tài)變化的塊尺寸允許4種可能的模式(I-型)。因而,在整個(gè)I-幀編碼期間,允許應(yīng)用不同尺寸的塊(下面列舉了可用的塊尺寸)。應(yīng)當(dāng)再次注意到,必須在該幀的頭部結(jié)構(gòu)中指出所選擇的模式。在這個(gè)例子中,4種可能的模式如下●使用三種不同的、動(dòng)態(tài)變化的塊尺寸的編碼(16×16,8×8,4×4)。
●使用兩種動(dòng)態(tài)變化的塊尺寸的編碼(16×16和8×8)。
●使用兩種動(dòng)態(tài)變化的塊尺寸的編碼(16×16和4×4)。
●使用兩種動(dòng)態(tài)變化的塊尺寸的編碼(8×8和4×4)。
在該方法的一個(gè)實(shí)現(xiàn)中,用戶只可以在兩種塊和三種塊模式之間選擇,或者可選地,系統(tǒng)能夠自動(dòng)地選擇最優(yōu)的模式。因而,用戶可以從下面的選項(xiàng)中選擇1.使用三種不同的、動(dòng)態(tài)變化的塊尺寸的編碼。
2.使用兩種動(dòng)態(tài)變化的塊尺寸的編碼。
3.自動(dòng)選擇上述選項(xiàng)的其中之一。
選擇通常是由可用的計(jì)算能力所決定的,或者可選地,是基于對(duì)待編碼幀的某些特征所作的估計(jì)。
圖12示出了用在上述例子中的塊尺寸。
下面讓我們更加詳細(xì)地討論使用動(dòng)態(tài)變化的塊尺寸的內(nèi)部預(yù)測(cè)編碼的過(guò)程。
IV.3.使用三種不同的、動(dòng)態(tài)變化的塊尺寸的內(nèi)部預(yù)測(cè)編碼(I-型)Y塊的大小為16×16,或換言之,使用了四個(gè)8×8像素的子塊或十六個(gè)4×4像素的子塊。
UV的大小是8×8,或者與Y塊的分割相對(duì)應(yīng),使用了四個(gè)4×4像素的子塊或16個(gè)2×2像素的子塊(見(jiàn)圖13)。必須注意到,只有在“幀間”模式中才允許UV色面上的2×2像素的塊尺寸。
因?yàn)閼?yīng)用了三種不同的塊尺寸,需要一種選擇最優(yōu)尺寸的方法。
如果我們打算根據(jù)已知的方法去做,我們不得不使用最大塊尺寸來(lái)執(zhí)行所有必須的變換,并且測(cè)量原始和重建塊之間的誤差。然后,在誤差超過(guò)一個(gè)極限的情況下,該塊將被劃分成四部分,并且對(duì)每個(gè)子塊重復(fù)變換和誤差比較。那些誤差大于一個(gè)給定閾值的子塊將再次被劃分成4個(gè)子塊并且再次重復(fù)變換。
雖然這種方法很理想,但它涉及大量的、對(duì)于產(chǎn)生最終結(jié)果不需要的變換。
在一個(gè)塊必須被劃分成三個(gè)8×8和四個(gè)4×4像素的子塊的情況下,需要在16×16塊的兩個(gè)方向上執(zhí)行一組變換,也需要在兩個(gè)方向上執(zhí)行四組8×8的變換,還需要執(zhí)行四組4×4的變換。其中,在16×16塊上執(zhí)行的一組變換以及在其中一個(gè)8×8塊上執(zhí)行的一組變換(DCT和熵編碼解碼)是多余的。因而,不得不執(zhí)行這些不必要的恰恰具有最高計(jì)算負(fù)載的變換組。
因此,根據(jù)本發(fā)明,首先在塊上執(zhí)行了可壓縮性分析。在本發(fā)明的一個(gè)方面,這是通過(guò)將該塊劃分成四個(gè)子塊并且使用下面的公式計(jì)算出該塊所謂的方差而實(shí)現(xiàn)的variance=Σj=0Mpixelj2-(Σj=0Mpixelj)2M]]>(方程II)其中M是子塊的長(zhǎng)度,并且通過(guò)檢驗(yàn)是否滿足條件方差≤TH8或方差≤TH16,這里TH8=對(duì)于8×8的塊所允許的方差閾值,TH16=對(duì)于16×16的塊所允許的方差閾值。
TH8和TH16是經(jīng)驗(yàn)常數(shù)。如該公式所示,“方差”值對(duì)該塊中可視細(xì)節(jié)的數(shù)量作了量化。
根據(jù)用戶的選擇,可以在計(jì)算前激活哈達(dá)馬變換,但是TH常數(shù)將與無(wú)哈達(dá)馬變換時(shí)計(jì)算中所用的常數(shù)不同。
如果所有子塊的方差值都保持在+/-N%的范圍內(nèi),并且所述方差值的和不超過(guò)預(yù)置閾值TH16,那么就可以使用最大塊尺寸對(duì)該塊進(jìn)行編碼。
如果上面的條件不滿足,但是子塊的方差小于TH8,給定的子塊可以8×8的尺寸被編碼。否則,8×8像素的子塊還應(yīng)當(dāng)被進(jìn)一步劃分成4×4像素的子塊。
當(dāng)確定TH8/16的值時(shí),應(yīng)當(dāng)考慮量化引起的誤差,因?yàn)槿绻炕`差相對(duì)低,可以使用較大的塊尺寸且得到滿意的結(jié)果,對(duì)塊再次劃分就變得不需要了。
例如,TH值可以使用下面的表達(dá)式來(lái)確定TH(i)=TH基礎(chǔ)值(i)*誤差因子(qp),其中i=0..1且qp=1..MAXQP誤差因子(qp)的值是從一張由qp索引的表中取得的,該值是基于量化因子QP而確定的。在這個(gè)案例中,由本發(fā)明的神經(jīng)控制系統(tǒng)提供了所述的量化因子QP,將在合適的地方描述該神經(jīng)控制系統(tǒng),但是備選地,QP也可以是常數(shù)或利用另外一種已知的方法確定的。
誤差因子表包含了從組合量化誤差值生成的值,且誤差因子值隨索引值的增大而減小。
換句話說(shuō),更高的量化意味著TH更小的變化以及更嚴(yán)格的條件,或者再換句話說(shuō),一個(gè)塊中可視細(xì)節(jié)的數(shù)量更多,并且更高的量化引起塊尺寸收斂到較小的塊尺寸值。
因?yàn)?,如下面所解釋的一樣,塊分割本身的編碼需要相對(duì)高的數(shù)據(jù)量,檢查是否值得允許使用三種不同的塊尺寸是有利的。在僅允許兩種不同塊尺寸的情況下,為了記錄塊分割數(shù)據(jù),只需對(duì)更少的額外信息進(jìn)行編碼。
因此,在本發(fā)明的一個(gè)方面,對(duì)整個(gè)幀進(jìn)行了塊分割分析,對(duì)每個(gè)塊尺寸賦予一個(gè)統(tǒng)計(jì)量(就是說(shuō),確定了具有每個(gè)允許的塊尺寸的塊的個(gè)數(shù))。如果對(duì)于所有塊尺寸,每個(gè)尺寸的發(fā)生率都大致相同,并且我們使用三種塊或自動(dòng)選擇模式,則繼續(xù)該過(guò)程。否則,如果大多數(shù)塊是兩種主要塊尺寸其中之一,那么就確定這些主要塊尺寸,并且使用標(biāo)題為“使用兩種動(dòng)態(tài)變換的塊尺寸的內(nèi)部預(yù)測(cè)編碼”章節(jié)中描述的步驟執(zhí)行該方法(下面的IV.4.章)。
該方法分兩部分工作。
首先,在方差計(jì)算的基礎(chǔ)上,對(duì)整個(gè)幀執(zhí)行可壓縮性分析,作為結(jié)果確定了最優(yōu)塊分割。在第二部分,利用那些為正在執(zhí)行的最優(yōu)分割而發(fā)現(xiàn)的預(yù)測(cè)來(lái)執(zhí)行塊分割,并且最后,利用那些被證明是最佳的預(yù)測(cè),在屬于所選擇的塊分割的每個(gè)塊上執(zhí)行編碼和反變換。
雖然方差分析確切地指定了應(yīng)該怎樣分割一個(gè)給定塊的各子塊,但是必須以某種方式記錄該分割。最明顯的解決方案使用所謂的四杈樹(shù)結(jié)構(gòu)(在圖11中示出)。
為了描述整個(gè)塊,需要兩個(gè)變量級(jí)。第一級(jí)的變量被稱為L(zhǎng),而第二級(jí)變量用字母ABCD指代。在給定塊未被分割的情況下,L被置為0(如果塊尺寸為16×16那么L=0)。如果該塊被分割,L被置為1。在這種情況下,需要另外四個(gè)比特來(lái)描述子塊。
如果一個(gè)子塊未被進(jìn)一步分割(具有8×8像素的尺寸),相關(guān)比特的值為0。在該子塊被進(jìn)一步分割的情況下(分割成4×4像素子塊),相關(guān)比特的值為1。例如L ABCD0 -------- 該塊未被分割1 0000 該塊被劃分成4個(gè)8×8的子塊
10001該塊的前四分之一被劃分成4×4像素的子塊,其它塊的尺寸為8×810010該塊的第二個(gè)四分之一被劃分成4×4像素的子塊,而其它的尺寸為8×8如果該塊被分割(L=1),有16種可能的組合,因此在這種情況下,對(duì)塊的分割進(jìn)行編碼的數(shù)據(jù)(包括L)是5比特長(zhǎng),而如果該塊未被分割,分割數(shù)據(jù)僅為1比特長(zhǎng)(只有L)。
在完成塊分割之后,執(zhí)行與每個(gè)塊相關(guān)的變換并且在熵編碼模塊中對(duì)已變換的塊進(jìn)行編碼。
IV.4.使用兩種動(dòng)態(tài)變化塊尺寸的內(nèi)部預(yù)測(cè)編碼如果分析決定使用兩種塊尺寸更有利,那么就使用已經(jīng)確定的兩種主要塊尺寸。(圖14顯示了可能的子塊配置。)使用兩種塊尺寸的編碼以與我們上面描述的在本質(zhì)上相同的方式執(zhí)行,只有幾個(gè)微小的調(diào)整。
在其中一個(gè)主要尺寸是16×16的情況下(其它尺寸為8×8或4×4),假如方差不超過(guò)極限TH16(就是說(shuō),該塊滿足16×16尺寸下的條件),將使用16×16的尺寸對(duì)該塊進(jìn)行編碼,否則,在編碼前將把它劃分成8×8或4×4像素的子塊。然而,如果兩個(gè)主要塊尺寸為8×8和4×4,那么在至少三個(gè)子塊的方差值小于TH8的情況下(也就是說(shuō),該塊滿足所述條件),將使用8×8的尺寸對(duì)該塊進(jìn)行編碼,否則就用4×4的尺寸。
其中只允許兩種塊尺寸的塊分割的優(yōu)點(diǎn)在于5比特的QT碼(分割描述符)可由代表所選分割的單個(gè)比特代碼代替(例如,對(duì)于一個(gè)16×16的基本塊尺寸,0可以代表一個(gè)16×16的塊,1可以代表4個(gè)8×8的子塊)。
所有后續(xù)變換都與已經(jīng)描述的相同。概括起來(lái)通過(guò)分析為該幀選擇了兩種塊尺寸,并且使用它們編碼整個(gè)幀。
圖14的1,2,3部分示出了可能的子塊組合。
因而,塊編碼過(guò)程如下進(jìn)行1.根據(jù)可壓縮性分析認(rèn)為最佳的塊分割將塊劃分成子塊,2.為每個(gè)子塊確定最佳預(yù)測(cè)子塊,并且對(duì)預(yù)測(cè)塊進(jìn)行編碼。
IV.5.從空間表示到頻率表示的變換
IV.5.1.離散余弦變換(DCT)本身不是新的。對(duì)于所有塊尺寸基本原理都相同。
離散余弦變換y(k)=c(k)Σn=0N-1cos2πk(2n+1)4Nx(n)]]>其中N是給定塊中的元素個(gè)數(shù),c(0)=1/√N(yùn),c(k)=√(2/N),1≤k≤N-1,×(n)是待編碼塊的第n個(gè)元素。
反DCT變換x(n)=Σk=0N-1cos2πk(2n+1)4Nc(k)y(k)]]>這些變換可以作為分解的矩陣-向量乘積實(shí)現(xiàn),這極大地減少了計(jì)算量。
當(dāng)前實(shí)現(xiàn)的方法是使用基于整數(shù)的2D變換實(shí)現(xiàn)的。由于存在幾種有詳細(xì)文檔的在計(jì)算機(jī)上執(zhí)行DCT變換的方法,沒(méi)必要在此對(duì)其論述。
IV.5.2.哈達(dá)馬變換X(b)=(12)n/2*Σa=0N-1X(a)(-1)Σk=0n-1a(k)b(k)]]>其中aa(n-1)...a(1)a(0)bb(n-1)...b(1)b(0)a(k),b(k)=0,1與離散余弦變換相似,哈達(dá)馬變換是FFT的一個(gè)變種,其優(yōu)點(diǎn)在于它僅僅包括矩陣形式的加法和減法。因此,它在計(jì)算機(jī)上可能執(zhí)行的比DCT或FFT快的多。它也有一個(gè)重要的缺陷,即該函數(shù)是不連續(xù)的。這就是對(duì)于更高細(xì)節(jié)的塊,為什么哈達(dá)馬變換比DCT變換引起視覺(jué)上更加顯著的誤差的原因。這使得它適合于直接被應(yīng)用到“扁平”(低細(xì)節(jié))的16×16的塊。由于16×16像素的塊需要極高的計(jì)算量,無(wú)論何時(shí)只要16×16的塊需要被變換,優(yōu)選使用哈達(dá)馬變換。應(yīng)當(dāng)在這兒注意到,在一個(gè)特定的實(shí)施例中,如果給定塊有足夠低的細(xì)節(jié)水平,根據(jù)本發(fā)明執(zhí)行的方差分析僅僅允許使用16×16尺寸的塊。
IV.6.在塊或子塊的DCT變換和熵編碼之間執(zhí)行的步驟就是所謂的量化,在量化過(guò)程中,為了能夠利用熵編碼模塊進(jìn)行更加容易的編碼,根據(jù)特定的規(guī)則對(duì)DCT變換塊的矩陣元素作了修改。
根據(jù)本發(fā)明使用的方法與標(biāo)準(zhǔn)的MPEG量化相似,并且使用下面的公式實(shí)現(xiàn)qcoeff(j)=((data(j)*16)+(matrix(j)*0.5)matrix(j)*(217QP*2+1))/217]]>其中,qcoeff(j)是與量化之后的DCT變換塊對(duì)應(yīng)的矩陣的第j個(gè)元素,data(j)是與量化之前的DCT變換塊對(duì)應(yīng)的矩陣的第j個(gè)元素,matrix(j)是量化矩陣的第j個(gè)元素,以及QP是量化因子(一個(gè)標(biāo)量值)。
反量化data(j)=(qcoeff(j)*2+1)*matrix(j)*QP16]]>量化矩陣matrix(j)與DCT變換塊或原始?jí)K本身具有相同的尺寸(例如16×16,8×8等)。
由本發(fā)明方法提供的解決方案與已知的MPEG量化方法的不同在于它根據(jù)量化因子來(lái)選擇量化矩陣matrix(j)。已知的MPEG量化使用單個(gè)matrix(j)量化矩陣。
量化矩陣和QP量化因子之間的對(duì)應(yīng)關(guān)系是通過(guò)將整個(gè)量化域劃分成N個(gè)子域而實(shí)現(xiàn)的,每個(gè)子域都被賦予一個(gè)先前指定的帶寬范圍。在本發(fā)明的一個(gè)實(shí)施例中,QP在1和36之間,該區(qū)間被劃分成如下的多個(gè)(在一方面,為四個(gè))子域(1-4),(4-8),(8-20),(20-36)。
賦予這些子域的帶寬范圍是(6000-1000k比特/s,800-1000k比特/s,400-800k比特/s,100-400k比特/s)。
這意味著向劃分的QP域分配了一個(gè)優(yōu)化的4×3矩陣表(對(duì)應(yīng)于三種不同的塊尺寸),該表的每個(gè)元素是整個(gè)量化矩陣matrix(j)。
由于matrix(j)的尺寸與塊尺寸相同(4×4,8×8,16×16),向這些塊尺寸中的每一個(gè)分配了單獨(dú)的矩陣,并且這樣,該表的每一行包括三個(gè)單元(換句話說(shuō),向每個(gè)子域賦予了三個(gè)矩陣)。
因而,在該方法修改QP的情況下,向新的量化因子賦予了與給定帶寬相對(duì)應(yīng)的最優(yōu)表行(最優(yōu)矩陣)。
IV.6.對(duì)量化的系數(shù)進(jìn)行編碼在本發(fā)明的壓縮系統(tǒng)的一個(gè)具體實(shí)現(xiàn)中,實(shí)現(xiàn)了三種不同的用于對(duì)系數(shù)進(jìn)行編碼的方法。雖然這些方法的基本原理眾所周知,為了清楚起見(jiàn),下面將對(duì)它們作簡(jiǎn)要解釋。
IV.6.1.基于離散余弦變換的DC值之差分的編碼方法正如其名字所顯示的,這種方法包括對(duì)連續(xù)塊的DC值彼此相減的步驟以及使用一種算術(shù)編碼方法(算術(shù)編碼的原理眾所周知并在本文后面詳細(xì)說(shuō)明)對(duì)得到的差分進(jìn)行編碼的步驟。
Xdpcm=X(i)-X(i-1)該方法也被稱為差分脈沖編碼調(diào)制(DPCM),并且基于觀察到連續(xù)DC值之間的差分通常很小,因此可以用比這些值本身更少的比特對(duì)差分進(jìn)行編碼。因?yàn)楸景l(fā)明方法使用多種塊尺寸,注意到只有相同尺寸塊的DC值可被有利地彼此相減很重要,因?yàn)閴K尺寸確定了DC系數(shù)的大小。
該算術(shù)編碼方法對(duì)每種塊尺寸使用專門(mén)的參數(shù)進(jìn)行編碼(對(duì)編碼區(qū)間的細(xì)分,編碼區(qū)間的上限/下限,等)。
IV.6.2. AC值的游程編碼以及對(duì)得到的壓縮值的算術(shù)編碼AC系數(shù)是通過(guò)所謂的Z字表(Zig-Zag表)的方法(見(jiàn)圖4,37)獲得的并且用已知的游程方法壓縮。
游程編碼方法生成有序?qū)?系數(shù)出現(xiàn)次數(shù)),其中后面的值表示給定系數(shù)在數(shù)據(jù)序列中出現(xiàn)的次數(shù)。由于一個(gè)給定塊中有序?qū)Φ目倲?shù)無(wú)法預(yù)計(jì),要么說(shuō)明有序?qū)Φ臄?shù)量,要么在最后一個(gè)有序?qū)χ蟛迦雺K結(jié)束碼。
如果最后有序?qū)Φ南禂?shù)值為零,不需要對(duì)所述的最后一個(gè)有序?qū)M(jìn)行編碼——將塊結(jié)束碼寫(xiě)入序列就足夠了。系數(shù)-出現(xiàn)次數(shù)對(duì)以相反的順序(出現(xiàn)次數(shù)系數(shù))被寫(xiě)入待編碼的數(shù)據(jù)序列。原因在于以這種方式,零值的出現(xiàn)次數(shù)參數(shù)可被用作塊結(jié)束碼(當(dāng)然沒(méi)有對(duì)應(yīng)的系數(shù)),因?yàn)槿绻杏行驅(qū)Χ际怯行У模筒粫?huì)發(fā)生出現(xiàn)次數(shù)為零的組合,因此該該碼可以被安全地用作塊結(jié)束碼。
如果該塊在編碼前僅包含零值,那么只有塊結(jié)束碼被編碼。在這種情況下,在塊重建過(guò)程中,在解碼前將給定塊清零(用零填充)。由游程方法產(chǎn)生的對(duì)最后也用算術(shù)編碼進(jìn)行編碼。
IV.6.3.使用常規(guī)參數(shù)和由神經(jīng)網(wǎng)絡(luò)方法預(yù)測(cè)的參數(shù)的AC值算術(shù)編碼在這種方法中,直接使用算術(shù)方法對(duì)AC系數(shù)進(jìn)行編碼,而不用中間的游程編碼。在根據(jù)本發(fā)明在編碼器中實(shí)現(xiàn)的方法之一中,執(zhí)行算術(shù)編碼,以便通過(guò)一個(gè)模函數(shù)由先前編碼的系數(shù)的值確定當(dāng)前系數(shù)被編碼時(shí)所處的級(jí)別(在許多方面,這與無(wú)神經(jīng)網(wǎng)絡(luò)的常規(guī)算術(shù)編碼很相似)。該模函數(shù)通常僅僅確保在多于一個(gè)的相同的AC系數(shù)彼此相鄰時(shí),這些系數(shù)在同一級(jí)別被編碼。神經(jīng)算術(shù)編碼模塊的工作原理將在本文的后面詳細(xì)解釋。在這里提到下面一點(diǎn)就足夠了在本發(fā)明的神經(jīng)算術(shù)編碼器中,沒(méi)有依賴于AC值的參數(shù)(區(qū)間范圍,區(qū)間細(xì)分)。沒(méi)有使用塊結(jié)束碼,相反,通過(guò)輸出實(shí)際的位置加一,記錄了被變換且被量化的塊中最后一個(gè)非零AC系數(shù)的位置。這是必要的,因?yàn)槿绻谝粋€(gè)塊中所有的AC系數(shù)為零,有可能通過(guò)輸出一個(gè)零來(lái)指出在輸出的數(shù)據(jù)流中沒(méi)有更多的與給定塊相關(guān)的數(shù)據(jù)被編碼(換句話說(shuō),該塊僅包含零)。
例如位置0 1 2 3 4 5 6 7系數(shù)63 11 21 32 0 0 0 0輸出3 63 11 21 32其中3指出了最后的有效(非零)位置。然而,這種安排不能夠指出所有數(shù)據(jù)為零的情況,因?yàn)槿绻谖恢?發(fā)現(xiàn)1,我們應(yīng)該仍然為最后一個(gè)有效(非零)位置編碼一個(gè)0。因此,除了所有的數(shù)據(jù)都為零的時(shí)候,位置值增加1。
因此輸出數(shù)據(jù)序列如下4 63 11 21 32,或者如果全部為零,輸出僅為0。
作為上述方法的一個(gè)備選,可以設(shè)想對(duì)每個(gè)處于預(yù)定水平的系數(shù)都編碼一個(gè)0,并且如果達(dá)到最后一個(gè)非零值,則編碼一個(gè)1。
例如水平00 0 0 1其中“1”指示了最后一個(gè)非零數(shù)據(jù)水平163 11 21 32在根據(jù)本發(fā)明實(shí)現(xiàn)的編碼模塊中,上面描述的兩種方法之一被用于為熵編碼準(zhǔn)備AC數(shù)據(jù)。然而,也可以利用其它變換而不背離本發(fā)明的范圍。
IV.6.4.在熵編碼過(guò)程中,在測(cè)試模式中執(zhí)行了方法2(見(jiàn)IV.6.2章)以及方法3(見(jiàn)IV.6.3章),并且最后應(yīng)用產(chǎn)生較短數(shù)據(jù)序列的方法。當(dāng)然,必須在編碼的數(shù)據(jù)流中以某種方式標(biāo)識(shí)出所選擇的方法。
依照本發(fā)明,總是執(zhí)行(編碼DC系數(shù)的)方法1,并將已編碼數(shù)據(jù)寫(xiě)入輸出數(shù)據(jù)流,隨后利用神經(jīng)熵編碼模塊對(duì)其進(jìn)行編碼。當(dāng)然,也可以利用其它已知的熵編碼方法。
為了清楚起見(jiàn),讓我們考慮使用方法2和3時(shí)(分別在IV.6.2和IV.6.3章)單個(gè)子塊的輸出數(shù)據(jù)流的格式(在它進(jìn)入算術(shù)編碼器之前)。
2.|0|PRED|DPCM|AC|EOB或當(dāng)全部為零時(shí)為|0|PRED|DPCM|EOB3.|1|PRED|DPCM|POS|AC或當(dāng)全部為零時(shí)為|1|PRED|DPCM|EOB其中起始比特標(biāo)識(shí)了編碼模式PRED預(yù)測(cè)類型DPCM由差分編碼所編碼的DC系數(shù)AC 一個(gè)或多個(gè)AC系數(shù)POS AC系數(shù)的位置EOB 塊結(jié)束字符。
對(duì)整個(gè)16×16塊編碼的格式
|QT=0000|
,
,
,
其中QT(四杈樹(shù))是在塊被劃分成四個(gè)子塊并且每個(gè)子塊應(yīng)用類型-2編碼的情況下描述塊分割的數(shù)據(jù)。
或者|QT=0001|
,|
(2×4×4)
,|
(2×4×4)
,(1×8×8)
,
(2×8×8)意味著16×16的塊包含三個(gè)未被再劃分的8×8子塊,以及第四個(gè)(事實(shí)上首先到來(lái))被再劃分成四個(gè)4×4子塊的8×8塊。
IV.7.UV色面的內(nèi)部預(yù)測(cè)編碼在已知的MPEG編碼方法中,給定幀的像素?cái)?shù)據(jù)從RGB被轉(zhuǎn)換到所謂的YUV2格式。這里Y代表亮度信號(hào),而UV是色差(色度)信號(hào)。
UV表面的物理尺寸被縮小到相對(duì)于Y的一半(雖然這引起了數(shù)據(jù)丟失,但已經(jīng)證明這種丟失是可以接受的,并且不會(huì)導(dǎo)致質(zhì)量上的嚴(yán)重下降)。
因而,對(duì)每個(gè)16×16的Y塊,都賦予一個(gè)8×8的U塊和一個(gè)8×8的V塊(如圖12中所示)。
這樣,當(dāng)將U和V塊分割成子塊時(shí),只有8×8和4×4尺寸的塊是適合使用的(因?yàn)?×2像素的子塊不會(huì)比4×4或8×8的塊壓縮地更好,它們不值得使用)。實(shí)際上,以與已經(jīng)描述的相同的方式進(jìn)行對(duì)塊分割的分析,最重要的區(qū)別在于,這里僅僅使用了TH8方差閾值進(jìn)行比較。必須記住,與方差比較的TH8是一個(gè)經(jīng)驗(yàn)值,而方差是以類似于方程II的方式計(jì)算出來(lái)的。如果被測(cè)試塊的方差滿足條件TH8≥方差,那么使用8×8尺寸對(duì)該塊進(jìn)行編碼,否則使用4×4像素的尺寸。
對(duì)于U塊和V塊的預(yù)測(cè),僅僅利用了DC預(yù)測(cè)(經(jīng)驗(yàn)顯示使用其它預(yù)測(cè)模式的增益是微小的)。
其它變換與上面描述的相同。唯一的區(qū)別在于量化步長(zhǎng)(量化階)。
數(shù)據(jù)塊的輸出格式(在算術(shù)編碼之前)如下|0|M|DPCM|AC|EOB或當(dāng)全部為零時(shí)為|0|M|DPCM|EOB|1|M|DPCM|POS|AC或當(dāng)全部為零時(shí)為|1|M|DPCM|EOB其中M是表示塊分割的比特。例如,如果該塊未被分割則M=0,如果它被分割則M=1。
現(xiàn)在讓我們回到所謂的“幀間”塊的編碼,其中在另外一個(gè)幀中為該待編碼塊搜索參考?jí)K。
V.使用動(dòng)態(tài)變化的塊尺寸的幀間預(yù)測(cè)編碼V.1正如已經(jīng)指出的那樣,幀間編碼是基于時(shí)間冗余的。這意味著將當(dāng)前幀與前導(dǎo)幀或后續(xù)幀作了比較,并且只對(duì)兩個(gè)幀之間的差異進(jìn)行了編碼。該方法的參考搜索模式如圖15所示。下面的備選搜索是可行的僅在三個(gè)前導(dǎo)P-型幀中搜索(圖15a);僅在兩個(gè)前導(dǎo)B-型幀中搜索(圖15b);在前導(dǎo)和后續(xù)運(yùn)動(dòng)補(bǔ)償參考中搜索(圖15c,在這種情況下,B-型幀通常不能用作參考)。
該方法的基本原理與已知方法相同在參考幀中指定的搜索范圍內(nèi)為待編碼幀執(zhí)行搜索,接著將冗余信息(差分塊)與參考?jí)K的位置(或更確切地,運(yùn)動(dòng)向量)一起編碼,并且這里差分塊是通過(guò)從位于所述搜索確定的位置上的塊的各個(gè)像素中減去待編碼塊的對(duì)應(yīng)像素而計(jì)算得到的。
在可能的搜索方法中,最佳結(jié)果將由所謂的“完全搜索”產(chǎn)生。然而,這種搜索將帶來(lái)巨大的計(jì)算負(fù)載,因?yàn)楫?dāng)在搜索范圍中所有可能的位置搜索一個(gè)匹配塊時(shí),它涉及將16×16的塊與位于從該搜索范圍的每個(gè)像素開(kāi)始的搜索范圍中的數(shù)據(jù)進(jìn)行比較。實(shí)際上,對(duì)于一個(gè)32×32像素的搜索范圍,這將意味著1024*256=262144次加法和減法以及用于確定差分絕對(duì)值的操作,而僅僅為了找到一個(gè)匹配的16×16的參考?jí)K。由于一個(gè)720×576像素的幀包含1620個(gè)塊(大小為16×16像素),全部計(jì)算術(shù)量將超過(guò)424百萬(wàn)。這就是為什么出于實(shí)際目的,通常應(yīng)用所謂的“快速搜索”而不是完全搜索?!翱焖偎阉鳌狈椒☉?yīng)用較少的測(cè)試點(diǎn)(典型地小于64),并且有這樣的缺點(diǎn)只有在位移較小時(shí)(典型地小于1-4像素),就是說(shuō),視頻連續(xù)鏡頭(footage)中的運(yùn)動(dòng)較慢時(shí),該方法才是成功的。
在位移較大的情況下,成功搜索的概率迅速下降??焖偎阉鞣椒ǖ牧硪粋€(gè)缺點(diǎn)在于,即使搜索看起來(lái)成功,不能確定所發(fā)現(xiàn)的位置是搜索范圍內(nèi)的最小點(diǎn)(最佳參考?jí)K的位置)。
實(shí)際上,本發(fā)明中實(shí)現(xiàn)的搜索方法可被認(rèn)為是一種“完全搜索”,在慢速運(yùn)動(dòng)的情況下,該方法僅比真正的完全搜索方法高少許的計(jì)算負(fù)載。即使在較快運(yùn)動(dòng)(更大位移)的情況下,本發(fā)明方法的計(jì)算負(fù)載僅僅是標(biāo)準(zhǔn)“完全搜索”方法所需的負(fù)載的一部分。
V.2根據(jù)本發(fā)明實(shí)現(xiàn)的搜索方法是基于所謂的“螺旋搜索”,該方法實(shí)際上執(zhí)行如下。
V.2.1在參考幀中指定了一個(gè)搜索范圍。搜索范圍中心的坐標(biāo)與搜索樣本(待編碼塊)中心的坐標(biāo)相同。
在下一步驟中,搜索樣本,就是說(shuō),待編碼塊88被劃分成較小的子塊(見(jiàn)圖16)。在本發(fā)明的一個(gè)實(shí)施例中,使用4×2的子塊產(chǎn)生了良好的結(jié)果?,F(xiàn)在,使用一種與方程II相類似的表達(dá)式,為每個(gè)子塊計(jì)算方差值。如果至少有兩個(gè)子塊的方差值大于所有其它子塊的方差值,它們的方差和大于預(yù)定義的經(jīng)驗(yàn)常數(shù)THV22,并且兩個(gè)子塊沒(méi)有鄰接(例如子塊88b和88c),那么在搜索過(guò)程中僅僅測(cè)試16×16的塊88的這些子塊。
在條件THV22≤方差1+方差2不滿足的情況下(這里方差1和方差2是兩個(gè)方差最大的非鄰接子塊的方差值),那么用四個(gè)方差最大的非鄰接子塊重復(fù)上面的操作,將這些子塊的組合方差與另一個(gè)常數(shù)THV24進(jìn)行比較(這由塊89的子塊89a,89b,89c,89d示出)。
如果對(duì)于四個(gè)子塊的方差,該條件仍然不為真,則將所有子塊合并成4×4的子塊,并且利用常數(shù)THV42和兩個(gè)子塊重復(fù)上述操作,并且如果需要,利用常數(shù)THV44和四個(gè)子塊重復(fù)上述操作(見(jiàn)塊90的子塊90a,90b),在后面的情況中試圖發(fā)現(xiàn)四個(gè)方差最大的非鄰接子塊。
如果在上面任何一種情況中各個(gè)條件都不滿足,則使用位于該16×16塊的四個(gè)角和中心的五個(gè)4×4子塊執(zhí)行參考搜索(圖16)。
常數(shù)THV指定了上面每種情況中子塊的組合方差應(yīng)當(dāng)?shù)扔诨虺^(guò)的最小方差。
上面詳述的過(guò)程可被直觀地概括為試圖在16×16的塊中發(fā)現(xiàn)最詳細(xì)的子塊,假定它們?cè)谒阉鞣秶杏衅ヅ涞膮⒖?,其它?xì)節(jié)較少的子塊也有合適的參考。
在參考幀中符合搜索樣本的位置處指定了螺旋的中心,并且接著在加寬的周期中用減少的搜索樣本測(cè)試指定點(diǎn)周圍的塊,如上所述。樣本模式子塊的相對(duì)位置保持不變,對(duì)該搜索范圍進(jìn)行掃描。
V.2.2根據(jù)下面的公式執(zhí)行測(cè)試MSE=Σj=0Mabs(A(j)-B(j))2]]>其中M是塊長(zhǎng)度。
MSE是所謂的均方誤差。每次發(fā)現(xiàn)MSE值小于當(dāng)前計(jì)算出的最小MSE時(shí),將新的MSE值與當(dāng)前位置一起寫(xiě)入臨時(shí)緩沖區(qū),例如一個(gè)64元素的循環(huán)緩沖區(qū)。如果該緩沖區(qū)是滿的,從第一個(gè)元素開(kāi)始重寫(xiě)數(shù)據(jù)。
優(yōu)選地,通過(guò)也從其它方面分析所獲得的MSE值,可以對(duì)該搜索方法進(jìn)行微調(diào)。例如,如果搜索發(fā)現(xiàn)多個(gè)滿足匹配條件(例如MSE小于最大允許誤差)的位置,且這些位置從起點(diǎn)看來(lái)位于相同方向(在同側(cè)),并且當(dāng)搜索離開(kāi)這些位置的區(qū)域時(shí)誤差隨之增加,那么可以中止該搜索,因?yàn)楹苡锌赡茉撍阉麟x開(kāi)了最優(yōu)點(diǎn)。
在搜索的結(jié)尾處,在已經(jīng)測(cè)試了每個(gè)點(diǎn)或中止了搜索之后,循環(huán)緩沖區(qū)包含了可能是最佳參考位置候選的那些位置。(在1024個(gè)可能的位置中,僅保存了少量位置,例如按照上面的例子,64個(gè)位置。)接著再次測(cè)試了這些存儲(chǔ)的位置,但這次用整個(gè)16×16的塊,并且確定了產(chǎn)生最小誤差的位置。
V.2.3.現(xiàn)在,將從待編碼塊以及新建立的參考?jí)K計(jì)算出的SAD16值(絕對(duì)差分和,下標(biāo)指示塊尺寸)與一個(gè)經(jīng)驗(yàn)常數(shù)MAXSAD16進(jìn)行比較。使用下面的公式來(lái)計(jì)算SADSAD=Σj=0Mabs(A(j)-B(j))]]>其中M是塊長(zhǎng)度,A和B代表參考?jí)K和待編碼塊的元素。
常數(shù)MAXSAD16指定了與一個(gè)16×16塊相匹配的參考?jí)K的最大可接受誤差。如果由上述搜索找到的塊的誤差不可接受,在當(dāng)前幀的前導(dǎo)或后繼幀中(依賴于幀類型)重復(fù)參考搜索。如果沒(méi)有能夠給出可接受結(jié)果的參考幀,就選擇產(chǎn)生最小誤差的那個(gè)。接著該塊被分割成四個(gè)4×4的子塊并且為每個(gè)子塊計(jì)算出了SAD8的值并將其與(經(jīng)驗(yàn))常數(shù)MAXSAD8進(jìn)行比較。
此后,測(cè)試包含在與參考幀相關(guān)的緩沖區(qū)中的位置,并且選擇其中能夠產(chǎn)生可接受結(jié)果的8×8子塊最多(滿足條件SAD8≤MAXSAD8)的參考幀和位置。
對(duì)于有過(guò)多誤差的每個(gè)子塊,使用8×8的塊尺寸在一個(gè)減小的搜索范圍內(nèi)從給定子塊的位置開(kāi)始重復(fù)該搜索。如果誤差仍然超過(guò)極限,將由8×8搜索發(fā)現(xiàn)的最佳子塊再次細(xì)分為4×4的子塊,并且在滿足條件SAD4>MAXSAD4的子塊上重復(fù)該搜索。
如果一個(gè)特定塊的所有子塊都必須被細(xì)分為4×4子塊,那么對(duì)于這個(gè)特定塊,在當(dāng)前參考幀中搜索不成功的情況下,可以在所有參考幀中重復(fù)參考搜索。
如果搜索結(jié)束后發(fā)現(xiàn)各個(gè)子塊的誤差仍然過(guò)多,就對(duì)搜索不成功的塊進(jìn)行標(biāo)記。在本方法的后續(xù)步驟中,這些塊將作為內(nèi)部塊編碼。
在所有參考幀中搜索意味著,如果例如在第二個(gè)幀中得到滿意的結(jié)果而搜索結(jié)束,那么就不會(huì)在第三個(gè)幀中繼續(xù)搜索。
V.3.處理16×16分割的塊如果在16×16塊的情況下,在當(dāng)前幀中參考搜索不成功(沒(méi)有發(fā)現(xiàn)參考?jí)K),并且當(dāng)前幀是P-型,就在前導(dǎo)P-型參考幀中重復(fù)搜索,最大深度為3幀。如果搜索成功,就會(huì)紀(jì)錄參考幀的編碼,并且結(jié)束搜索。否則,該方法選擇誤差最小的幀,將該塊劃分成四個(gè)8×8子塊,并且在這些誤差超過(guò)極限的子塊中繼續(xù)搜索。如果當(dāng)前幀是B-型,首先在后繼P幀中執(zhí)行搜索,接著在三個(gè)前導(dǎo)P幀中執(zhí)行搜索。如果在B-型幀情況下,在所有參考幀中搜索都不成功,就會(huì)根據(jù)后繼幀和其中一個(gè)前導(dǎo)幀產(chǎn)生一個(gè)平均參考?jí)K,這是通過(guò)使用MPEG方法中應(yīng)用的簡(jiǎn)單表達(dá)式,對(duì)后繼幀和其中一個(gè)前導(dǎo)幀中發(fā)現(xiàn)的最佳候選參考?jí)K的位置進(jìn)行插值而實(shí)現(xiàn)的。如果產(chǎn)生的插值塊和原始?jí)K之間的平方誤差仍然太大,就選擇誤差最小的參考幀,并且將該塊劃分成四個(gè)8×8的子塊。
V.4.處理8×8分割的塊
8×8塊的處理幾乎與16×16塊的處理相同,區(qū)別在于如果在處理結(jié)束時(shí)搜索仍然不成功,將塊再次細(xì)分成4×4像素的子塊。
V.5.處理4×4分割的塊4×4塊的處理幾乎與8×8塊的處理相同,唯一的區(qū)別在于,在搜索仍然不成功的情況下,該誤差塊被標(biāo)記為內(nèi)部塊。
V.6.以1/2,1/4和1/8像素解析度擴(kuò)展搜索當(dāng)以全像素解析度對(duì)塊的處理結(jié)束之后,以1/2,1/4和1/8像素解析度執(zhí)行搜索(在濾波/插值的參考中搜索)。唯一的例外是B-型幀的插值模式,在插值前必須執(zhí)行1/2,1/4和1/8像素解析度的搜索。因?yàn)?/2,1/4和1/8像素解析度的搜索在本質(zhì)上與本文中前面描述的已知方法相同,這里就不再解釋該過(guò)程。
在實(shí)現(xiàn)的方法中,向每個(gè)幀最多賦予三個(gè)參考幀。它們的區(qū)別在于其尺寸以及產(chǎn)生它們的濾波方法不同(見(jiàn)圖17)。
每個(gè)搜索過(guò)程使用一個(gè)相關(guān)的參考幀。1/2和1/4像素解析度的搜索使用1∶4比例插值的參考幀,而1/8像素解析度的搜索使用1∶8比例插值的參考幀。全像素搜索使用1∶1比例插值的參考幀。由于實(shí)際上插值的參考幀和濾波器的使用是眾所周知的,這里不需要對(duì)其進(jìn)行詳述。
與前面的情況類似,應(yīng)用了一種螺旋搜索,但這里由于極大地減小了搜索范圍,測(cè)試點(diǎn)的數(shù)量小于20。通常,只有在SAD=0時(shí)才中止搜索(當(dāng)前塊和參考?jí)K完全匹配)??梢杂妹總€(gè)塊尺寸執(zhí)行搜索,但不進(jìn)行塊簡(jiǎn)化(就是說(shuō),只有整個(gè)塊而不是子塊被比較),這意味著對(duì)一個(gè)16×16的塊進(jìn)行測(cè)試涉及到256個(gè)減法操作。
當(dāng)從匹配的參考?jí)K減去待編碼塊之后,將得到的簡(jiǎn)化塊從空間表示變換到頻率表示。
V.7.
在為16×16的塊查找參考?jí)K以及分割參考?jí)K的過(guò)程成功完成之后,待編碼塊也被劃分成相同尺寸的子塊,并且從參考?jí)K的子塊中減去這些待編碼塊的子塊。接著,這些差分要經(jīng)歷離散余弦變換和量化,并且對(duì)得到的塊中包含的系數(shù)應(yīng)用了AC/DC預(yù)測(cè)。與內(nèi)部塊的預(yù)測(cè)過(guò)程類似,該預(yù)測(cè)方法生成了變換塊的DC值之間的差分,并且在AC系數(shù)的第一水平/垂直線上應(yīng)用了水平/垂直預(yù)測(cè)。該方法和前面方法的區(qū)別在于上面描述的內(nèi)部預(yù)測(cè)從待編碼塊的像素值中減去了鄰接像素的實(shí)際像素值,而在這里從DCT變換塊的元素中減去了鄰接DCT變換塊的元素。該方法進(jìn)一步提高了熵編碼過(guò)程中變換塊的編碼效率。
關(guān)于應(yīng)當(dāng)應(yīng)用哪種預(yù)測(cè)模式(水平或垂直)的決策是根據(jù)變換塊周圍塊的DC系數(shù)之間的差分作出的,其中塊的相對(duì)位置可能如下CBAX其中X代表正被處理的變換塊,而A,B,C是周圍塊。
預(yù)測(cè)模式(pred)是通過(guò)下面的條件表達(dá)式選擇的pred=abs(A-C)<abs(C-B)其中,A,B和C是正被處理塊的周圍塊的DC系數(shù)。
如果條件為真,應(yīng)用垂直預(yù)測(cè),否則選擇水平模式。由于確定預(yù)測(cè)模式的相互關(guān)系在執(zhí)行塊重建時(shí)可用,不需要在輸出中紀(jì)錄所選擇的模式。
V.8.
本節(jié)給出了用于描述塊分割的數(shù)據(jù)的一種可行的數(shù)據(jù)格式和編碼方法。
對(duì)待編碼塊的塊分割的描述與論述內(nèi)部幀的小節(jié)中給出的相似。
L是一個(gè)最大2比特長(zhǎng)的值,它描述了16×16塊的分割。如果該塊沒(méi)有被劃分則比特1為0,如果它被劃分則為1。如果該塊被標(biāo)記為內(nèi)部塊則比特2為1。當(dāng)每個(gè)8×8子塊被再次劃分成4×4子塊并且超過(guò)50%的這些子塊被標(biāo)記為內(nèi)部塊時(shí),會(huì)發(fā)生后一種情況。在那種情況下,系統(tǒng)將根據(jù)對(duì)內(nèi)部塊編碼的過(guò)程對(duì)給定塊進(jìn)行編碼。
熵編碼之前的數(shù)據(jù)如下RFIDX是所應(yīng)用的參考幀的幀號(hào)MV是運(yùn)動(dòng)向量DC是離散余弦變換的第一個(gè)系數(shù)以及
AC代表其他的DCT系數(shù)IP指示了B幀的插值模式I代表內(nèi)部模式P是內(nèi)部模式預(yù)測(cè)的編號(hào)用于P幀的模式如下模式0|L|RFIDX|MV|DC|AC模式1..15|L|QT|RFIDX|I|MV|DC|AC...I|MV|DC|AC用于B幀的模式如下模式0|L|RFIDX|IP|MV|DC|AC模式1..15|L|QT|RFIDX|I|IP|MV|DC|AC...I|IP|MV|DC|AC如果I=1,對(duì)給定塊的描述變?yōu)閨I|P|DC|AC。
讓我們看兩個(gè)P-型幀的具體例子1|0001|2| 1|0001|0|0 MV4 DC4 AC4 1 P DC4 AC40 MV4 DC4 AC4 0 MV4 DC4 AC40 MV4 DC4 AC4 0 MV4 DC4 AC40 MV4 DC4 AC4 0 MV4 DC4 AC40 MV8 DC8 AC8 0 MV8 DC8 AC80 MV8 DC8 AC8 0 MV8 DC8 AC80 MV8 DC8 AC8 0 MV8 DC8 AC8四個(gè)4×4塊和四個(gè)4×4塊,其中第一個(gè)是內(nèi)部塊三個(gè)8×8塊 三個(gè)8×8塊(在這個(gè)例子中,變量“AC”通常代表多個(gè)數(shù)據(jù)元素。)已經(jīng)對(duì)16×16塊的Y色面進(jìn)行編碼,下一步是對(duì)UV色面進(jìn)行編碼。該塊的尺寸與Y塊以及其中子塊的尺寸是成比例的。
在Y塊的尺寸為16×16像素的情況下,UV塊的尺寸為8×8像素,如果Y塊的尺寸為8×8,那么UV塊的尺寸為4×4,并且最后,對(duì)于一個(gè)4×4的Y塊,對(duì)應(yīng)的UV塊尺寸為2×2。
另外,U和V塊的分割與Y塊的分割相同。執(zhí)行UV塊的分割的方法與Y塊的相同。因而在編碼過(guò)程中,只有DC和AC值在熵編碼之前必須被順序地寫(xiě)出,因?yàn)樗衅渌鼣?shù)據(jù)(塊分割描述符,塊標(biāo)識(shí)符,等)已經(jīng)在Y塊中進(jìn)行了描述。
V.9.宏塊(運(yùn)動(dòng)向量和幀間塊)的預(yù)測(cè)為了對(duì)運(yùn)動(dòng)向量(就是說(shuō),指示相對(duì)于參考?jí)K的運(yùn)動(dòng)的向量)進(jìn)行最優(yōu)編碼,優(yōu)選地,運(yùn)動(dòng)向量以盡可能短的格式表示。這點(diǎn)可以通過(guò)從當(dāng)前運(yùn)動(dòng)向量中減去屬于位于當(dāng)前塊旁邊、上面或斜上方的塊的運(yùn)動(dòng)向量而實(shí)現(xiàn)。在這三種可能的鄰接運(yùn)動(dòng)向量中,選擇了與平均值最接近的一個(gè),或換言之,選擇了比最小值大但比最大值小的那個(gè)。
V.10.最后,使用熵編碼模塊對(duì)數(shù)據(jù)進(jìn)行編碼。下面我們將注意力轉(zhuǎn)到對(duì)本發(fā)明的二進(jìn)制多級(jí)算術(shù)編碼模塊的描述。
VI.神經(jīng)算術(shù)編碼模塊根據(jù)本發(fā)明的熵編碼模塊使用了二進(jìn)制自適應(yīng)技術(shù)。這意味著在關(guān)于已經(jīng)接收的比特模式和出現(xiàn)頻率的函數(shù)中,逐比特地對(duì)輸入數(shù)據(jù)進(jìn)行處理。
VI.1.該方法的首要設(shè)計(jì)目標(biāo)是以相對(duì)簡(jiǎn)單的計(jì)算獲得最大可能的壓縮。本發(fā)明方法可以不用除法實(shí)現(xiàn),僅僅執(zhí)行兩次乘法和幾次加法以及邏輯操作。所有其它操作都是基于整數(shù)的。
本發(fā)明方法是所謂的算術(shù)編碼方法。算術(shù)編碼本質(zhì)上是一種已知的方法。算術(shù)編碼的基本原理涉及根據(jù)接收到的待編碼數(shù)據(jù)序列的數(shù)據(jù)修改一個(gè)區(qū)間(范圍)的上限和下限。只有即將到來(lái)的數(shù)據(jù)的分布在某種程度上已知時(shí),換言之,如果對(duì)于下一個(gè)輸入數(shù)據(jù)元素的值的概率估計(jì)在某種程度上已知時(shí),算術(shù)編碼器才真正有效。
下面的短小算法在二進(jìn)制數(shù)據(jù)流(僅包含0和1符號(hào))上執(zhí)行了算術(shù)編碼。當(dāng)前待編碼的數(shù)據(jù)(數(shù)據(jù)流的下一個(gè)比特)被存儲(chǔ)在“bit”變量中。編碼區(qū)間的上限和下限是變量“area
”和“area[1]”。
area[inverz(bit)]=area
+(area[1]-area
)*prob216+bit]]>if((area[1]-area
)<256){outdata=area[1]224]]>area
=area
*28area[1]=area[1]*28}prob=calc_next_probe(bir)提高編碼效率的關(guān)鍵因素是如何確定“prob(概率的)”變量(下文中probe(探查)值或probe)的值。在上面的例子中,probe值由“calc_next_probe(bit)”函數(shù)返回。
數(shù)列“array
”包含兩個(gè)32位值,即“area
”和“area[1]”變量,它們存儲(chǔ)了編碼區(qū)間的上限和下限。從算術(shù)編碼理論可以得知,利用probe值縮放區(qū)間(area
,area[1])。在已知的方法中,prob值通常是作為先前到達(dá)的比特的出現(xiàn)頻率的函數(shù)而確定的。根據(jù)新接收到的比特的值,用所述比例值修改編碼區(qū)間的下限或上限??梢孕薷脑搮^(qū)間(可編碼新比特)直到上限和下限的差變得小于256。原則上,還可以使用其它值,但為了對(duì)付溢出,256似乎是最實(shí)用的值。因而,當(dāng)上限和下限的差變得小于256時(shí),將8個(gè)最高有效位寫(xiě)入輸出數(shù)據(jù)序列,并且表示下限和上限的變量被向左移動(dòng)8個(gè)位置。
這可以用算術(shù)形式寫(xiě)為area[1]=area[1]*256area
=area
*256VI.2.對(duì)probe值的確定如下我們引入頻率表的概念,并且定義兩個(gè)用于描述到達(dá)數(shù)據(jù)序列中0和1的出現(xiàn)頻率的函數(shù),f(0)和f(1)。接收到的比特被提供給一個(gè)長(zhǎng)度為m比特的緩沖區(qū),其中2m=N,因此N的以2位底的對(duì)數(shù)提供了窗口寬度。
順序到達(dá)緩沖區(qū)的比特構(gòu)成了“窗口”變量(根據(jù)需要向左移動(dòng)緩沖區(qū)內(nèi)容)。將“窗口”變量刪減為長(zhǎng)度為m比特,以形成指向頻率表中一行的索引(存儲(chǔ)在“index”變量中)。在這里給出的例子中,頻率表有512行。頻率表的元素由變量FreqTbl[index]f0和FreqTbl[index]f1指定。這些變量顯示了當(dāng)比特組合與當(dāng)前存儲(chǔ)在緩沖區(qū)中的比特組合相同時(shí)(換言之,當(dāng)前比特組合被認(rèn)為是指向表中給定行的索引)接收到的比特為0和1的次數(shù)。
count=count+1if(count>=log2(N+1)){count=0window=0}window=window*2+bitFreqTbl[index].f0=FreqTbl[index].f0+(2*bit)FreqTbl[index].f1=FreqTbl[index].f1+(2-(2*bit))index=window mod Nsum=FreqTbl[index.f0+FreqTbl[index].f1prob=FreqTbl[index].f0*FracTbl[sum]210]]>if(sum>256){FreqTbl[index].f0=FreqTbl[index].f02]]>FreqTbl[index].f1=FreqTbl[index].f12+1]]>}在開(kāi)始?jí)嚎s時(shí),所有變量(除了N,其以2為底的對(duì)數(shù)給出了窗口長(zhǎng)度)被零填充。到達(dá)比特重寫(xiě)緩沖區(qū)(窗口)的最低有效位,并且根據(jù)新到達(dá)的比特更新了由先前緩沖區(qū)的值所尋址的頻率表的元素。很快就會(huì)變得很明顯,要求的重點(diǎn)在于應(yīng)該將先前的緩沖區(qū)值與晚一步到達(dá)的比特相關(guān)聯(lián),就是說(shuō),當(dāng)前正被處理的比特。正是這個(gè)特征使得在系統(tǒng)工作期間可能預(yù)測(cè)即將到達(dá)的比特的值。先前的緩沖值被存儲(chǔ)在變量“index”中,N是該變量的上限。
在該方法的下一步中,為下一個(gè)比特計(jì)算了prob值(“prob”變量的值)。該計(jì)算的確切公式為prob=FreqTbl[index].f0sum]]>但是這個(gè)表達(dá)式?jīng)]有被直接使用,因?yàn)榻Y(jié)果是個(gè)分?jǐn)?shù)。該計(jì)算(除法)將需要實(shí)數(shù)運(yùn)算,實(shí)數(shù)運(yùn)算對(duì)我們的目的而言太慢了。
相反,使用了一個(gè)512個(gè)元素的分?jǐn)?shù)表(由變量“FracTbl[sum]”表示),由頻率表對(duì)應(yīng)行中的比特頻率和為該表選擇了適當(dāng)?shù)脑?參看上面算法中的“sum”變量)。為了確定probe值,頻率表適當(dāng)行中的f0值被乘以從上面分?jǐn)?shù)表中獲得的值,并且接著乘積被乘以一個(gè)常數(shù),例如該乘積向右移10比特。這樣,獲得了prob值,該值將落在區(qū)間0..65535中,它反過(guò)來(lái)與區(qū)間0..1相類似。因?yàn)榉謹(jǐn)?shù)表包含512個(gè)元素(實(shí)際上是對(duì)1/sum適當(dāng)放大后的值,其中“sum”變量同時(shí)被用作指向表的一個(gè)索引),應(yīng)當(dāng)確?!皊um”變量不超過(guò)這個(gè)值。
通過(guò)測(cè)試“sum”的值,并且如果“sum”大于256則通過(guò)重新縮放f0和f1,實(shí)現(xiàn)這一點(diǎn)(因?yàn)椤皃rob”值實(shí)際上是由f0和f1的比例而不是它們的絕對(duì)值確定的,所以可以重新縮放它們)。
正如該算法所顯示的,該方法相當(dāng)簡(jiǎn)單。因?yàn)槌龜?shù)是2的冪,可以由右移操作來(lái)代替除法。MOD操作也可以由邏輯AND代替。
VI.3.正如已經(jīng)提到的,該方法在不同級(jí)別上執(zhí)行編碼。實(shí)際上,這僅僅影響prob變量。換言之,相同的編碼模塊可被用于所有的數(shù)據(jù)類型,只需要調(diào)整參數(shù)(N,窗口尺寸,編碼區(qū)間的范圍)。向每種數(shù)據(jù)類型賦予不同的級(jí)別,根據(jù)給定數(shù)據(jù)類型的需求,每個(gè)級(jí)別被劃分成多個(gè)子級(jí)別。例如,為了對(duì)4×4離散余弦變換操作的結(jié)果進(jìn)行編碼,定義了一種特定的級(jí)別,其具有賦予AC和DC系數(shù)的編碼的不同子級(jí)別。
常數(shù)N確定了窗口尺寸,換言之,與當(dāng)前正接收的比特一起測(cè)試的先前已接收的比特?cái)?shù)目。這個(gè)因子強(qiáng)烈影響編碼效率,但也增加了所需的內(nèi)存,因?yàn)槿绻龃驨就需要更多的內(nèi)存。
上面給出的方法是已知方法的一個(gè)快速整數(shù)運(yùn)算變種。通過(guò)適當(dāng)?shù)卣{(diào)節(jié)參數(shù),壓縮效率要比MPEG系統(tǒng)中使用的VLC方法提高10%。到目前為止,只有使用特別復(fù)雜的probe算法的方法才比該方法有更好的表現(xiàn)。為了提高效率,也應(yīng)該顯著地?cái)U(kuò)大頻率表。所選擇的probe算法以及頻率表尺寸一起影響該方法的執(zhí)行時(shí)間。
為本發(fā)明中使用的數(shù)據(jù)結(jié)構(gòu)確定probe值的最已知的方法是所謂的動(dòng)態(tài)馬爾可夫模型。然而,該方法需要使用一個(gè)至少64Kb的頻率表才能有效工作。如果所有用于編碼的子級(jí)別被設(shè)置為該尺寸(就是說(shuō),如果與不同塊尺寸相對(duì)應(yīng)的所有變量以及變量類型都以這種方式被編碼),僅為頻率表就需要分配超過(guò)16Mb的內(nèi)存。
這些問(wèn)題使得設(shè)計(jì)一種新的、更加有效的probe算法十分必要。
VI.4.使用神經(jīng)probe的算術(shù)編碼器VI.4.1.算術(shù)編碼一個(gè)很重要的缺陷在于為了最優(yōu)效率編碼,應(yīng)當(dāng)知道待編碼數(shù)據(jù)中出現(xiàn)的各個(gè)符號(hào)的出現(xiàn)概率。原則上,有可能考慮已經(jīng)出現(xiàn)的多個(gè)符號(hào)。不僅觀察單獨(dú)的符號(hào),而且觀察不同符號(hào)組的出現(xiàn)頻率將更加有效。然而,這需要存儲(chǔ)大量的頻率值。通過(guò)僅僅存儲(chǔ)實(shí)際上已經(jīng)出現(xiàn)的符號(hào)組合,而不是已經(jīng)出現(xiàn)的所有可能的符號(hào)組合(上下文),在一定程度上可以緩解這種情況。
這意味著應(yīng)當(dāng)引入一個(gè)額外符號(hào)(轉(zhuǎn)義符號(hào))來(lái)指示出現(xiàn)了一個(gè)新的符號(hào)組合。
已知的編碼方法,主要是PPM(部分匹配預(yù)測(cè))方法,檢查變長(zhǎng)的符號(hào)組合。當(dāng)編碼一個(gè)接收到的符號(hào)時(shí),首先測(cè)試允許的最長(zhǎng)組合。新到達(dá)的符號(hào)被添加到存儲(chǔ)的符號(hào)組,并且用當(dāng)前的符號(hào)組長(zhǎng)度執(zhí)行一個(gè)搜索來(lái)確定當(dāng)前的符號(hào)組是否已經(jīng)出現(xiàn)。例如,如果組長(zhǎng)度為4,那么新到達(dá)的符號(hào)與三個(gè)最近的符號(hào)一起被測(cè)試。如果該符號(hào)組合已經(jīng)出現(xiàn),使用賦予該給定符號(hào)組合的瞬時(shí)或恒定概率對(duì)其進(jìn)行編碼。在另一方面,如果該組合沒(méi)有出現(xiàn),編碼一個(gè)轉(zhuǎn)義符號(hào)來(lái)(對(duì)解碼器)指示該組合是新的,并且使用較短的組合長(zhǎng)度執(zhí)行搜索。
如果接收到的符號(hào)沒(méi)有被編碼到任何先前的組合中,使用賦予各個(gè)符號(hào)的出現(xiàn)概率的平均值對(duì)其進(jìn)行編碼。在編碼完成之后,如果需要的話使用添加的新組合來(lái)更新對(duì)符號(hào)組合出現(xiàn)次數(shù)進(jìn)行測(cè)量的計(jì)數(shù)器(就是說(shuō),量化符號(hào)組合的出現(xiàn)概率)。
由于該方法很慢并且有相當(dāng)高的內(nèi)存負(fù)載,不適合直接用于對(duì)視頻數(shù)據(jù)編碼。
然而,根據(jù)本發(fā)明,檢查變長(zhǎng)符號(hào)組合的原理被轉(zhuǎn)移到本發(fā)明使用的神經(jīng)編碼方法。必須注意到,應(yīng)用神經(jīng)網(wǎng)絡(luò)來(lái)確定算術(shù)probe值的想法不是新的。1996年由Schmidhuber和Heil實(shí)現(xiàn)了一種利用神經(jīng)網(wǎng)絡(luò)的方法。他們的方法以與PPM類似的方式來(lái)觀察先前接收到符號(hào)和新到達(dá)符號(hào)的共同出現(xiàn),并且從而確定probe值。借助這種已知的解決方案,不需要為搜索使用不同的符號(hào)組長(zhǎng)度,因?yàn)橹挥猩窠?jīng)網(wǎng)絡(luò)的那些輸入是有效的,其中當(dāng)前被測(cè)試的組合與早先被“訓(xùn)練”的組合之一之間有關(guān)聯(lián)。通過(guò)這種方式,自動(dòng)執(zhí)行對(duì)這些符號(hào)組合的選擇(識(shí)別)。然而,這種已知方法沒(méi)多大實(shí)際用處,因?yàn)橛?xùn)練過(guò)程非常長(zhǎng)。例如,在一個(gè)測(cè)試?yán)校?xùn)練網(wǎng)絡(luò)去識(shí)別大概20kB數(shù)據(jù)的相關(guān)性大概需要兩天時(shí)間。
Matthew V.Mahoney(Florida Institute of Technology)將神經(jīng)網(wǎng)絡(luò)技術(shù)的應(yīng)用推廣到二進(jìn)制算術(shù)編碼(其中只有0和1是要被編碼的符號(hào)),使用從神經(jīng)網(wǎng)絡(luò)理論中獲得的在線訓(xùn)練方法并且應(yīng)用自適應(yīng)學(xué)習(xí)速率而不是恒定學(xué)習(xí)速率。
然而,即使這種改進(jìn)方法也不足以被直接用于視頻編碼,因?yàn)樽顑?yōu)編碼必須的內(nèi)存需求太高。Mahoney的原始方法使用超過(guò)258kB內(nèi)存來(lái)對(duì)單個(gè)級(jí)別進(jìn)行編碼。如果該方法被用于128級(jí)別(128種不同的數(shù)據(jù)結(jié)構(gòu),考慮預(yù)測(cè)、塊尺寸、DC和AC系數(shù),等等),總共所需的內(nèi)存將大于32MB。然而,如果為視頻編碼僅僅定義一個(gè)級(jí)別,該方法將比使用多個(gè)級(jí)別的常規(guī)編碼效率要低。
已經(jīng)考慮了所有這些問(wèn)題,設(shè)計(jì)了一種創(chuàng)新的方法來(lái)確定神經(jīng)probe值。根據(jù)本發(fā)明的方法可以使用少至1-2kB的內(nèi)存對(duì)熵最大化。已經(jīng)發(fā)現(xiàn)僅僅值得將內(nèi)存增加到大概16kB,高于這個(gè)數(shù)字,編碼效率的提高可以被忽略。
VI.4.2.在下面幾頁(yè)中將對(duì)該方法進(jìn)行詳細(xì)解釋。與上面給出的算術(shù)方法相比,唯一的區(qū)別在于probe值的計(jì)算(返回“probe”變量的值的函數(shù))已經(jīng)由一種神經(jīng)probe所代替。
到達(dá)的待編碼比特被提供給一個(gè)尺寸為32,64,甚至更多比特的移位寄存器(緩沖區(qū))(下面給出了一個(gè)包括32位寄存器的例子)。寄存器的內(nèi)容構(gòu)成了所謂的窗口。現(xiàn)在,使用一個(gè)哈希函數(shù)將存儲(chǔ)在寄存器中的值(作為32比特的整數(shù)對(duì)待)動(dòng)態(tài)地劃分成N部分。
考慮下面關(guān)于哈希函數(shù)的定義(僅僅作為例子提供)adr1=register mod H0adr2=H0-(H0*k)+((register/64)mod H1)adr3=(H0+H1)-(H1*k)+((register/16384)mod H2)adr4=(H0+H1+H2)-(H2*k)+((register/4194304)mod H3)H3是從先前的地址值計(jì)算得到的,因此范圍長(zhǎng)度H3,從(H0+H1+H2)-(H2*k)開(kāi)始擴(kuò)展到剩余內(nèi)存的末尾(直到2048)。該哈希函數(shù)的結(jié)果顯示在圖18中。
“寄存器”變量是當(dāng)前存儲(chǔ)在寄存器150中的二進(jìn)制值,H0-H2是預(yù)先確定的值。例如,H0-H2的值可以是256,512,1024,在一個(gè)具體的情況中,從這些值計(jì)算出H3的值為1536。因子k由神經(jīng)網(wǎng)絡(luò)的輸出給出。因子k具有一個(gè)缺省值并且落在0和1之間的區(qū)間內(nèi)。
上面給出的哈希函數(shù)將地址adr1-adr4映射到表155的數(shù)行,其中表155由2048行構(gòu)成。更確切地,是映射到子范圍151-154,這意味著地址1指向子范圍151中的一個(gè)元素(表行),地址2指向子范圍152中的一行,地址3指向子范圍153中的一行,以及地址4指向子范圍154中的一行。本發(fā)明解決方案的一個(gè)重要特征在于子范圍可以重疊,因而構(gòu)成了集合156-158,這個(gè)實(shí)施例包括三個(gè)集合156-158。從上面的表述可以理解,集合的尺寸由因子k確定。集合的重要性從最低有效位向最高有效位增加。集合在識(shí)別輸入流中的重現(xiàn)比特序列的過(guò)程中扮演著重要的角色。因?yàn)榧峡梢允沟脙蓚€(gè)地址可能指向表155的相同行,集合的作用因此也很重要。無(wú)需深入過(guò)多的數(shù)學(xué)細(xì)節(jié),在這里注意到這點(diǎn)就足夠了因?yàn)檩斎胧潜豁樞蛱幚淼模绻谝粋€(gè)地址指向一個(gè)給定神經(jīng)元,那么其權(quán)重在訓(xùn)練過(guò)程中將發(fā)生變化。在另一個(gè)地址選擇了相同神經(jīng)元的情況下,權(quán)重將再次與賦予它的比特頻率函數(shù)的值一起發(fā)生變化。因而,與該神經(jīng)元關(guān)聯(lián)的比特頻率函數(shù)的值也會(huì)被修改兩次。在該系統(tǒng)的運(yùn)行過(guò)程中,輸入具有相同權(quán)重。
因?yàn)橐蜃觡被神經(jīng)網(wǎng)絡(luò)的輸出賦予一個(gè)值,并且子域152-154的實(shí)際長(zhǎng)度H1-H4由k確定(間接地,通過(guò)集合尺寸,因?yàn)榧铣叽缬绊懽佑虻拈L(zhǎng)度),在收到每個(gè)比特之后,表155被劃分到子域151-154的分割根據(jù)神經(jīng)網(wǎng)絡(luò)的輸出而動(dòng)態(tài)變化。
由哈希函數(shù)定義的N個(gè)地址(在這個(gè)案例中N=4)選擇了表155的N個(gè)元素(行)。表155的每一行包含兩個(gè)權(quán)函數(shù)——量化權(quán)函數(shù)Wi,Q以及比例權(quán)函數(shù)Wi,s(或者,在比例因子S不需要被生成的情況下只有Wi,Q)以及一個(gè)頻率對(duì)f(0)i,f(1)i,該頻率對(duì)的定義方式與離散算法情況中的相同(就是說(shuō),根據(jù)每次收到一個(gè)比特時(shí)的比特值來(lái)更新頻率值)。在訓(xùn)練過(guò)程當(dāng)中,對(duì)所選擇的權(quán)函數(shù)作如下修改Wi=Wi+(error*gain*eta*f(0)i+f(1)if(0)i*f(1)i)]]>其中i是表中被尋址行的索引,“error”是預(yù)測(cè)比特與實(shí)際接收到的比特之間的差,“gain”是增益因子,“eta”是學(xué)習(xí)速率,以及f(0)和f(1)是上面定義的比特頻率。實(shí)際上,該方法使用的N-輸入神經(jīng)網(wǎng)絡(luò)的知識(shí)庫(kù)由權(quán)函數(shù)以及表155存儲(chǔ)的頻率值構(gòu)成。
在工作過(guò)程中,根據(jù)本例的網(wǎng)絡(luò)的輸出由下面的公式給出outi=expΣWi]]>其中i是輸出數(shù)量,下標(biāo)i從1到N,即輸出是對(duì)所有選擇的權(quán)函數(shù)求和。可以定義網(wǎng)絡(luò)的輸出使得k和“prob”值本身出現(xiàn)在輸出中。
再次跳過(guò)更加詳細(xì)的數(shù)學(xué)分析,神經(jīng)網(wǎng)絡(luò)的工作可以概述如下當(dāng)?shù)谝粋€(gè)比特到達(dá)時(shí),prob值為0(對(duì)應(yīng)于概率0.5)。接著網(wǎng)絡(luò)計(jì)算誤差(error=bit-probe),并且將該誤差“教給”賦予上一個(gè)比特值的神經(jīng)元。(在第一個(gè)步驟中這些值是不相關(guān)的。因?yàn)闆](méi)有前導(dǎo)數(shù)據(jù),所有地址為0,因此將第0個(gè)神經(jīng)元賦予輸入。)接著,系統(tǒng)從寄存器(緩沖區(qū))的當(dāng)前值生成新地址。將由這些地址選擇的神經(jīng)元的權(quán)函數(shù)(在第一個(gè)步驟中為零)相加,并且計(jì)算該和數(shù)的指數(shù)(第一個(gè)步驟中的結(jié)果也是零),其成為新的probe值。
下一個(gè)probe區(qū)間為-0.5..+0.5,因此映射在0..1區(qū)間上的當(dāng)前probe值將是0.5。對(duì)于接下來(lái)到達(dá)的比特,重復(fù)上述過(guò)程,這次使用有效地址,在誤差值的基礎(chǔ)上對(duì)先前選擇的神經(jīng)元的權(quán)函數(shù)進(jìn)行修改。該過(guò)程對(duì)于因子k相同。
如我們已經(jīng)提到的,該系統(tǒng)的增益和學(xué)習(xí)速率可動(dòng)態(tài)地調(diào)整。在一個(gè)優(yōu)選實(shí)施例中,只有在選擇神經(jīng)元的地址指向集合內(nèi)的地址范圍時(shí)才會(huì)對(duì)增益作修改。
就是說(shuō),根據(jù)集合的優(yōu)先級(jí),向每個(gè)集合賦予一個(gè)增益因子。
學(xué)習(xí)速率是由因子k和許多外部因素決定。
學(xué)習(xí)速率為網(wǎng)絡(luò)指定了學(xué)習(xí)曲線的斜率,就是說(shuō),在每個(gè)訓(xùn)練周期中誤差被最小化的程度。
神經(jīng)網(wǎng)絡(luò)具有兩個(gè)輸出輸出“probe”給出算術(shù)probe值,而另外一個(gè)輸出指定了用來(lái)確定集合分割的因子k。圖18b中示出了神經(jīng)網(wǎng)絡(luò)一個(gè)可能的結(jié)構(gòu),顯示了輸入層160的神經(jīng)元,以及產(chǎn)生“prob”和因子k的輸出169和168。圖中顯示的神經(jīng)網(wǎng)絡(luò)還有一個(gè)隱含層162,但是本發(fā)明方法使用結(jié)構(gòu)較簡(jiǎn)單的網(wǎng)絡(luò)也能夠成功地工作。
以這種方式,向構(gòu)成神經(jīng)網(wǎng)絡(luò)的知識(shí)庫(kù)的表的每一行賦予了頻率f(0)和f(1),這些頻率可被當(dāng)作計(jì)數(shù)器。這些計(jì)數(shù)器與上面看到的表FreqTbl[index]的元素類似,指定了當(dāng)前待編碼比特是0和1的次數(shù),此時(shí)給定的表行由address1-4中的一個(gè)地址選擇,所述地址指向表155的細(xì)分產(chǎn)生的子范圍151-154。因而,頻率f(0)和f(1)可被存儲(chǔ)在N行的表中,并且,與上面描述的方式類似,如果它們的值超過(guò)給定范圍則應(yīng)該對(duì)它們進(jìn)行重新縮放。
VI.5.接下來(lái),反復(fù)地測(cè)試寄存器150的分割來(lái)選擇最佳分割。神經(jīng)網(wǎng)絡(luò)基于下一個(gè)接收到的比特的值更新最近尋址的表行的頻率數(shù)據(jù)f(0)和f(1),并且將k的最近值以及probe因子“教給”存儲(chǔ)在這些行中的神經(jīng)元權(quán)函數(shù),probe因子是根據(jù)預(yù)測(cè)值和接收到的比特值之間的差(誤差)從頻率f(0),f(1)中導(dǎo)出的。
該系統(tǒng)的工作在許多方面都與上面描述的方法類似,但是動(dòng)態(tài)寄存器分割以及動(dòng)態(tài)增益和學(xué)習(xí)速率的使用根本上是創(chuàng)新元素。
讓我們看一個(gè)該方法在實(shí)踐中是多么有效的示例我們對(duì)20個(gè)8×8塊的DCT系數(shù)編碼,產(chǎn)生1280字節(jié)的數(shù)據(jù)。被編碼的塊在幀中是相鄰的,并且實(shí)際上是相同的。我們主要的興趣在于在不同塊中存在DCT系數(shù)的重現(xiàn)數(shù)據(jù)序列而在各個(gè)塊本身中不存在重現(xiàn)序列的情況下該方法的編碼效率。
在下表中與其它方法比較了結(jié)果
*多級(jí)別方法對(duì)于其它數(shù)據(jù)類型,結(jié)果顯示更廣的分布,而我們的方法仍然要比其它解決方案表現(xiàn)得好很多。
VII.帶寬(傳輸速率)控制以及壓縮比調(diào)整VII.1.帶寬(傳輸速率)控制是視頻編碼中最重要的問(wèn)題之一。一個(gè)視頻幀序列中幀的信息內(nèi)容變化很大,因此在目標(biāo)是保持相當(dāng)平滑的圖像質(zhì)量的情況下,必須隨著這些變化在很大范圍上調(diào)整壓縮比。
如果壓縮數(shù)據(jù)存儲(chǔ)在一個(gè)存儲(chǔ)裝置上,該裝置的存儲(chǔ)容量將會(huì)限制編碼數(shù)據(jù)的總量。當(dāng)數(shù)據(jù)必須在一個(gè)數(shù)據(jù)傳輸系統(tǒng)中實(shí)時(shí)傳輸時(shí),最明顯的情況是帶寬成為一個(gè)限制。在那種情況下,傳輸視頻的質(zhì)量受到可用帶寬(數(shù)據(jù)傳輸速率)的限制。因此,有必要將傳輸速率(一秒內(nèi)傳輸?shù)臄?shù)據(jù)量)保持在一個(gè)近似恒定的值。這只可以通過(guò)調(diào)整壓縮比來(lái)實(shí)現(xiàn)。下面,調(diào)整壓縮比的意思是增加或減小量化因子。然而,不可能增加量化而不產(chǎn)生后果。更高的量化引起圖像細(xì)節(jié)隨著圖像中可識(shí)別的空間頻率的減少而消失,同時(shí)視覺(jué)上可觀察到的誤差增加。在某個(gè)點(diǎn),圖像不可避免地瓦解成塊并且產(chǎn)生其它視覺(jué)上明顯的圖像失真。
根據(jù)可用帶寬修改量化因子實(shí)質(zhì)上是周知的。在常規(guī)的解決方案中,根據(jù)編碼序列的預(yù)期長(zhǎng)度和實(shí)際長(zhǎng)度來(lái)計(jì)算新的量化因子,并且將新的量化因子應(yīng)用到下一幀。代替一次僅僅考慮一個(gè)幀,更加成熟的解決方案使用在給定時(shí)間范圍內(nèi)所壓縮的幀的平均長(zhǎng)度和期望平均長(zhǎng)度來(lái)計(jì)算新的量化因子。這些方法通常涉及一個(gè)反應(yīng)延遲因子,該因子指定了控制系統(tǒng)應(yīng)該獲得計(jì)算的最大值的時(shí)間。
這種方法提供了恒定傳輸速率或恒定比特率(CBR方法)。
通過(guò)為傳輸速率控制設(shè)置最小和最大極限,總是將傳輸速率保持在這些極限中并且試圖在長(zhǎng)時(shí)間內(nèi)獲得一個(gè)等于上下限平均值的主導(dǎo)傳輸速率,可以極大地改善結(jié)果。
優(yōu)選地,還應(yīng)該將原始幀和重建幀之間的信噪比作為一個(gè)控制參數(shù)加以考慮,就是說(shuō),在SNR惡化時(shí)(在特定的范圍內(nèi))提高傳輸速率,而當(dāng)SNR提高時(shí)降低傳輸速率。這就是所謂的可變比特率(VBR)方法。這種解決方案的一個(gè)主要缺陷在于無(wú)法準(zhǔn)確地預(yù)計(jì)總體期望數(shù)據(jù)長(zhǎng)度。最小和最大值不能被設(shè)置得過(guò)高,因?yàn)槟菢拥脑?,控制范圍也?huì)太寬并且總體編碼數(shù)據(jù)長(zhǎng)度將在一個(gè)過(guò)大尺度上變化。經(jīng)常還會(huì)出現(xiàn)使用系統(tǒng)設(shè)置的最大傳輸速率不能維持期望的質(zhì)量,使得有必要進(jìn)一步提高傳輸速率的情況。
VII.2.根據(jù)本發(fā)明,對(duì)于帶寬(傳輸速率)控制提供了兩種解決方案。
這兩種方法都是基于應(yīng)用神經(jīng)網(wǎng)絡(luò)。
VII.3.1根據(jù)第一個(gè)解決方案,神經(jīng)網(wǎng)絡(luò)具有一個(gè)實(shí)質(zhì)上已知的后向傳播結(jié)構(gòu)。在圖18c中示出了該網(wǎng)絡(luò)。該網(wǎng)絡(luò)具有N個(gè)輸入1801-180n,一個(gè)包含2N個(gè)神經(jīng)元的隱含層185,以及至少一個(gè)輸出。量化因子Q以及比例因子S(下面第VIII章中詳細(xì)描述了該因子的作用)出現(xiàn)在輸出188和189。
為了提供連續(xù)控制,該網(wǎng)絡(luò)的輸入是最后N個(gè)接收到的數(shù)據(jù)元素,它們按照其順序被順序地提供給N個(gè)輸入。數(shù)據(jù)元素由期望幀長(zhǎng)度和編碼幀長(zhǎng)度的比率構(gòu)成,并且這些數(shù)據(jù)元素被當(dāng)作一個(gè)時(shí)間序列。
ELi-1/CLi-1,ELi/CLi,ELi+1/CLi+1,等(其中E1期望長(zhǎng)度,CL編碼長(zhǎng)度,i是對(duì)應(yīng)于第i個(gè)數(shù)據(jù)(例如,一個(gè)編碼幀)的索引)。
用于訓(xùn)練網(wǎng)絡(luò)的測(cè)試數(shù)據(jù)是使用一個(gè)外部控制系統(tǒng)生成或在訓(xùn)練過(guò)程開(kāi)始前手動(dòng)生成的,并且所述數(shù)據(jù)通過(guò)復(fù)雜相關(guān)性計(jì)算減少到1000-4000個(gè)訓(xùn)練樣本。設(shè)計(jì)訓(xùn)練樣本以使得它們代表出現(xiàn)在普通視頻記錄中的每種幀類型。這些樣本通過(guò)數(shù)個(gè)訓(xùn)練周期被“教給”系統(tǒng),在一個(gè)具體實(shí)現(xiàn)中,是50000個(gè)周期。
訓(xùn)練完成之后,網(wǎng)絡(luò)準(zhǔn)備好接收并處理實(shí)際數(shù)據(jù)。應(yīng)當(dāng)注意在這個(gè)具體的實(shí)施例中,計(jì)算被設(shè)置為使得在網(wǎng)絡(luò)輸出中出現(xiàn)的不是因子Q,而是KQ系數(shù),該系數(shù)反過(guò)來(lái)用于修改當(dāng)前的Q。
與離散系統(tǒng)相比,神經(jīng)網(wǎng)絡(luò)的主要優(yōu)點(diǎn)在于,借助神經(jīng)網(wǎng)絡(luò)幾乎可以實(shí)現(xiàn)各種類型的控制特征。
在可變比特率控制系統(tǒng)中,控制特征遠(yuǎn)比在恒定比特率控制系統(tǒng)中重要。
VII.3.2.正如我們已經(jīng)提到的,網(wǎng)絡(luò)借助測(cè)量的訓(xùn)練工作。神經(jīng)網(wǎng)絡(luò)借助先前期望的幀和編碼幀的長(zhǎng)度值評(píng)估希望的映射,后者被當(dāng)作數(shù)據(jù)序列。這種方法可被成功地用于恒定帶寬(CBR)的情況,但它本身不是總適用于可變帶寬(VBR)系統(tǒng)。原因在于VBR系統(tǒng)也要考慮圖像質(zhì)量。
在圖像質(zhì)量超過(guò)平均質(zhì)量值的情況下,增加壓縮比,而如果質(zhì)量低于平均值,則減少壓縮比。神經(jīng)網(wǎng)絡(luò)控制系統(tǒng)也必須對(duì)這點(diǎn)加以考慮。因此,為控制網(wǎng)絡(luò)指定了一個(gè)最小和最大量化因子,控制系統(tǒng)不能超過(guò)該范圍。這些值通過(guò)圖18c中參考數(shù)字186和187指代的神經(jīng)元起作用。
VII.3.3.用于VBR模式的神經(jīng)網(wǎng)絡(luò)的輸入是用于CRR模式的網(wǎng)絡(luò)輸入的兩倍之多,因?yàn)椋似谕L(zhǎng)度/編碼長(zhǎng)度比,表示圖像質(zhì)量的數(shù)據(jù)也以期望質(zhì)量/編碼質(zhì)量比的形式被提供給網(wǎng)絡(luò)的輸入EQi-1/CQi-1,EQi/CQi,EQi+1/CQi+1,等。
其中,EQ是期望質(zhì)量,CQ是編碼質(zhì)量,i是數(shù)據(jù)索引。
如圖18c中所見(jiàn),除了確定量化因子的輸出188,用于VBR模式的神經(jīng)網(wǎng)絡(luò)也包括表示比例因子S的另一個(gè)輸出189(比例因子的作用后面描述)。與上面描述的情況類似,在訓(xùn)練過(guò)程中,網(wǎng)絡(luò)處理一個(gè)時(shí)間序列中關(guān)于期望/編碼質(zhì)量和期望/編碼長(zhǎng)度的輸入數(shù)據(jù),并且根據(jù)指定的最小和最大值評(píng)估所找到的映射。選擇控制數(shù)據(jù)使得其反映指定的控制特征和控制斜率。
在網(wǎng)絡(luò)的實(shí)際編碼過(guò)程中,即當(dāng)處理實(shí)際數(shù)據(jù)時(shí),不再進(jìn)行訓(xùn)練,并且神經(jīng)元的權(quán)函數(shù)保持不變。編碼本身實(shí)際上是一項(xiàng)關(guān)聯(lián)任務(wù)基于網(wǎng)絡(luò)在訓(xùn)練過(guò)程中所“學(xué)習(xí)”到的東西,將接收到的包含在時(shí)隙中的輸入數(shù)據(jù)映射到Q和S因子。因而,通過(guò)按照接收到的長(zhǎng)度和質(zhì)量數(shù)據(jù)確定Q和S的下一個(gè)值,網(wǎng)絡(luò)執(zhí)行與常規(guī)控制系統(tǒng)相同的任務(wù)。直觀地,所述時(shí)隙可以被說(shuō)成是描述了一種特定的情形。網(wǎng)絡(luò)將在訓(xùn)練過(guò)程中它所遇到的這些情形中搜索一個(gè)與當(dāng)前情形最匹配的情形,給出在該特定情形下學(xué)習(xí)到的最優(yōu)響應(yīng)。
神經(jīng)網(wǎng)絡(luò)的一種實(shí)現(xiàn)變種實(shí)際上使用僅僅一個(gè)公式,所謂的S形和。
out=1/exp(1+-Gain*Σi=0NW(i)*Input(i))]]>其中N是神經(jīng)元的數(shù)量“gain”值可以是整數(shù)并可由最優(yōu)搜索確定,因?yàn)樗ㄒ坏淖饔檬谴_定輸出值的大小順序。首先,用上面表達(dá)式對(duì)隱藏層中神經(jīng)元的權(quán)函數(shù)求和,接著同樣為輸出層的權(quán)函數(shù)執(zhí)行該計(jì)算。
在它們的實(shí)際實(shí)現(xiàn)中,除了輸入數(shù)據(jù)在VBR和CBR網(wǎng)絡(luò)之間沒(méi)有重大區(qū)別,這意味著執(zhí)行VBR模式的網(wǎng)絡(luò)也能夠執(zhí)行CBR模式的功能。對(duì)于CBR模式的操作是通過(guò)簡(jiǎn)單地在質(zhì)量輸入端提供一個(gè)常數(shù)值而實(shí)現(xiàn)的(該常數(shù)是最大可能值,在訓(xùn)練期間輸入也保持不變)。在CBR模式中,最小和最大帶寬極限輸入被設(shè)置為相等并且保持不變,被設(shè)置成與期望的恒定帶寬對(duì)應(yīng)的值。
VII.4.在本節(jié)中,將描述由神經(jīng)網(wǎng)絡(luò)執(zhí)行的改進(jìn)的動(dòng)態(tài)量化的又一個(gè)變種(所謂的地址分解方法)。
VII.4.1.這種網(wǎng)絡(luò)模型是描述算術(shù)編碼的一節(jié)中所給出網(wǎng)絡(luò)模型的一個(gè)變種。它與上面網(wǎng)絡(luò)唯一的區(qū)別在于對(duì)該網(wǎng)絡(luò)某些選擇的神經(jīng)元的尋址不是由整個(gè)時(shí)間窗口/時(shí)隙確定的。這點(diǎn)被示意性地顯示在圖19中,該圖顯示時(shí)間窗口中檢驗(yàn)的輸入數(shù)據(jù)繞過(guò)了地址生成器。這里,輸入數(shù)據(jù)序列的元素不是0和1,因此上面描述的地址生成過(guò)程不能被直接應(yīng)用。相反地,神經(jīng)網(wǎng)絡(luò)的輸入層包括兩部分。對(duì)于在時(shí)間窗口中能夠找到的每個(gè)數(shù)據(jù)值,由一個(gè)哈希函數(shù)(與前面示出的類似)指派一個(gè)神經(jīng)元,該神經(jīng)元是根據(jù)到達(dá)數(shù)據(jù)是否是期望/編碼長(zhǎng)度數(shù)據(jù)或期望/編碼質(zhì)量數(shù)據(jù)從適當(dāng)數(shù)目(諸如2048或256)的神經(jīng)元中選擇出來(lái)的。實(shí)際上,這意味著兩個(gè)神經(jīng)元權(quán)重表,一個(gè)用于對(duì)期望/編碼長(zhǎng)度數(shù)據(jù)起作用的神經(jīng)元(更確切地,用于其權(quán)函數(shù)),另一個(gè)用于對(duì)期望/編碼質(zhì)量數(shù)據(jù)起作用的神經(jīng)元的權(quán)函數(shù)。
如果時(shí)間窗口尺寸為N=32,并且對(duì)于兩種數(shù)據(jù)類型分別使用11比特和8比特來(lái)執(zhí)行地址生成,存儲(chǔ)神經(jīng)元的輸入數(shù)據(jù)所需的內(nèi)存大小將為Mem=2048*16+256*16(用于從期望/編碼長(zhǎng)度生成的地址的16×11比特長(zhǎng)的標(biāo)準(zhǔn)化數(shù)據(jù),和用于從期望/編碼質(zhì)量數(shù)據(jù)生成的地址的16×8比特長(zhǎng)的標(biāo)準(zhǔn)化數(shù)據(jù))。
在所用地址的轉(zhuǎn)換過(guò)程中,神經(jīng)網(wǎng)絡(luò)的輸入是值在0和1之間的標(biāo)準(zhǔn)化數(shù)據(jù),這些數(shù)據(jù)后來(lái)被轉(zhuǎn)換成整數(shù)以便生成地址。
Cvk=VKn*211]]>Cm=Mn*28]]>方程III其中VKn是標(biāo)準(zhǔn)化的期望/編碼長(zhǎng)度比,Cvk是生成的地址,并且其中Mn是標(biāo)準(zhǔn)化質(zhì)量,Cm是生成的地址。
基于這些表達(dá)式,根據(jù)位于時(shí)間序列各位置的數(shù)據(jù)生成了地址。這樣生成的地址對(duì)存儲(chǔ)在表中的神經(jīng)元進(jìn)行尋址。換言之,由生成的地址選擇神經(jīng)元,并且這些神經(jīng)元在訓(xùn)練過(guò)程中接收期望/編碼長(zhǎng)度比和期望/編碼質(zhì)量比。該系統(tǒng)有兩個(gè)其它的與時(shí)間序列無(wú)關(guān)的輸入。與圖18c中顯示的網(wǎng)絡(luò)類似,這些輸入被用于確定最小和最大帶寬。使用公式(1/Q-1/Qprev)來(lái)計(jì)算一個(gè)誤差因子,即該誤差因子是由當(dāng)前訓(xùn)練的量化因子的倒數(shù)與先前計(jì)算的量化因子的倒數(shù)之差確定的,其中Qprev是先前的量化因子。
權(quán)函數(shù)作如下修改W=W+(1Q-1Qprev)*eta*]]>輸入,其中eta是學(xué)習(xí)速率out=exp(Σi=0NW(i))]]>其中N是神經(jīng)元數(shù)量在網(wǎng)絡(luò)的有效控制工作中不再進(jìn)行訓(xùn)練,即該系統(tǒng)也使用一種預(yù)先訓(xùn)練的網(wǎng)絡(luò)。
控制工作過(guò)程與訓(xùn)練過(guò)程相同,除了權(quán)值修改未被激活之外。
以一種類似于上面已描述的方式,通過(guò)將最小/最大帶寬以及質(zhì)量數(shù)據(jù)分別固定為常數(shù)值,該系統(tǒng)可以被切換到CBR模式。
該系統(tǒng)也可以無(wú)錯(cuò)地以多步驟模式工作。這種工作模式的本質(zhì)在于在第一步,該系統(tǒng)無(wú)控制地以一種恒定的量化因子(例如將Q設(shè)置為3)來(lái)對(duì)整個(gè)連續(xù)鏡頭進(jìn)行編碼。在后面的第二步中,在控制系統(tǒng)被激活的情況下執(zhí)行編碼。該解決方案提供了改進(jìn)精度的編碼,因?yàn)榈谝徊街付嗣恳粠杀粔嚎s的程度,所以不需要確定Q,而是可以直接根據(jù)步驟1調(diào)整Q。另外,可以應(yīng)用本發(fā)明的神經(jīng)網(wǎng)絡(luò)而不作任何修改。在多步驟模式中,可以使用快速訓(xùn)練過(guò)程執(zhí)行訓(xùn)練。同樣,在這種模式中插值非常有效我們觀察到神經(jīng)控制系統(tǒng)在兩個(gè)步驟中能夠達(dá)到離散控制系統(tǒng)在4-6個(gè)步驟中獲得的質(zhì)量。
應(yīng)當(dāng)注意到,與單步驟模式相比,多步驟模式不一定提供更好的質(zhì)量。這種模式的一個(gè)優(yōu)點(diǎn)在于輸出長(zhǎng)度可被調(diào)整到一個(gè)預(yù)定值,例如與存儲(chǔ)介質(zhì)的能力相對(duì)應(yīng)。
VIII.動(dòng)態(tài)縮放VIII.1.正如已經(jīng)指出的那樣,經(jīng)??赡馨l(fā)生不能維持期望長(zhǎng)度的編碼視頻具有期望的視頻質(zhì)量。這可能由下面的原因造成,例如對(duì)于特定的序列,預(yù)置的壓縮比太高了,因而使用當(dāng)前設(shè)置的最小/最大壓縮極限不能維持期望的視頻質(zhì)量。這種情況通常會(huì)發(fā)生在高度細(xì)節(jié)、動(dòng)作豐富的膠片上。作為例子,可以提到故事片“木乃伊歸來(lái)”的頭5分鐘。在這個(gè)特定序列的情況下,對(duì)于高質(zhì)量的MPEG壓縮,至少需要2.5Mbit/s的帶寬。然而,如果可用帶寬減少到1.5Mbit/s,為了消除錯(cuò)誤,在壓縮和解碼時(shí)就需要非常復(fù)雜的前濾波和后濾波操作。這將將圖像銳度銳減到編碼視頻的質(zhì)量幾乎不能達(dá)到“可以接受”水平的程度。
VIII.2.為了消除上面描述的問(wèn)題,根據(jù)本發(fā)明,引入了動(dòng)態(tài)縮放的概念。這本質(zhì)上意味著如果控制系統(tǒng)由于固定的外部邊界條件不能維持期望的圖像質(zhì)量,就按比例縮小(重定比例)。幀被縮小(調(diào)整大小)到提供滿意結(jié)果的尺寸。系統(tǒng)對(duì)這個(gè)尺寸減小的幀進(jìn)行壓縮,并且,在解壓時(shí),將它恢復(fù)到其原始尺寸。可以理解,在這種情況下圖像質(zhì)量也會(huì)下降,然而,這主要表現(xiàn)為銳度降低。至少在壓縮比未被設(shè)置得過(guò)高的情況下,不會(huì)出現(xiàn)壓縮引起的斑點(diǎn)和其它典型錯(cuò)誤。
我們已經(jīng)檢驗(yàn)了如果減少這種關(guān)鍵幀序列的輸入數(shù)據(jù)量而壓縮因子保持不變將會(huì)產(chǎn)生什么影響。換言之,幀被縮小到其原始尺寸的3/4或1/2。因?yàn)榫幋a器試圖盡可能地保持?jǐn)?shù)據(jù)率恒定,考慮到圖像質(zhì)量,幀尺寸的減小將導(dǎo)致壓縮程度降低。以這種方式,輸出數(shù)據(jù)量與重定比例前保持一致。
例如,如果對(duì)整個(gè)數(shù)據(jù)流用例如0.5Mbit/s的帶寬進(jìn)行編碼,并且關(guān)鍵序列中的幀被減小到原始尺寸的一半,實(shí)際傳輸速率保持在0.5Mbit/s,而壓縮率和量化因子被顯著地減小了。在上面例子中,后者的因子被減小到相當(dāng)于以原始幀尺寸用2Mbit/s帶寬編碼的圖像質(zhì)量的程度。這導(dǎo)致錯(cuò)誤減少。該方法的缺陷在于縮放降低了幀的解析度。因而,當(dāng)在解碼過(guò)程中幀被恢復(fù)到原始尺寸時(shí),必須推斷出丟失像素的值。然而,通過(guò)應(yīng)用一種適當(dāng)?shù)目s放方法,這個(gè)問(wèn)題可以被顯著地降低。必須考慮到幀中存在空間頻率分量,并且必須相應(yīng)地執(zhí)行變換。
VIII.3.因此,在根據(jù)本發(fā)明的動(dòng)態(tài)縮放方法中,我們需要縮放的圖像。測(cè)試了許多基于插值的幀縮放方法。Láncos方法產(chǎn)生了最佳結(jié)果(Láncos方法實(shí)質(zhì)上是一個(gè)已知的重采樣過(guò)程,它通過(guò)一個(gè)濾波器基于該圖像的空間頻率分量對(duì)丟失的像素進(jìn)行插值)。如果對(duì)有縮放和無(wú)縮放的壓縮進(jìn)行比較,就會(huì)發(fā)現(xiàn)在無(wú)縮放的情況下,如果壓縮流用于0.5Mbit/s的傳輸速率,可以容易地觀察到關(guān)鍵序列中的質(zhì)量損失。圖像中的許多區(qū)域變得完全“扁平”,斑點(diǎn)和條紋將會(huì)出現(xiàn),并且在某些區(qū)域中圖像銳度急劇下降,就如同對(duì)該圖像使用了擦除器一樣。在另一方面,在用按照本發(fā)明的幀縮放來(lái)執(zhí)行壓縮的情況下,將不會(huì)出現(xiàn)這些錯(cuò)誤。唯一可察覺(jué)到的錯(cuò)誤是銳度的下降。然而,通過(guò)分析序列,可以發(fā)現(xiàn)在視頻連續(xù)鏡頭中那些出現(xiàn)快速運(yùn)動(dòng)的點(diǎn)上通常需要縮放。因?yàn)榭焖龠\(yùn)動(dòng)的場(chǎng)景通常在一開(kāi)始就已經(jīng)被輕微地模糊了,由重定比例引起的信息丟失幾乎觀察不到。
本發(fā)明的動(dòng)態(tài)縮放過(guò)程執(zhí)行如下把每個(gè)到達(dá)的幀傳送經(jīng)過(guò)縮放模塊,開(kāi)始時(shí)縮放因子為0(無(wú)縮放)。壓縮控制系統(tǒng)決定編碼結(jié)果是否滿足指定的范圍。如果結(jié)果不滿足,則將幀尺寸改變(減小)到即使解碼后仍然能夠提供可接受質(zhì)量的程度。
應(yīng)當(dāng)注意到可以利用離散方法來(lái)解決縮放任務(wù)。但是,考慮到在本發(fā)明系統(tǒng)中已經(jīng)把神經(jīng)網(wǎng)絡(luò)應(yīng)用于帶寬控制,也可以使用神經(jīng)網(wǎng)絡(luò)來(lái)更加有效地執(zhí)行縮放。由于該問(wèn)題與帶寬控制問(wèn)題密切相關(guān),已證明向神經(jīng)網(wǎng)絡(luò)添加另一個(gè)輸出就能得到滿意結(jié)果(見(jiàn)圖18c)。因而,該網(wǎng)絡(luò)有兩個(gè)輸出,一個(gè)提供量化因子的Q系數(shù),另一個(gè)提供縮放因子S。
在提供給帶寬控制的第一個(gè)解決方案中(見(jiàn)VII.3節(jié),以及圖18c),可以直接插入一個(gè)新的神經(jīng)元189,其輸出提供縮放因子S。然而,對(duì)于提出的第二個(gè)解決方案(見(jiàn)VII.4節(jié)),實(shí)際上應(yīng)該向每個(gè)表地址賦予兩個(gè)權(quán)重向量。
實(shí)際上,這相當(dāng)于兩個(gè)獨(dú)立的神經(jīng)網(wǎng)絡(luò),具有相同輸入但向輸出發(fā)送不同的值。為了使得網(wǎng)絡(luò)更加完善,建議向神經(jīng)網(wǎng)絡(luò)增加一個(gè)隱含層,該層的神經(jīng)元被連接到輸出層。在那種情況下,網(wǎng)絡(luò)將具有一個(gè)所謂的后向傳播結(jié)構(gòu)。這里如同前一個(gè)解決方案,輸入層的神經(jīng)元也是由該系統(tǒng)生成的地址所指向的位置選擇的。
縮放過(guò)程從一個(gè)I-幀(內(nèi)部幀)開(kāi)始,一直持續(xù)到下一個(gè)I-幀。對(duì)為其它類型的幀確定的縮放因子取平均值。這點(diǎn)顯示在圖20,21中,其中縮放從A開(kāi)始并且在標(biāo)記為B的點(diǎn)結(jié)束。
IX.關(guān)于本發(fā)明中應(yīng)用的神經(jīng)控制系統(tǒng)的一些一般性評(píng)論為了本發(fā)明控制系統(tǒng)的潛在應(yīng)用,我們已經(jīng)測(cè)試了大量不同的網(wǎng)絡(luò)類型。考慮它們的計(jì)算負(fù)載和適當(dāng)?shù)目刂菩袨?,很驚訝地,最佳結(jié)果是由具有最簡(jiǎn)單的結(jié)構(gòu)的網(wǎng)絡(luò)產(chǎn)生的。所謂的反向傳播類型網(wǎng)絡(luò)也可以給出優(yōu)秀的結(jié)果,在許多情況中提供了比上面描述的后向傳播類型網(wǎng)絡(luò)更好的近似,但只有應(yīng)用地址分解方法(見(jiàn)上文)才會(huì)如此。概括起來(lái),第二種方法比第一種方法執(zhí)行的更好,這是由于它比對(duì)應(yīng)方法使用更多的神經(jīng)元,這提供了更大的知識(shí)庫(kù)。轉(zhuǎn)換到后向傳播或反向傳播,它提供優(yōu)秀的控制。
本發(fā)明本質(zhì)上基于這樣一種想法提供一種能夠?qū)崿F(xiàn)不同控制特征的控制系統(tǒng),并且確保最優(yōu)壓縮同時(shí)也考慮視覺(jué)上可以察覺(jué)的圖像質(zhì)量。學(xué)習(xí)到的不同特征可被分組成簡(jiǎn)檔,這些簡(jiǎn)檔使得能夠選擇最適用于任何給定視頻序列的特征。我們已經(jīng)測(cè)試了離散控制系統(tǒng)并且已經(jīng)發(fā)現(xiàn)它們具有的控制動(dòng)態(tài)性不足。例如,如果使用介質(zhì)帶寬在兩個(gè)步驟中執(zhí)行編碼,經(jīng)常能夠發(fā)現(xiàn)那些需要更高壓縮的序列,或那些能夠使用較低壓縮的場(chǎng)景。已知的離散編碼系統(tǒng)是閉環(huán)系統(tǒng),意思是它們通常使用恒定的函數(shù)執(zhí)行編碼。然而,神經(jīng)系統(tǒng)能夠考慮先前幀的信息并且使用所學(xué)習(xí)到的瞬時(shí)特征執(zhí)行編碼控制。
因?yàn)閷?shí)質(zhì)上已經(jīng)知道不同的神經(jīng)網(wǎng)絡(luò)模型,在本文中沒(méi)有對(duì)本發(fā)明神經(jīng)網(wǎng)絡(luò)的工作進(jìn)行詳細(xì)分析。我們僅僅提供了用于對(duì)視頻幀序列進(jìn)行編碼的神經(jīng)網(wǎng)絡(luò)的多個(gè)具體實(shí)現(xiàn)。
X.1.實(shí)現(xiàn)本發(fā)明方法的混合視頻編碼系統(tǒng)的工作的概述整個(gè)系統(tǒng)的結(jié)構(gòu)在圖8以及圖22-24中進(jìn)行了描述。
在壓縮過(guò)程中,幀首先經(jīng)過(guò)縮放系統(tǒng)(重采樣模塊)61(圖8)。該系統(tǒng)決定應(yīng)該使用哪種方法繼續(xù)編碼,并且相應(yīng)地選擇編碼模式(I,P,B)。在I-幀的情況下,為每個(gè)塊執(zhí)行了不同的預(yù)測(cè),并且該系統(tǒng)基于方差分析的結(jié)果選擇有希望給出最佳可壓縮性的的預(yù)測(cè)。接著,使用DCT對(duì)塊進(jìn)行變換,并且在適當(dāng)?shù)乃綄?duì)塊量化和壓縮。
在P幀的情況下,只有前導(dǎo)幀被用作參考幀,而對(duì)于B幀,前導(dǎo)幀和后繼幀一起被用作參考幀,以便為當(dāng)前待編碼的塊搜索一個(gè)匹配的參考?jí)K。接著根據(jù)塊尺寸和位置對(duì)發(fā)現(xiàn)的塊進(jìn)行補(bǔ)償(從參考?jí)K中減去該塊,可選地使用1/2或1/4像素解析度的搜索和運(yùn)動(dòng)補(bǔ)償),接著對(duì)該塊進(jìn)行預(yù)測(cè)、變換和編碼。同時(shí),發(fā)現(xiàn)的參考位置被轉(zhuǎn)換成運(yùn)動(dòng)向量,并且從先前的運(yùn)動(dòng)向量中減去該運(yùn)動(dòng)向量,并且在適當(dāng)?shù)乃綁嚎s該運(yùn)動(dòng)向量。根據(jù)期望的和編碼的長(zhǎng)度以及質(zhì)量值,由控制系統(tǒng)調(diào)整壓縮比。如果不能將期望的質(zhì)量保持在當(dāng)前范圍內(nèi),則將該幀縮小到質(zhì)量可被接受的尺寸。這里必須注意到在具體的實(shí)現(xiàn)中,該系統(tǒng)從未將幀減小到小于原始尺寸的一半。
令人驚訝地發(fā)現(xiàn)實(shí)現(xiàn)方法的執(zhí)行要遠(yuǎn)遠(yuǎn)好于預(yù)期。在450kB/s的帶寬之上,除了由重定比例引起的銳度降低,在關(guān)鍵序列中幾乎沒(méi)有任何視覺(jué)上可察覺(jué)到的錯(cuò)誤。已經(jīng)發(fā)現(xiàn),對(duì)于380-450kB/s范圍內(nèi)的傳輸速率,本發(fā)明的混合編碼系統(tǒng)能夠提供普通錄像機(jī)SP模式的質(zhì)量,而在280-380kB/s的范圍內(nèi),相當(dāng)于普通錄像機(jī)LP模式的質(zhì)量。在帶寬超過(guò)500kB/s的情況下,視頻質(zhì)量接近DVD質(zhì)量。在高于750kB/s的極限時(shí),實(shí)際上在視覺(jué)上無(wú)法和DVD進(jìn)行區(qū)分。
本發(fā)明的編碼系統(tǒng)的一個(gè)缺陷在于,由于算術(shù)編碼,它對(duì)傳輸信道中數(shù)據(jù)丟失引起的錯(cuò)誤非常敏感。然而,現(xiàn)代的數(shù)字傳輸網(wǎng)絡(luò)(諸如互聯(lián)網(wǎng))支持高度安全、幾乎無(wú)丟失的數(shù)據(jù)傳輸,即使對(duì)于極大的數(shù)據(jù)量也是如此,因此這個(gè)缺陷不太重要。為了讓編碼系統(tǒng)有效地工作,應(yīng)該連續(xù)地更新頻率表。如果在解碼過(guò)程中某個(gè)地方出現(xiàn)傳輸錯(cuò)誤,那么從該點(diǎn)開(kāi)始,直到受影響幀結(jié)束,所有數(shù)據(jù)都將被損壞。X.2.1.結(jié)合圖22,解釋了本發(fā)明的混合視頻解碼器的工作,該解碼器用于對(duì)使用本發(fā)明系統(tǒng)壓縮的數(shù)據(jù)進(jìn)行解碼。通過(guò)向輸入緩沖區(qū)121提供編碼數(shù)據(jù)并且對(duì)流信息塊133解碼,開(kāi)始幀重建。流信息塊133包含幀的原始尺寸以及其它解碼過(guò)程中不會(huì)改變的數(shù)據(jù)。因此,流信息塊133只在解碼過(guò)程開(kāi)始時(shí)被解碼一次。接著,對(duì)幀的頭部信息解碼(步驟122)。幀的頭部信息塊包含當(dāng)前的幀尺寸、幀類型(I,P,B)、量化類型、以及只和給定幀唯一地有關(guān)的其它數(shù)據(jù)。
如果該幀是個(gè)內(nèi)部幀,則對(duì)描述塊分割的四杈樹(shù)結(jié)構(gòu)(步驟123)和DCT系數(shù)以及與各個(gè)塊有關(guān)的特定信息(步驟126)一起進(jìn)行編碼。接著,在每個(gè)塊上執(zhí)行了反變換(步驟127,128,129),并且將反變換的結(jié)果塊寫(xiě)入存儲(chǔ)新幀的當(dāng)前視頻存儲(chǔ)器131。
在內(nèi)部幀中,每個(gè)塊包含對(duì)其重建所需的所有數(shù)據(jù)(特別地,預(yù)測(cè)類型以及指示該塊是否被分割成16×16塊或四個(gè)4×4塊的信息,等等)。
在幀間幀的情況下,在步驟123對(duì)第一個(gè)描述塊分割的四杈樹(shù)結(jié)構(gòu)進(jìn)行了編碼,因?yàn)檫@個(gè)樹(shù)結(jié)構(gòu)包含重建該塊所需的數(shù)據(jù)。這些數(shù)據(jù)被用于解碼DCT系數(shù)、運(yùn)動(dòng)向量、以及與各個(gè)子塊關(guān)聯(lián)的預(yù)測(cè)碼,以及用于對(duì)標(biāo)識(shí)編碼中使用的參考幀的代碼進(jìn)行解碼。也執(zhí)行了反變換(步驟127,128,129),并且接著,在步驟130中將存儲(chǔ)在參考存儲(chǔ)器125中的參考幀的那些塊添加到反變換塊,所述參考幀的塊是在步驟124中使用運(yùn)動(dòng)向量選擇的。
如果使用線性插值對(duì)該幀編碼,那么首先基于在步驟124中通過(guò)重建的運(yùn)動(dòng)向量選擇的塊和參考存儲(chǔ)器125中存儲(chǔ)的參考幀生成插值塊,并且接著將這個(gè)插值塊添加到反變換塊。將每個(gè)重建塊寫(xiě)入存儲(chǔ)新幀的當(dāng)前視頻存儲(chǔ)器131。
內(nèi)部和幀間解碼的重建幀都被寫(xiě)入?yún)⒖即鎯?chǔ)器125。參考存儲(chǔ)器125可以包含不止一個(gè)幀,數(shù)量取決于編碼過(guò)程中使用的最遠(yuǎn)參考幀。參考存儲(chǔ)器125是一個(gè)循環(huán)緩沖區(qū),意思是每次存儲(chǔ)一個(gè)新幀時(shí),將最老的幀刪除。
下一步是在步驟132中將幀尺寸恢復(fù)到原始值。優(yōu)選地,使用Láncos方法來(lái)恢復(fù)幀尺寸。由一個(gè)適當(dāng)?shù)淖永淘诰幋a和解碼過(guò)程中都執(zhí)行縮放。在有可用的支持縮放的硬件視頻源或輸出裝置的情況下,編碼器或解碼器只需要指定幀尺寸。
X.2.2.神經(jīng)解碼器神經(jīng)算術(shù)解碼器在很大程度上與神經(jīng)算術(shù)編碼模塊以相同的方式工作,因?yàn)椋缫呀?jīng)知道的,在算術(shù)編碼中,編碼器的工作與解碼器的工作相同。由于該方法是自適應(yīng)的,在開(kāi)始時(shí)對(duì)單個(gè)比特解碼,并且使用解碼的比特計(jì)算了一個(gè)新的預(yù)測(cè)器。為了計(jì)算預(yù)測(cè)器,可以不作任何修改地使用用于編碼的神經(jīng)網(wǎng)絡(luò)。編碼器/解碼器之間的差異僅僅表現(xiàn)在已知的數(shù)學(xué)計(jì)算的差異上,其它功能元素完全相同。
最后,給出了一個(gè)完整的視頻編碼/編碼轉(zhuǎn)換系統(tǒng)(見(jiàn)圖23)。
本發(fā)明的視頻編碼系統(tǒng)支持?jǐn)?shù)字化,能夠有效地編碼和存儲(chǔ)視頻信號(hào)。同時(shí),它還能夠?qū)σ呀?jīng)編碼的數(shù)字視頻數(shù)據(jù)進(jìn)行轉(zhuǎn)換來(lái)提高存儲(chǔ)效率。例如,可以應(yīng)用這種編碼轉(zhuǎn)換將DVB廣播的MPEG傳輸分組的帶寬從大約20M比特/s減少到大約600K比特/s,例如用于錄制衛(wèi)星或電視廣播。以一種類似的方式,本發(fā)明的高效編碼方法也可用于存儲(chǔ)用數(shù)字?jǐn)z像機(jī)錄制的視頻序列,即使在不使用機(jī)械裝置的情況下。
編碼系統(tǒng)的輸入由模擬視頻輸入93,組合的解碼MPEG數(shù)字視頻/音頻分組輸入94,以及模擬音頻輸入105構(gòu)成。
該編碼系統(tǒng)可在下面的模式中工作a,對(duì)從模擬視頻輸入93和模擬音頻輸入105輸入的信號(hào)在數(shù)字化轉(zhuǎn)換后進(jìn)行編碼。
b,對(duì)數(shù)字視頻信號(hào)94和音頻信號(hào)進(jìn)行編碼變換,音頻信號(hào)是由解復(fù)用器109從組合的數(shù)字視頻/音頻信號(hào)分組中分離的。
由選擇器96選擇的數(shù)字視頻數(shù)據(jù)被通過(guò)輸入97提供給編碼系統(tǒng)98(上面結(jié)合圖8做了解釋)。編碼的視頻數(shù)據(jù)99與數(shù)字音頻數(shù)據(jù)被多路復(fù)用器100復(fù)用到一個(gè)組合分組101中。數(shù)字分組,經(jīng)由PSC102(外圍系統(tǒng)控制器)路由,可被存儲(chǔ)到硬盤(pán)103、光存儲(chǔ)裝置或半導(dǎo)體存儲(chǔ)器104上。由選擇器107選擇的數(shù)字音頻信號(hào)由編碼器108編碼并且如上面解釋的那樣被存儲(chǔ)。
X.2.3.對(duì)存儲(chǔ)的視頻和音頻數(shù)據(jù)的解碼在圖24中示出。
解復(fù)用器110將存儲(chǔ)在半導(dǎo)體存儲(chǔ)器104或硬盤(pán)103中的數(shù)據(jù)分組分離成編碼的數(shù)字視頻數(shù)據(jù)111和編碼的數(shù)字音頻數(shù)據(jù)112。數(shù)字視頻數(shù)據(jù)111由解碼系統(tǒng)113解碼,該解碼系統(tǒng)在上面結(jié)合圖22已經(jīng)作了描述。解碼的視頻數(shù)據(jù)114可選地被提供給濾波和縮放模塊115,接著被D/A轉(zhuǎn)換器116轉(zhuǎn)換成模擬視頻信號(hào)117。由解復(fù)用器110分離的數(shù)字音頻數(shù)據(jù)112由解碼器118解碼,并且最后被D/A轉(zhuǎn)換器119轉(zhuǎn)換回模擬音頻信號(hào)120。
本發(fā)明不局限于上面給出的實(shí)施例,而是也可以設(shè)想到其它變化或?qū)崿F(xiàn)。
權(quán)利要求
1.用于對(duì)數(shù)字編碼的視頻幀序列進(jìn)行壓縮的方法,包括如下步驟a.將一個(gè)給定的幀劃分成塊,b.可選地,將各個(gè)塊進(jìn)一步劃分成更小的塊,c.根據(jù)包含在一個(gè)或多個(gè)鄰接塊中的信息修改所選擇塊的信息內(nèi)容(預(yù)測(cè)),d.通過(guò)在所選擇的塊上執(zhí)行一個(gè)將空間表示轉(zhuǎn)換為頻率表示的變換(DCT)生成變換塊,以及最后e.用熵編碼對(duì)變換塊的信息內(nèi)容進(jìn)行編碼,其特色征于i.在執(zhí)行步驟d中指定的變換之前,在所述的所選擇的塊上執(zhí)行可壓縮性分析,并且根據(jù)分析結(jié)果ii.在該塊上執(zhí)行步驟c(預(yù)測(cè))和d(DCT)或者iii.可選地,將該塊進(jìn)一步分割成子塊,并且再次在這些從各個(gè)分割產(chǎn)生的塊上執(zhí)行步驟i中指定的可壓縮性分析,以及iv.根據(jù)步驟i和iii給出的結(jié)果,選擇那個(gè)可能產(chǎn)生最佳結(jié)果的塊分割,并且最后v.根據(jù)步驟c中執(zhí)行的預(yù)測(cè),使用具有最佳可能結(jié)果的塊分割執(zhí)行步驟d中指定的變換。
2.按照權(quán)利要求1的方法,其特征在于對(duì)屬于各個(gè)塊分割的塊執(zhí)行可壓縮性分析時(shí)考慮了塊的內(nèi)容和/或各個(gè)塊類型的出現(xiàn)頻率。
3.按照權(quán)利要求1的方法,其特征在于在可壓縮性分析過(guò)程中所述塊的內(nèi)容要經(jīng)歷直接的方差分析或借助于哈達(dá)馬濾波器的方差分析。
4.按照權(quán)利要求3的方法,其特征在于使用下面的公式執(zhí)行方差分析 其中,M是給定塊或子塊中元素的數(shù)量,pixel(j)是未壓縮塊(原始?jí)K)的一個(gè)元素,并且通過(guò)把計(jì)算得到的方差值與一個(gè)給定的閾值進(jìn)行比較來(lái)確定該方差是否超過(guò)所述的給定閾值。
5.按照權(quán)利要求1-4中任何一條權(quán)利要求的方法,其特征在于用熵編碼對(duì)賦予一個(gè)給定幀中具有最大允許塊尺寸的塊的特定數(shù)據(jù)進(jìn)行編碼,所述特定數(shù)據(jù)表示其被賦予的塊的塊分割(四杈樹(shù))。
6.按照權(quán)利要求1-5中任何一條權(quán)利要求的方法,其特征在于應(yīng)用離散余弦變換(DCT)作為將空間域表示轉(zhuǎn)換成頻率域表示的變換。
7.按照權(quán)利要求6的方法,其特征在于DCT被用在小于16×16的塊上,并且哈達(dá)馬變換被用在尺寸為16×16像素的塊上。
8.按照權(quán)利要求1-7中任何一條權(quán)利要求的方法,其特征在于在可壓縮性分析過(guò)程中,用下面的公式來(lái)量化修改(預(yù)測(cè))塊的信息內(nèi)容sum(i)=Σj=0Mabs(pixel(i))2]]>其中M是預(yù)測(cè)塊中元素個(gè)數(shù),以及pixel(i)是預(yù)測(cè)塊中的一個(gè)元素,計(jì)算得到的“sum”值與一個(gè)給定的閾值或前一個(gè)“sum”值進(jìn)行比較來(lái)確定計(jì)算得到的“sum”值是否超過(guò)所述的給定閾值或所述的前一個(gè)“sum”值。
9.按照權(quán)利要求8中任何一條的方法,其特征在于在各個(gè)塊的預(yù)測(cè)過(guò)程中,使用多種預(yù)測(cè)模式來(lái)執(zhí)行預(yù)測(cè),其中產(chǎn)生最低“sum”值的預(yù)測(cè)模式被用于所述的給定塊。
10.按照權(quán)利要求1-9中任何一條權(quán)利要求的方法,其特征在于如果各個(gè)塊尺寸的出現(xiàn)次數(shù)確認(rèn)兩個(gè)最常出現(xiàn)的塊尺寸的出現(xiàn)頻率超過(guò)一個(gè)給定值,則將所有塊都用具有兩個(gè)最常出現(xiàn)之塊尺寸的塊來(lái)代替。
11.按照權(quán)利要求1-10中任何一條的方法,其特征在于在對(duì)塊進(jìn)行可壓縮性分析的過(guò)程中計(jì)算出來(lái)一個(gè)誤差,考慮所計(jì)算的誤差,將對(duì)該誤差的貢獻(xiàn)超過(guò)一個(gè)閾值的塊進(jìn)一步劃分成子塊。
12.按照權(quán)利要求11的方法,其特征在于在一個(gè)給定子塊的情況下,如果誤差超過(guò)一個(gè)預(yù)定值,則將該子塊進(jìn)一步劃分成更小的子塊并且對(duì)包括該較小子塊的結(jié)果的塊分割執(zhí)行可壓縮性分析。
13.按照權(quán)利要求1-12中任何一條權(quán)利要求的方法,其特征在于使用尺寸為16×16,8×8,4×4,或2×2的塊或子塊。
14.用于對(duì)數(shù)字編碼的視頻幀序列進(jìn)行壓縮的方法,包括如下步驟a.將一個(gè)給定的幀劃分成二維塊,b.建立該幀的一個(gè)塊分割,在特定情況下,通過(guò)將各個(gè)塊進(jìn)一步劃分成子塊,c.在所述塊的信息內(nèi)容上執(zhí)行一個(gè)變換(DCT),該變換將空間表示轉(zhuǎn)換成頻率表示,因而產(chǎn)生了多元素二維變換塊(DCT系數(shù)矩陣)以及d.根據(jù)外部邊界條件修改變換塊的元素(量化),并且最后e.用熵編碼對(duì)包含在變換塊中的信息進(jìn)行編碼。該方法的特色在于在步驟d中,對(duì)多元素二維變換塊中的數(shù)據(jù)的修改是基于所述塊的尺寸和可用于傳輸編碼數(shù)據(jù)的帶寬而修改的。
15.按照權(quán)利要求14的方法,其特征在于對(duì)變換塊的修改是量化。
16.按照權(quán)利要求15的方法,其特征在于量化是按照下面的函數(shù)的MPEG量化qcoeff(j)=((data(j)*16)+(matrix(j)*0.5)matrix(j)*(217QP*2+1))/217]]>其中qcoeff(j)是多元素二維變換塊的一個(gè)元素,matrix(j)是在尺寸上與多元素二維變換塊相對(duì)應(yīng)的矩陣的一個(gè)元素,QP是量化因子。
17.按照權(quán)利要求16的方法,其特征在于matrix(j)的值是從根據(jù)經(jīng)驗(yàn)建立的一個(gè)矩陣表中得到的,其中該表的各個(gè)元素是整個(gè)matrix(j)矩陣,根據(jù)步驟d中指定的外部邊界條件從所述表中進(jìn)行選擇。
18.按照權(quán)利要求16或17的方法,其特征在于根據(jù)QP量化因子的值從所述表中進(jìn)行選擇。
19.按照權(quán)利要求16-18中任何一條權(quán)利要求的方法,其特征在于將整個(gè)QP域劃分成N個(gè)子域,并且向各個(gè)子域賦予矩陣表,其中所述矩陣表的尺寸對(duì)應(yīng)于塊尺寸,并且將每個(gè)子域賦予一個(gè)先前指定的帶寬范圍。
20.按照權(quán)利要求16-19中任何一條權(quán)利要求的方法,其特征在于步驟d的外部邊界條件由可用的存儲(chǔ)容量和/或可用的帶寬所代替。
21.按照權(quán)利要求14-20中任何一條權(quán)利要求的方法,其特征在于在特定情況中,在步驟c中執(zhí)行變換前,基于一個(gè)或多個(gè)鄰接塊(預(yù)測(cè))的先前選擇的圖像元素中包含的信息或被包括在參考幀中的參考?jí)K的信息內(nèi)容,對(duì)所選擇的塊的信息內(nèi)容作修改。
22.按照權(quán)利要求14-21中任何一條權(quán)利要求的方法,其特征在于為了編碼內(nèi)部幀,也執(zhí)行按照權(quán)利要求1-13中任何一條所描述之方法的步驟。
23.用于對(duì)數(shù)字編碼的視頻幀序列進(jìn)行壓縮的方法,其中某些幀的信息內(nèi)容根據(jù)前導(dǎo)或后繼幀(參考幀)的內(nèi)容進(jìn)行編碼,該方法進(jìn)一步包括如下步驟a.將所述的待編碼幀劃分成塊,b.在包含所述待編碼塊的幀之前或后續(xù)的參考圖像中為給定的待編碼塊搜索一個(gè)匹配的參考?jí)K,c.通過(guò)將匹配的參考?jí)K與待編碼塊進(jìn)行比較來(lái)執(zhí)行一個(gè)可壓縮性分析,d.根據(jù)可壓縮性分析的結(jié)果選擇最佳參考?jí)K,以及e.使用剛剛選擇的最佳參考?jí)K對(duì)所述的塊進(jìn)行編碼,其特征在于,在步驟b中,在搜索參考?jí)K的過(guò)程中i)將待編碼塊劃分成子塊,ii)分析子塊的內(nèi)容,iii)根據(jù)預(yù)定義的標(biāo)準(zhǔn),選擇預(yù)定數(shù)量的子塊,優(yōu)選地,至少為兩塊,iv)使用所選擇的子塊執(zhí)行參考?jí)K搜索,所述的搜索是在所選擇的參考幀中的特定搜索范圍內(nèi)執(zhí)行的,以便搜索包含與所選擇的子塊區(qū)別最小的子塊的參考?jí)K,在所述的搜索過(guò)程中,所選擇塊的相對(duì)位置保持不變,以及v)使用所選擇的子塊來(lái)選擇最佳參考?jí)K作為搜索結(jié)果。
24.按照權(quán)利要求23的方法,其特征在于在步驟v)中,最佳參考?jí)K是以這樣一種方式選擇的每次當(dāng)該搜索發(fā)現(xiàn)一個(gè)比當(dāng)前參考?jí)K更好的塊時(shí),將新發(fā)現(xiàn)塊的位置數(shù)據(jù)寫(xiě)入多元素循環(huán)緩沖區(qū),該緩沖區(qū)的最后一個(gè)元素包含最佳子塊的位置。
25.按照權(quán)利要求23或24的方法,其特征在于使用整個(gè)待編碼塊來(lái)執(zhí)行參考搜索,并且該搜索是在被認(rèn)為是最佳參考?jí)K的參考?jí)K附近執(zhí)行的,并且根據(jù)所述的使用整個(gè)待編碼塊執(zhí)行的搜索的結(jié)果來(lái)選擇最終的參考?jí)K。
26.按照權(quán)利要求23-25中任何一條權(quán)利要求的方法,其特征在于確定待編碼塊和參考?jí)K的絕對(duì)平方差,并且基于確定的差來(lái)決定所述參考?jí)K的可接受性。
27.按照權(quán)利要求23-26中任何一條權(quán)利要求的方法,其特征在于在已濾波的參考幀中執(zhí)行參考?jí)K搜索。
28.按照權(quán)利要求23-27中任何一條權(quán)利要求的方法,其特征在于在搜索結(jié)果仍然不滿意的情況下,在位于更多參考幀中的搜索范圍內(nèi)執(zhí)行參考?jí)K搜索。
29.按照權(quán)利要求23-28中任何一條權(quán)利要求的方法,其特征在于當(dāng)搜索在所有參考幀中都不成功的情況下,將待編碼塊劃分成子塊,并且為每個(gè)子塊搜索一個(gè)匹配的參考子塊,所述的搜索是在迄今為止產(chǎn)生最佳結(jié)果的參考幀中被認(rèn)為最好的位置附近進(jìn)行的。
30.按照權(quán)利要求29的方法,其特征在于在將待編碼塊劃分成子塊未能產(chǎn)生滿意結(jié)果的情況下,在其它參考幀的最佳位置附近執(zhí)行參考子塊搜索。
31.按照權(quán)利要求29或30的方法,其特征在于在子塊仍然錯(cuò)誤的情況下,將錯(cuò)誤的子塊進(jìn)一步劃分成更小的子塊,并且重復(fù)該搜索。
32.按照權(quán)利要求23-31中任何一條權(quán)利要求的方法,其特征在于從參考?jí)K中減去待編碼塊,并且在步驟e中對(duì)該差分塊進(jìn)行編碼。
33.按照權(quán)利要求23-32中任何一條權(quán)利要求的方法,其特征在于在差分塊的信息內(nèi)容上執(zhí)行一個(gè)將空間表示轉(zhuǎn)換成頻率表示的變換(DCT或哈達(dá)馬變換),從而產(chǎn)生多元素的二維變換塊(DCT或哈達(dá)馬系數(shù)矩陣),并且用熵編碼對(duì)變換塊的信息內(nèi)容進(jìn)行編碼。
34.按照權(quán)利要求23-32中任何一條權(quán)利要求的方法,其特征在于在編碼過(guò)程中,也執(zhí)行按照權(quán)利要求1-13中任何一條所描述之方法的步驟。
35.用于對(duì)數(shù)字編碼的視頻幀序列進(jìn)行壓縮的方法,包括如下步驟a.將每個(gè)幀劃分成將被單獨(dú)編碼的塊,b.在這些塊的信息內(nèi)容上執(zhí)行一個(gè)將空間表示轉(zhuǎn)換成頻率表示的變換(DCT),從而產(chǎn)生變換塊,并且最后e.用熵編碼對(duì)包含在變換塊中的信息進(jìn)行編碼,并且應(yīng)用算術(shù)編碼作為熵編碼,在該過(guò)程中-通過(guò)修改一個(gè)區(qū)間的下限和上限來(lái)對(duì)一個(gè)比特序列進(jìn)行編碼,該區(qū)間是該比特序列之連續(xù)比特值的一個(gè)函數(shù),以及-在該修改所述區(qū)間范圍的函數(shù)中考慮了該序列已經(jīng)到達(dá)的比特的分布,其特征在于-從該比特序列已經(jīng)到達(dá)的比特值中生成地址,-所述地址被用于對(duì)包括多個(gè)處理元素的神經(jīng)網(wǎng)絡(luò)之各個(gè)處理元素進(jìn)行尋址,和-修改處理元素的參數(shù),使得各個(gè)尋址操作的頻率以及該比特序列之當(dāng)前到達(dá)的比特值被用作輸入數(shù)據(jù),并且神經(jīng)網(wǎng)絡(luò)的輸出被用于確定一個(gè)對(duì)所述區(qū)間的下限或上限進(jìn)行修改的參數(shù),-經(jīng)過(guò)涉及多比特處理的初始學(xué)習(xí)階段之后,在對(duì)到達(dá)比特進(jìn)行編碼的過(guò)程中,將所述區(qū)間的上限或下限確定為神經(jīng)網(wǎng)絡(luò)的輸出的一個(gè)函數(shù)。
36.按照權(quán)利要求35的方法,其特征在于將到達(dá)的待編碼比特序列提供給一個(gè)緩沖區(qū),并且劃分成多個(gè)較短的比特序列。
37.按照權(quán)利要求36的方法,其特征在于把由較短比特序列之比特表示的二進(jìn)制值當(dāng)作為一個(gè)地址。
38.按照權(quán)利要求35-37中任何一條權(quán)利要求的方法,其特征在于該地址被用于選擇一個(gè)表的行,其中所述的表包含表示當(dāng)前待編碼比特之可能值的出現(xiàn)頻率的函數(shù)值以及至少一個(gè)權(quán)函數(shù)。
39.按照權(quán)利要求38的方法,其特征在于各個(gè)神經(jīng)元的權(quán)函數(shù)被修改為一個(gè)表示待編碼比特的可能值之出現(xiàn)頻率的函數(shù)值的函數(shù)。
40.按照權(quán)利要求35的方法,其特征在于所述地址的可能地址范圍彼此形成集合(至少部分重疊)。
41.按照權(quán)利要求35-40中任何一條的方法,其特征在于根據(jù)邊界條件動(dòng)態(tài)調(diào)整神經(jīng)網(wǎng)絡(luò)的增益和學(xué)習(xí)速率。
42.按照權(quán)利要求35-41中任何一條權(quán)利要求的方法,其特征在于編碼器可以以不同的級(jí)別使用,其中每個(gè)級(jí)別的參數(shù)可被單獨(dú)地調(diào)整,向每個(gè)級(jí)別賦予一個(gè)使用專用參數(shù)工作的神經(jīng)網(wǎng)絡(luò)。
43.按照權(quán)利要求35-42中任何一條權(quán)利要求的方法,其特征在于在編碼過(guò)程中,也執(zhí)行了按照權(quán)利要求1-34中任何一條所描述之方法的步驟。
44.用于對(duì)數(shù)字編碼的視頻幀序列進(jìn)行壓縮的方法,包括如下步驟a.將一個(gè)給定幀劃分成二維塊,b.在所述塊的信息內(nèi)容上執(zhí)行一個(gè)變換(DCT),該變換將空間表示轉(zhuǎn)換成頻率表示,從而產(chǎn)生多元素二維變換塊(DCT系數(shù)矩陣),并且c.根據(jù)外部邊界條件修改變換塊的元素(量化),并且最后d.用熵編碼對(duì)包含在變換塊中的信息進(jìn)行編碼,其特征在于對(duì)多元素二維變換塊之?dāng)?shù)據(jù)的修改在步驟c中作為神經(jīng)網(wǎng)絡(luò)的輸出的函數(shù)而執(zhí)行。
45.按照權(quán)利要求44的方法,其特征在于神經(jīng)網(wǎng)絡(luò)具有后向傳播或反向傳播結(jié)構(gòu),或者是一個(gè)由多個(gè)神經(jīng)元構(gòu)成的簡(jiǎn)單網(wǎng)絡(luò),其中-將期望/編碼的長(zhǎng)度以及期望/編碼的質(zhì)量的標(biāo)準(zhǔn)化值用作輸入數(shù)據(jù),-將特定數(shù)量的先前接收到的輸入數(shù)據(jù)和當(dāng)前輸入數(shù)據(jù)存儲(chǔ)在一個(gè)時(shí)間窗口(時(shí)隙)中,包含在時(shí)間窗口(時(shí)隙)中的數(shù)據(jù)被賦予神經(jīng)網(wǎng)絡(luò)的輸入神經(jīng)元。
46.按照權(quán)利要求45的方法,其特征在于所述網(wǎng)絡(luò)輸入層中神經(jīng)元的數(shù)量等于存儲(chǔ)在時(shí)間窗口中的數(shù)據(jù)元素的數(shù)量。
47.按照權(quán)利要求46的方法,其特征在于所述網(wǎng)絡(luò)包括一個(gè)隱含層。
48.按照權(quán)利要求47的方法,其特征在于隱含層中神經(jīng)元的數(shù)量大于輸入層中神經(jīng)元的數(shù)量。
49.按照權(quán)利要求44的方法,其特征在于將標(biāo)準(zhǔn)化的期望/編碼的長(zhǎng)度值以及期望/編碼的質(zhì)量值作為輸入數(shù)據(jù)使用,-將預(yù)定數(shù)量(N)的先前接收到的輸入數(shù)據(jù)元素(優(yōu)選地N=31或N=63)與當(dāng)前輸入數(shù)據(jù)一起存儲(chǔ)在時(shí)間窗口中,并且基于包含在時(shí)隙中的數(shù)據(jù)生成地址,-將輸入數(shù)據(jù)舍入到用于地址生成過(guò)程的一個(gè)給定的比特長(zhǎng)度,-通過(guò)哈希函數(shù)從時(shí)間窗口中的每個(gè)元素生成一個(gè)地址,所述的地址指向與該網(wǎng)絡(luò)的其中一個(gè)處理元素對(duì)應(yīng)的表的元素。
50.按照權(quán)利要求49的方法,其特征在于在將期望/編碼的長(zhǎng)度和質(zhì)量數(shù)據(jù)舍入以用于地址生成之前,利用它們的原始形式對(duì)所述網(wǎng)絡(luò)進(jìn)行預(yù)先訓(xùn)練。
51.按照權(quán)利要求49或50的方法,其特征在于通過(guò)哈希函數(shù)根據(jù)包含在時(shí)間窗口中的數(shù)據(jù)生成地址。
52.按照權(quán)利要求44-51中任意一條權(quán)利要求的方法,其特征在于將允許的最小和最大帶寬值用作兩個(gè)處理元素的輸入數(shù)據(jù),所述兩個(gè)處理元素與所述網(wǎng)絡(luò)的其它部分相獨(dú)立。
53.按照權(quán)利要求52的方法,其特征在于由所述網(wǎng)絡(luò)的處理元素以及兩個(gè)獨(dú)立的處理元素生成的結(jié)果出現(xiàn)在兩個(gè)輸出上。
54.按照權(quán)利要求52的方法,其特征在于所述神經(jīng)網(wǎng)絡(luò)的輸出是一個(gè)幀尺寸縮放因子和/或一個(gè)量化因子。
55.按照權(quán)利要求52的方法,其特征在于所述神經(jīng)網(wǎng)絡(luò)的輸出是一個(gè)幀尺寸縮放因子和/或一個(gè)量化因子。
56.按照權(quán)利要求44-55中任意一條權(quán)利要求的方法,其特征在于在編碼過(guò)程中也執(zhí)行按照權(quán)利要求1-43中任意一條所描述的方法的步驟。
57.用于對(duì)數(shù)字視頻數(shù)據(jù)進(jìn)行編碼的裝置,其特征在于它包括適用于執(zhí)行按照權(quán)利要求1-55中任意一條所描述的方法的步驟的裝置。
58.包含用于執(zhí)行按照權(quán)利要求1-55中任意一條所描述的方法的步驟的指令的軟件。
59.由按照權(quán)利要求1-55中任意一條所描述的壓縮方法產(chǎn)生的編碼序列。
60.用于從編碼序列中解壓編碼的視頻數(shù)據(jù)的方法,所述編碼序列是由按照權(quán)利要求1-55中任意一條所描述的壓縮方法產(chǎn)生的。
全文摘要
本發(fā)明涉及一種用于壓縮數(shù)字編碼的視頻幀序列的方法。在該方法中,將一個(gè)給定的幀劃分成塊,并且根據(jù)相鄰的一塊或多塊中包含的信息修改了所選塊的信息內(nèi)容(預(yù)測(cè)),并且將所選塊從空間表示轉(zhuǎn)換成了頻率表示。通過(guò)算術(shù)編碼對(duì)轉(zhuǎn)換塊的信息內(nèi)容進(jìn)行編碼。通過(guò)各種方法來(lái)提高編碼效率,諸如動(dòng)態(tài)地將所述的塊分割成子塊,或者在執(zhí)行進(jìn)一步的變換前在所述塊中執(zhí)行一個(gè)可壓縮性分析。熵編碼使用一個(gè)神經(jīng)網(wǎng)絡(luò)來(lái)確定算術(shù)編碼的參數(shù)。根據(jù)可用的帶寬以及編碼圖像的質(zhì)量,將這些幀動(dòng)態(tài)地重新縮放。
文檔編號(hào)H04N7/46GK1857001SQ200480020907
公開(kāi)日2006年11月1日 申請(qǐng)日期2004年5月20日 優(yōu)先權(quán)日2003年5月20日
發(fā)明者P·托思, J·卡羅利 申請(qǐng)人:Amt 先進(jìn)多媒體科技公司