專利名稱:支持可變畫面組大小的可伸縮視頻編碼方法和可伸縮視頻編碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻壓縮,更具體來說,涉及支持可變畫面組(GOP)大小的視頻編碼方法、視頻編碼器和經(jīng)編碼的比特流的結(jié)構(gòu)。
背景技術(shù):
隨著包括互聯(lián)網(wǎng)的信息通信技術(shù)的發(fā)展,已經(jīng)新提出了大量通信服務(wù)。這種通信服務(wù)中的一種是視頻點(diǎn)播(VOD)服務(wù)。視頻點(diǎn)播指的是這樣的服務(wù),其中根據(jù)末端用戶的請求將諸如電影或新聞那樣的視頻內(nèi)容通過電話線、線纜或互聯(lián)網(wǎng)提供給該用戶。允許用戶觀看電影而不必離開他們的住所。此外,允許用戶通過活動(dòng)(moving)圖像講座來訪問各種類型的知識而不必去學(xué)?;蛩搅⒔虒W(xué)機(jī)構(gòu)。
必須滿足各種要求以便實(shí)現(xiàn)這樣的VOD服務(wù),包括發(fā)送和接收大量數(shù)據(jù)的運(yùn)動(dòng)畫面壓縮和寬帶通信。具體來說,活動(dòng)圖像壓縮通過有效地減小數(shù)據(jù)傳輸所需的帶寬來使能VOD。例如,具有640*480的分辨率的24位真彩色圖像需要每幀640*480*24比特的容量(即,約7.37M比特的數(shù)據(jù))。當(dāng)以每秒30幀的速度傳送此圖像時(shí),需要221兆比特/秒的帶寬來提供VOD服務(wù)。當(dāng)存儲基于這樣的圖像的90分鐘的電影時(shí),需要約1200吉比特的存儲空間。因此,由于非壓縮的活動(dòng)圖像需要極大的帶寬和大容量的存儲媒介來傳輸,所以需要壓縮編碼方法來在當(dāng)前網(wǎng)絡(luò)環(huán)境下提供VOD服務(wù)。
數(shù)據(jù)壓縮的基本原理是去除數(shù)據(jù)冗余。當(dāng)在圖像中重復(fù)相同的顏色或?qū)ο髸r(shí),或當(dāng)在活動(dòng)圖像中的相鄰幀之間存在極小的變化時(shí),可以有效地進(jìn)行運(yùn)動(dòng)(motion)畫面壓縮。
公知的運(yùn)動(dòng)畫面壓縮的視頻編碼算法包括運(yùn)動(dòng)畫面專家組(MPEG-1)、MPEG-2、H.263和H.264(或AVC)。在這樣的視頻編碼方法中,基于運(yùn)動(dòng)估計(jì)和補(bǔ)償通過運(yùn)動(dòng)補(bǔ)償來去除時(shí)間冗余,并且通過離散余旋變換(DCT)來去除空間冗余。這些方法具有高壓縮率,但是它們不具有令人滿意的可伸縮性,這是因?yàn)樗鼈冊谥魉惴ㄖ惺褂昧诉f歸方法。近年來,已經(jīng)積極地對具有可伸縮性的數(shù)據(jù)編碼方法進(jìn)行了研究,例如小波視頻編碼和運(yùn)動(dòng)補(bǔ)償時(shí)間濾波(MCTF)??缮炜s性表示部分地解碼不同質(zhì)量程度、分辨率或幀速率的單個(gè)壓縮比特流的能力。
圖1是傳統(tǒng)的可伸縮視頻編碼器的框圖。
參照圖1,傳統(tǒng)的可伸縮視頻編碼器接收構(gòu)成視頻序列的多個(gè)幀并且執(zhí)行壓縮以便產(chǎn)生比特流。為了達(dá)到此功能,該可伸縮視頻編碼器包括時(shí)間變換器110,其去除多個(gè)幀中存在的時(shí)間冗余;空間變換器120,其從已經(jīng)去除了時(shí)間冗余的幀中去除空間冗余;量化器130,其量化通過去除時(shí)間和空間冗余而產(chǎn)生的變換系數(shù);以及比特流生成器140,生成包括經(jīng)量化的變換系數(shù)和其它信息的比特流。
時(shí)間變換單元110包括運(yùn)動(dòng)估計(jì)器112和時(shí)間濾波器114以便通過補(bǔ)償幀間的運(yùn)動(dòng)來進(jìn)行時(shí)間濾波。運(yùn)動(dòng)估計(jì)器112計(jì)算正在對其進(jìn)行時(shí)間濾波的當(dāng)前幀中的每個(gè)塊和其在參考幀中的對應(yīng)部分之間的運(yùn)動(dòng)矢量。接收關(guān)于運(yùn)動(dòng)矢量的信息的時(shí)間濾波器114利用接收到的信息對多個(gè)幀執(zhí)行時(shí)間濾波。
空間變換單元120利用小波變換從已經(jīng)去除時(shí)間冗余的幀(也就是被時(shí)間濾波的幀)中去除空間冗余??臻g變換單元120用小波變換從所述幀中去除空間冗余。在當(dāng)前所知的小波變換中,一個(gè)幀被分解成四個(gè)部分(象限)。和整個(gè)圖像基本相同的四分之一大小的圖像(L圖像)出現(xiàn)在幀的一個(gè)象限中,根據(jù)L圖像重建整個(gè)圖像所需的信息(H圖像)出現(xiàn)在其他三個(gè)象限中。同樣,L圖像可以被分解成四分之一大小的LL圖像和重建該L圖像所需的信息。
已經(jīng)從其去除了時(shí)間和空間冗余的幀(變換系數(shù))被傳送給量化器130以便進(jìn)行量化。量化器130將實(shí)數(shù)變換系數(shù)量化成整數(shù)值的系數(shù)。就是說,通過量化可以減少表示圖像數(shù)據(jù)的比特量。同時(shí),基于MCTF的視頻編碼器使用嵌入式量化技術(shù)。通過對變換系數(shù)執(zhí)行嵌入式量化,不但可以減少要傳送的信息量,而且可以達(dá)到信噪比(SNR)的可伸縮性。術(shù)語‘嵌入式’用來表示經(jīng)編碼的比特流包含量化。換句話說,依據(jù)視覺的重要性來產(chǎn)生或標(biāo)記經(jīng)壓縮的數(shù)據(jù)。目前應(yīng)用的嵌入式量化算法有EZW,SPIHT,EZBC和EBCOT。
比特流生成器140產(chǎn)生包含有經(jīng)編碼的圖像數(shù)據(jù)的比特流(所述比特流具有附著于其的必要的首標(biāo))、從運(yùn)動(dòng)估計(jì)器112獲得運(yùn)動(dòng)矢量和其他必要信息。
圖2圖示的是連續(xù)時(shí)間逼近(approximation)和參考算法(STAR)的基本概念。
參照圖2,每個(gè)時(shí)間等級(level)上的所有幀由節(jié)點(diǎn)表示,幀之間的參考由箭頭指示。在每個(gè)時(shí)間等級上只能定位必要的幀。例如一組畫面(GOP)中只有一幀出現(xiàn)在最高時(shí)間等級(第四等級)上。幀f(0)具有最高的時(shí)間等級。在下一個(gè)時(shí)間等級上,執(zhí)行連續(xù)時(shí)間分析以便根據(jù)具有先前編碼的幀的索引的原始幀預(yù)測具有高頻分量的錯(cuò)誤幀。當(dāng)GOP的大小是8時(shí),幀f(0)在最高時(shí)間等級(第四等級)上被編碼成幀內(nèi)幀(intraframe)(I幀),在下一級時(shí)間等級(第三等級)上,用沒有被編碼的幀f(0)將幀f(4)編碼為幀間幀(interframe)(H幀)。然后,在時(shí)間等級2上,用沒有被編碼的幀f(0)和f(4)將幀f(2)和f(6)編碼成H幀。在最低時(shí)間等級(第一等級)上,用沒有被編碼的幀f(0),f(2)、f(4)和f(6)將幀f(1)、f(3)、f(5)和f(7)編碼成H幀。
解碼過程是以幀f(0)開始的。然后,用被解碼的幀f(0)作為參考來對幀f(4)解碼。以同樣的方法,用先前被解碼的f(0)和f(4)來對幀f(2)和f(6)解碼。最后,用先前被解碼的幀f(0)、f(2)f(4)和f(6)來對幀f(1)、f(3)、f(5)和f(7)解碼。
在STAR算法中,同樣的時(shí)間處理在編碼器側(cè)和解碼器側(cè)都被執(zhí)行。這樣,使用STAR算法的視頻編碼在編碼器側(cè)和解碼器側(cè)都達(dá)到可伸縮性,而不像使用傳統(tǒng)的運(yùn)動(dòng)補(bǔ)償時(shí)間濾波(MCTF)算法那樣只能在解碼器側(cè)保持可伸縮性。
圖3-5顯示了用傳統(tǒng)時(shí)間濾波算法獲得時(shí)間可伸縮性的過程。GOP的大小為8。
為了用如圖2所示的方式被編碼的比特流達(dá)到時(shí)間可伸縮性,代碼轉(zhuǎn)換器(transcoder)截短比特流并且只將與所需時(shí)間等級相對應(yīng)必要的部分發(fā)送給解碼器。當(dāng)以全幀速率對比特流進(jìn)行代碼轉(zhuǎn)換時(shí),必須將比特流中的所有幀都發(fā)送到解碼器。
如圖3所示,解碼器從每個(gè)GOP中接收一個(gè)I幀和七個(gè)H幀來重建原始的視頻序列。更具體地說,作為GOP的首幀的I幀首先被解碼,接下來用被解碼的首幀作為參考來解碼幀5。類似地,用被解碼的首幀和第5幀作為參考來解碼幀3,接著用被解碼的第5幀來解碼幀7。然后,通過參考先前被解碼的幀來解碼幀2,4和6。當(dāng)使用來自相鄰GOP的參考幀時(shí),通過參考相鄰GOP中的I幀來解碼幀,如虛線箭頭所示。就是說,通過參考GOP中的被解碼的首幀和下一GOP中的首幀(幀9)來解碼幀5。通過執(zhí)行這一過程,解碼器在時(shí)間等級1上重建視頻序列。
為了在時(shí)間等級1上重建具有視頻序列的半幀速率的視頻序列,如圖4所示,代碼轉(zhuǎn)換器截去幀2、4、6、8和10并且發(fā)送只包含與時(shí)間等級2相對應(yīng)的幀1、3、5、7、9和11的比特流給解碼器。
同樣,為了在時(shí)間等級1上重建一個(gè)具有視頻序列的四分之一幀速率的視頻序列,如圖5所示,代碼轉(zhuǎn)換器通過截去剩下的幀將只包含與時(shí)間等級3相對應(yīng)的幀1、5、9、13和17的比特流發(fā)送給解碼器。
這樣,可以獲得時(shí)間可伸縮性。總的來說,分配到I幀中的比特多于分配到H幀中的比特。參照圖3-5,I幀在時(shí)間等級3上每兩幀出現(xiàn)一次,在時(shí)間等級2上每四幀出現(xiàn)一次,在時(shí)間等級1上每八幀出現(xiàn)一次。就是說,傳統(tǒng)的可伸縮的視頻編碼方案需要大量的比特來傳輸相同質(zhì)量的視頻,這是因?yàn)榘诟蛶俾手械谋忍亓髦械腎幀數(shù)目增加了。解決這個(gè)問題的一種方法是增加GOP的大小。例如,如果GOP的大小被增加到16,那么I幀在時(shí)間等級3上每四幀出現(xiàn)一次。如果GOP的大小增加到32,I幀在時(shí)間等級3上每八幀出現(xiàn)一次。
發(fā)明內(nèi)容
增加GOP的大小必定需要用于編碼和解碼的可伸縮視頻編碼器和解碼器中的大存儲量,并且減小可隨機(jī)訪問性。因此,需要一種可伸縮視頻算法,其可變地判定GOP的大小并且高效地將視頻序列編碼成具有可變GOP大小的比特流。
本發(fā)明提供一種可伸縮視頻編碼方法,其能夠以可變的GOP大小將視頻序列高效地編碼成比特流。
本發(fā)明還提供一種可伸縮視頻編碼器,其用于執(zhí)行該方法。
當(dāng)查看了后面的描述、附圖和所附權(quán)利要求,對于那些技術(shù)人員來說,本發(fā)明的上述的方面以及其它方面、特征和優(yōu)點(diǎn)將變得清楚。
根據(jù)本發(fā)明的一個(gè)方面,提供一種可伸縮視頻編碼方法,包括步驟接收視頻序列和以可變的GOP大小將所接收的視頻序列編碼成比特流。
根據(jù)本發(fā)明的一個(gè)方面,提供一種可伸縮視頻編碼器,包含依據(jù)預(yù)定的準(zhǔn)則判定畫面組(GOP)大小的判定器;和以所判定的GOP大小將輸入視頻序列編碼成比特流的可伸縮視頻編碼單元。
根據(jù)本發(fā)明的一個(gè)方面,提供一種帶有可變大小GOP的比特流,該比特流包含以第一畫面組(GOP)大小可伸縮地編碼的視頻幀;和以不同于第一GOP大小的GOP大小可伸縮地編碼的視頻幀。
根據(jù)本發(fā)明的一個(gè)方面,提供一種代碼轉(zhuǎn)換方法包括接收比特流,所述比特流包含經(jīng)可伸縮編碼的視頻幀和通過將對應(yīng)于經(jīng)可伸縮編碼的視頻幀中經(jīng)編碼的幀內(nèi)幀的原始幀可伸縮編碼成幀間幀而獲得的額外幀;以及選擇性地刪除經(jīng)編碼地幀內(nèi)幀和對應(yīng)于該幀內(nèi)幀的額外幀。
通過參照附圖具體描述示例實(shí)施例,本發(fā)明的上述和其他特征和優(yōu)點(diǎn)將會變得更加清楚,其中圖1是一個(gè)傳統(tǒng)可伸縮視頻編碼器的框圖;圖2顯示一個(gè)傳統(tǒng)時(shí)間濾波算法的示例;圖3-5圖示了在傳統(tǒng)時(shí)間濾波算法中獲得時(shí)間可伸縮性的過程;圖6圖示了根據(jù)本發(fā)明第一實(shí)施例的在時(shí)間濾波過程中合并畫面組(GOP)的過程;圖7圖示了根據(jù)本發(fā)明第二實(shí)施例的在時(shí)間濾波過程中合并GOP的過程;圖8圖示了根據(jù)本發(fā)明第三實(shí)施例的在時(shí)間濾波過程中合并GOP的過程;圖9是一個(gè)根據(jù)本發(fā)明的實(shí)施例的可伸縮編碼器的框圖。
圖10顯示的是根據(jù)本發(fā)明的實(shí)施例的經(jīng)編碼的比特流的結(jié)構(gòu)。
具體實(shí)施例方式
現(xiàn)在將結(jié)合顯示發(fā)明示例實(shí)施例的附圖,對本發(fā)明進(jìn)行更加充分地描述。
依據(jù)MPEG-21標(biāo)準(zhǔn),必須滿足從單個(gè)壓縮的比特流中重建表1所示視頻序列的要求。
表1
為了滿足這些要求而基于高幀速率來判定GOP的大小將會降低低幀速率視頻的壓縮效率。另一方面,基于低幀速率判定GOP的大小不僅需要大存儲量用于高幀速率視頻的壓縮和重建,而且會降低可隨機(jī)訪問性?,F(xiàn)在將參照圖6到8來描述解決這些問題的一些方法。
在圖6到8中,每一個(gè)方框表示單個(gè)幀,灰方框和白方框分別表示I幀和H幀。實(shí)箭頭表示被參考的幀,而被虛線圓圈包圍的幀表示I幀和通過將兩個(gè)GOP合并成一個(gè)來轉(zhuǎn)換該I幀而得到的H幀。虛線箭頭表示從I幀指向H幀的方向。合并兩個(gè)GOP意味著使用相鄰GOP中的I幀作為參考將一個(gè)GOP中的I幀編碼成H幀。換句話說,通過合并兩個(gè)GOP,將來自兩個(gè)GOP中的兩個(gè)I幀中的任意一個(gè)編碼成H幀。
圖6圖示依據(jù)本發(fā)明的第一實(shí)施例的在時(shí)間濾波過程中將GOP相互合并的過程。
總的來說,對于具有快速變化的運(yùn)動(dòng)的視頻編碼H幀,比對于具有少量和慢速運(yùn)動(dòng)的視頻,需要的比特?cái)?shù)目多得多。這是因?yàn)樵贖幀中快速變化運(yùn)動(dòng)的視頻需要增加比特?cái)?shù)來編碼運(yùn)動(dòng)矢量和增加的紋理(texture)尺寸。這樣,增加GOP的大小對于快速變化運(yùn)動(dòng)的視頻來說可能會是相當(dāng)?shù)托У?。?shí)際上,運(yùn)動(dòng)視頻的連續(xù)鏡頭(footage)由快速變化的運(yùn)動(dòng)和慢速運(yùn)動(dòng)構(gòu)成。為了高效地編碼運(yùn)動(dòng)視頻的視頻序列,期望可變地判定最佳GOP大小。圖6圖示了可變地判定GOP大小的過程。
當(dāng)圖6的等級1中示出的I幀410附近的運(yùn)動(dòng)無變化時(shí),如圖6的等級2中所示通過合并GOP將I幀410編碼成H幀415。在此情況下,由于H幀415需要用來編碼的比特?cái)?shù)目比I幀410小得多,與合并GOP(等級1)之前獲得的編碼效率相比合并GOP(等級2)提高了編碼效率。是否將GOP相互合并是通過考慮合并GOP前后獲得的編碼效率來判定的。就是說,當(dāng)通過合并GOP將I幀轉(zhuǎn)換成H幀產(chǎn)生比合并前更高的編碼效率時(shí),通過合并GOP以更大的GOP大小對視頻序列編碼。相反地,當(dāng)其導(dǎo)致比合并前更低的編碼效率時(shí),以原始GOP大小對視頻序列編碼而不合并GOP。
一種判定是否合并GOP的方法是比較當(dāng)以原始的GOP大小編碼視頻序列而不合并GOP時(shí)所計(jì)算的代價(jià)(cost)和當(dāng)合并GOP而以更大的GOP大小對其編碼時(shí)所計(jì)算的代價(jià)。如果后者比前者少,則通過合并GOP以更大的GOP大小編碼該視頻序列。相反,如果前者比后者少,則以合并該GOP前可用的原始GOP大小編碼該視頻序列。
另一種方法是比較當(dāng)合并GOP前編碼I幀時(shí)所計(jì)算的代價(jià)和當(dāng)合并GOP后將該I幀編碼成H幀時(shí)所計(jì)算的代價(jià),而不是比較GOP中所有幀的代價(jià)。第一種方法涉及將視頻序列編碼兩次,而第二種方法涉及以合并GOP之前的原始GOP大小編碼視頻序列,然后只對將要被轉(zhuǎn)換成H幀的幀進(jìn)行編碼。
然而另一種方法是比較與I幀相關(guān)聯(lián)的代價(jià)和與乘以預(yù)定因數(shù)的H幀相關(guān)聯(lián)的代價(jià)。例如,可以將I幀的代價(jià)與被乘以因數(shù)1.1的H幀的代價(jià)相比較。以這種方式進(jìn)行比較是因?yàn)榕cH幀相比以更高的質(zhì)量重建I幀。當(dāng)合并GOP能夠充分地補(bǔ)償不利的影響(比如增加的存儲量和圖像質(zhì)量的下降)時(shí),合并GOP是合理的。換句話說,只有當(dāng)其通過用由于合并GOP而節(jié)省的比特來提高其他幀的圖像質(zhì)量充分地補(bǔ)償由于轉(zhuǎn)換成H幀所引起的圖像質(zhì)量的下降時(shí),才將GOP相互合并。
當(dāng)圖6顯示以相同幀速率合并GOP的過程時(shí),圖7顯示在依據(jù)本發(fā)明的第二個(gè)實(shí)施例的時(shí)間濾波過程中以變化幀速率合并GOP的過程。
圖7圖示在依據(jù)本發(fā)明的第二個(gè)實(shí)施例的時(shí)間濾波過程中合并GOP的過程。
當(dāng)時(shí)間等級下降一級時(shí)幀速率通常下降一半。當(dāng)幀速率下降為先前速率的一半時(shí),兩個(gè)GOP被合并成一個(gè)。就是說,通過交替地將相鄰兩個(gè)GOP中每兩個(gè)I幀中的一個(gè)轉(zhuǎn)換成H幀,使包含在所得到的單個(gè)GOP中的I幀數(shù)目等于具有原始幀速率的每個(gè)GOP中所包含的I幀數(shù)目。
參考圖7所示的等級1和等級2,為了獲得具有時(shí)間等級1的比特流的一半幀速率的時(shí)間等級2的比特流,I幀被交替轉(zhuǎn)換成H幀。在將I幀510和520分別轉(zhuǎn)換成H幀515和525后,包括H幀515和525的時(shí)間等級2的比特流被發(fā)送到解碼器。類似地,參考圖7中的等級3,當(dāng)幀速率降為圖7的等級1中所示的比特流速率的四分之一時(shí),I幀530被轉(zhuǎn)換成H幀535。通過以這種方式合并GOP,使得在時(shí)間等級3上獲得具有和圖7的等級1中所示相同結(jié)構(gòu)的GOP的比特流成為可能。這樣,每個(gè)GOP具有每8幀包含一個(gè)I幀的比特流,就是說,一個(gè)I幀后面跟著七個(gè)H幀。當(dāng)幀速率下降一半時(shí),通過交替地將I幀轉(zhuǎn)換成H幀(合并GOP),本發(fā)明的第二個(gè)實(shí)施例能夠解決傳統(tǒng)編碼方法具有的問題,其中,當(dāng)幀速率下降時(shí)I幀數(shù)目增加。雖然以上描述每個(gè)GOP中I幀的數(shù)目是不考慮幀速率的常數(shù),但是在幀速率下降一級時(shí)其可能會下降。例如,當(dāng)幀速率下降一半時(shí),I幀數(shù)目可能會下降到前一個(gè)的1/3(將三個(gè)I幀中的兩個(gè)轉(zhuǎn)換成H幀)或1/4,或者下降到前一個(gè)的2/3(將三個(gè)I幀中的一個(gè)轉(zhuǎn)換成H幀)或3/4。隨著幀速率增加或減少I幀的數(shù)目(合并GOP)應(yīng)當(dāng)被解釋為包含在本發(fā)明中。
可以獨(dú)立于依據(jù)本發(fā)明第一實(shí)施例的合并來執(zhí)行依據(jù)本發(fā)明第二實(shí)施例的以變化幀速率合并GOP。就是說,前者考慮視頻的特性(運(yùn)動(dòng)的量)判定是否合并GOP,而后者判定怎樣依據(jù)解碼器所需要的幀速率來合并GOP。圖8顯示了第一和第二實(shí)施例的組合。
圖8圖示了依據(jù)本發(fā)明的第三實(shí)施例的時(shí)間濾波過程中合并GOP的過程。
首先,可以通過在相同時(shí)間等級上合并圖8的等級1的比特流中的GOP而得到圖8的等級2的比特流。當(dāng)將I幀610轉(zhuǎn)換成H幀615時(shí)兩個(gè)GOP被合并成一個(gè)并且由于小的運(yùn)動(dòng)量或著其他原因這會更加有利。
為了以變化幀速率獲得圖8中的等級3和圖8中的等級4的比特流,分別將I幀620、630和640轉(zhuǎn)換成H幀625、635和645。
通過在相同時(shí)間等級上合并在圖8中的等級1的比特流中的GOP所生成的圖8等級2的比特流包含H幀615而不是I幀610。另一方面,考慮變化時(shí)間等級的比特流包含所有原始和被轉(zhuǎn)換的H幀。就是說,為了發(fā)送圖8中等級3和4的比特流,被編碼的比特流除了圖8中的等級2的比特流中的所有幀之外還包含時(shí)間等級2的H幀625和635和時(shí)間等級3的H幀645。當(dāng)從解碼器接收到關(guān)于時(shí)間等級2的比特流的請求時(shí),I幀620和630、H幀645和最低時(shí)間等級中的幀(偶數(shù)幀)在經(jīng)編碼的比特流中被截去。在截去不必要的比特后剩下的經(jīng)編碼的比特流的部分是如圖8的等級3中所示的比特流,其隨后被發(fā)送給解碼器。
圖9是依據(jù)本發(fā)明實(shí)施例的可伸縮視頻編碼器700的框圖。
可伸縮視頻編碼器700包括去除視頻序列中的幀之間的時(shí)間冗余的時(shí)間轉(zhuǎn)換器710,去除幀之間的空間冗余的空間轉(zhuǎn)換器720,用來量化已經(jīng)去除時(shí)間和空間冗余的幀的量化器730,用來判定是否合并GOP的判定器740,和比特流生成器750??缮炜s視頻編碼器700進(jìn)一步包括額外幀生成器770,用來生成被加到比特流以便根據(jù)時(shí)間等級(或幀速率)替換I幀的H幀。
時(shí)間轉(zhuǎn)換器710用一個(gè)I幀作為參考去除每個(gè)GOP中幀之間的時(shí)間冗余。在本實(shí)施例中,時(shí)間轉(zhuǎn)換器710用連續(xù)時(shí)間逼近和參考算法(STAR)來進(jìn)行時(shí)間濾波。不包含更新幀的步驟的非約束運(yùn)動(dòng)補(bǔ)償時(shí)間濾波(UMCTF)可以被用來取代STAR算法。時(shí)間轉(zhuǎn)換器710去除GOP大小為i的視頻序列中的時(shí)間冗余。此外,其將GOP的大小增大2倍并且去除GOP大小為i×2的視頻序列中的時(shí)間冗余。
空間轉(zhuǎn)換器720去除已經(jīng)被時(shí)間轉(zhuǎn)換器710去除了時(shí)間冗余的幀中的空間冗余。雖然可伸縮視頻編碼方案通常采用小波變換來去除空間冗余,但空間轉(zhuǎn)換器720可以使用離散余弦變換(DCT)。
量化器730對已經(jīng)去除了時(shí)間和空間冗余的幀(變換系數(shù))執(zhí)行量化。利用眾所周知的算法,比如嵌入零樹小波算法(EZW),分級樹的集合分裂(SPIHT),嵌入零塊編碼(EZBC),或者基于優(yōu)化截?cái)嗟那度胧綁K編碼(EBCOT),來執(zhí)行量化。
判定器740判定是否將經(jīng)量化器730編碼的幀中的I幀轉(zhuǎn)換成H幀。為了完成這項(xiàng)工作,判定器740比較以GOP大小為i編碼時(shí)計(jì)算的代價(jià)和以GOP大小為i×2編碼時(shí)計(jì)算的代價(jià),并且選擇代價(jià)小的GOP大小。例如,如果前者小于后者,判定器740通過編碼作為I幀的I幀來生成以GOP大小為i編碼的比特流。相反地,當(dāng)后者小于前者時(shí),判定器740通過編碼要被轉(zhuǎn)換為H幀的I幀來生成以GOP大小為i×2編碼的比特流。
一種減小計(jì)算負(fù)擔(dān)的方法是以i×2的GOP大小只編碼要被轉(zhuǎn)換成H幀的幀而不是視頻序列,并且比較以GOP大小為i×2編碼的幀和以GOP大小為i編碼的相應(yīng)I幀之間的代價(jià)。這是可能的,因?yàn)樵谑褂瞄_環(huán)系統(tǒng)的大多數(shù)可伸縮的視頻編碼算法中,使用原始幀而不是編碼后的幀作參考來編碼H幀。
比特流生成器750以可變大小的GOP生成一個(gè)比特流,包括被量化的幀、運(yùn)動(dòng)矢量和其他必要信息。比特流的結(jié)構(gòu)將會在后面通過參照圖10被描述。當(dāng)幀速率下降時(shí),額外幀生成器770生成H幀(額外幀)來替代I幀。生成的額外幀具有關(guān)于要加上的幀速率的信息并且被合并到比特流中。
代碼轉(zhuǎn)換器760截去經(jīng)編碼的比特流的不必要的比特并且生成只包含必要比特的輸出比特流。例如,為了生成低幀速率的比特流,低時(shí)間等級上的幀被截去。對于包含額外幀的比特流,代碼轉(zhuǎn)換器760檢查對于適當(dāng)?shù)膸俾适欠袷褂妙~外幀。如果對于幀速率使用額外幀,則代碼轉(zhuǎn)換器760截去相應(yīng)的I幀以便使額外幀留在比特流中,從而有效地減少比特流中I幀的數(shù)目??梢越厝ヅc未被截去的I幀相對應(yīng)的額外幀。
現(xiàn)在將要描述在同一時(shí)間等級上合并GOP。
首先,以GOP大小為i對從時(shí)間轉(zhuǎn)換器710接收的視頻序列中的i×2個(gè)幀執(zhí)行視頻編碼。然后,以GOP大小為i×2編碼對i×2個(gè)幀執(zhí)行視頻編碼。判定器740比較以GOP大小為i編碼的第二個(gè)I幀和以GOP大小為i×2編碼的相應(yīng)的H幀之間的代價(jià)。如果與H幀相關(guān)聯(lián)的代價(jià)少于與I幀關(guān)聯(lián)的代價(jià),則以GOP大小為i×2編碼同一個(gè)幀范圍(i×2個(gè)幀)。另一方面,如果I幀的代價(jià)小于其他幀,則以GOP大小為i編碼同一個(gè)幀范圍。
然后,通過對i×2個(gè)幀(2GOP)以GOP大小為i進(jìn)行編碼然后以GOP大小為i×2進(jìn)行編碼,對下一幀范圍執(zhí)行視頻編碼。判定器740在比較兩者的代價(jià)之后判定將GOP的大小設(shè)置為i還是i×2。
上述過程被迭代執(zhí)行直到視頻序列中的所有幀被編碼。
雖然被描述的是在GOP大小為i和i×2的代價(jià)之間的進(jìn)行比較,但是GOP的大小可以是i×3,i×4,或者i×8而不是i×2。
而且,為了代價(jià)比較,可以i×2的GOP大小來只編碼與以GOP大小為i編碼的第二個(gè)I幀相對應(yīng)的H幀,而不是所有i×2個(gè)幀。
接下來將描述在變化時(shí)間等級上合并GOP。
在大多數(shù)傳統(tǒng)可伸縮視頻編碼算法中,隨著時(shí)間等級的增加,幀速率下降一半,因而1幀數(shù)目增加2倍。就是說,時(shí)間等級2的比特流是通過從時(shí)間等級1的比特流中交替地去除幀來獲得的。為了減少時(shí)間等級2的比特流中I幀的數(shù)目,通過定期地將I幀轉(zhuǎn)換成H幀將GOP相互合并。一種合并GOP的方法是交替地將I幀轉(zhuǎn)換成H幀以便時(shí)間等級2的比特流和時(shí)間等級1的比特流具有相同百分比的I幀。類似地,一些I幀在時(shí)間等級3上被轉(zhuǎn)換成H幀以便時(shí)間等級3的比特流和時(shí)間等級1的比特流具有相同百分比的I幀。
為了完成幀轉(zhuǎn)換,時(shí)間等級1的比特流包含用來在時(shí)間等級2和3上合并GOP的H幀。
更具體地說,以GOP大小為j來編碼視頻序列中的兩個(gè)GOP,接著的是通過交替地去除同一幀范圍內(nèi)的幀而得到的以GOP大小為j×2對視頻序列的編碼。雖然是同一個(gè)幀,但是在前一視頻序列中的I幀和后一視頻序列中的H幀之間比較代價(jià)。如果I幀的代價(jià)大于H幀的代價(jià),則如上所述H幀被加到由在同一時(shí)間等級上合并GOP生成的比特流中。同樣的過程被迭代執(zhí)行。然而,如果1幀的代價(jià)小于H幀的代價(jià),則沒有H幀被加到比特流中,這是因?yàn)镮幀不需要被轉(zhuǎn)換成H幀。
應(yīng)用上面提到的過程所產(chǎn)生的比特流的結(jié)構(gòu)現(xiàn)在將參照圖10來描述。
圖10顯示的是依據(jù)本發(fā)明的實(shí)施例的經(jīng)編碼的比特流的結(jié)構(gòu)。
參照圖10,經(jīng)編碼的比特流包括一個(gè)含有關(guān)于視頻序列的信息的序列首標(biāo)810和多個(gè)GOP字段。每個(gè)GOP字段包括GOP首標(biāo)820,經(jīng)編碼的幀830和當(dāng)時(shí)間等級(幀速率)變化時(shí)用來合并GOP的額外幀840。
GOP首標(biāo)820包含關(guān)于GOP的各種信息,比如GOP中的經(jīng)編碼的幀的數(shù)目和分辨率。例如,GOP#2可以包括GOP#2首標(biāo)820-2,其中820-2包含的信息表明幀的數(shù)目是8。通過合并GOP獲得的GOP中的經(jīng)編碼的幀的數(shù)目比沒有合并的GOP中的經(jīng)編碼的幀的數(shù)目大。例如,如果后者是8,則前者可以是16或32。
經(jīng)編碼的幀830涉及從視頻序列中的幀中去除時(shí)間和空間冗余后的量化信息。每個(gè)GOP可以只包括一個(gè)I幀。如圖10所示,GOP#2包括后面跟著七個(gè)H幀的唯一的I幀。
額外幀840涉及當(dāng)時(shí)間等級(幀速率)增加(下降)時(shí)用來合并GOP的經(jīng)編碼的H幀。每一個(gè)H幀840包含指示時(shí)間等級的標(biāo)志。代碼轉(zhuǎn)換器在代碼轉(zhuǎn)換過程中檢查該標(biāo)志并判定是否截去額外幀或I幀。可以與相應(yīng)I幀相鄰地放置額外幀840,這是因?yàn)檫@樣在代碼轉(zhuǎn)換過程中有選擇地截去I幀或額外幀后不需要重新排列幀。
如圖9所示的代碼轉(zhuǎn)換器760截去經(jīng)編碼的比特流中不必要的部分并且輸出剩余的部分。例如,當(dāng)接收到關(guān)于時(shí)間等級1的比特流的請求時(shí),代碼轉(zhuǎn)換器760從經(jīng)編碼的比特流中截去額外幀840并且發(fā)送剩余的幀到解碼器(未示出)。
一旦接到對于時(shí)間等級2的比特流的請求時(shí),代碼轉(zhuǎn)換器760交替地去除經(jīng)編碼的幀830。例如,代碼轉(zhuǎn)換器760截去經(jīng)編碼的幀830-2中的H幀#2,#4,#6,#8。當(dāng)存在與I幀#1對應(yīng)的額外幀840-2時(shí),如圖10所示,代碼轉(zhuǎn)化器760通過截去I幀#1而留下額外幀840-2。另一方面,代碼轉(zhuǎn)換器760截去GOP#3中的額外幀840-3而不是對應(yīng)的I幀。這樣,比特流中的I幀數(shù)目保持不變,即使幀速率下降一半時(shí)也是如此。當(dāng)比特流通過截去I幀#1而包含額外幀840-2時(shí),GOP#2的首標(biāo)820-2可以被刪除,這是因?yàn)镚OP被相互合并。在此情況下,GOP#1的首標(biāo)820-1中指示的幀的數(shù)目是正確的。作為選擇,GOP#2的首標(biāo)820-2可以不被刪除。
工業(yè)實(shí)用性這樣,當(dāng)存在對于時(shí)間等級2的比特流的請求時(shí),可以用額外幀來替換來自兩個(gè)GOP的I幀的任何一個(gè)。一旦接到對于時(shí)間等級3的比特流的請求時(shí),用相應(yīng)的額外幀來替換來自四個(gè)GOP的四個(gè)I幀中的三個(gè)。
依據(jù)本發(fā)明,使實(shí)現(xiàn)能夠?qū)⒁曨l序列高效地編碼成具有可變GOP大小的比特流的可伸縮視頻編碼方法成為可能。
在結(jié)束詳細(xì)的描述時(shí),本領(lǐng)域的技術(shù)人員將明白在基本上不背離本發(fā)明的原理的情況下,可以對示例實(shí)施例作出許多變化和修改。因此,本發(fā)明的公開的實(shí)施例僅僅是普通的和描述性的而不是起限制的作用。應(yīng)該理解在無論如何不背離在后面的權(quán)利要求中所限定的本發(fā)明的精神和范圍的情況下,可以在其中作出各種改變、修改和替換。
權(quán)利要求
1.一種可伸縮視頻編碼方法包含(a)接收一個(gè)視頻序列(b)以第一畫面組GOP大小將接收到的視頻序列編碼成第一比特流;(c)以第二GOP大小將接收到的視頻序列編碼成第二比特流,其中第二GOP的大小大于第一GOP大小;并且(d)比較第一比特流的第一編碼效率和第二比特流的第二編碼效率,并且判定第一比特流和第二比特流中編碼效率高的一個(gè)。
2.如權(quán)利要求1所述的方法,其中(d)包含比較第一比特流的第一代價(jià)和第二比特流的第二代價(jià);并且判定第一比特流和第二比特流中代價(jià)低的一個(gè)。
3.如權(quán)利要求2的方法,其中(d)中包含比較以第一GOP大小編碼幀內(nèi)幀的代價(jià)和通過以第二GOP大小編碼與該幀內(nèi)幀對應(yīng)的原始幀所得到的幀間幀的代價(jià);并且當(dāng)幀內(nèi)幀的代價(jià)小于幀間幀的代價(jià)時(shí),判定第一個(gè)GOP大小為所判定的GOP大小,然而當(dāng)幀間幀的代價(jià)小于幀間幀的代價(jià)時(shí),判定第二個(gè)GOP大小為所判定的GOP大小。
4.如權(quán)利要求1所述的方法,進(jìn)一步包括通過編碼多個(gè)幀內(nèi)幀作為多個(gè)幀間幀而生成額外幀和將所生成的額外幀加到比特流中。
5.如權(quán)利要求4的方法,其中與對應(yīng)于額外幀的多個(gè)幀內(nèi)幀相鄰地放置被加到比特流的額外幀。
6.一種可伸縮視頻編碼器,包含依據(jù)預(yù)定的準(zhǔn)則自適應(yīng)地判定畫面組GOP大小的判定器;和以所判定的GOP大小將輸入視頻序列編碼成比特流的可伸縮視頻編碼單元。
7.如權(quán)利要求6所述的編碼器,其中,通過比較當(dāng)以第一GOP大小編碼輸入視頻序列的部分時(shí)所計(jì)算的第一代價(jià)和當(dāng)以大于第一GOP大小的第二個(gè)GOP大小編碼輸入視頻序列的部分時(shí)所計(jì)算的第二代價(jià),判定器自適應(yīng)地判定第一GOP大小和第二GOP大小中代價(jià)低的一個(gè)作為預(yù)定部分的所判定的GOP大小。
8.如權(quán)利要求6所述的編碼器,其中,在判定器內(nèi)比較通過以第一GOP大小對輸入視頻序列的部分進(jìn)行編碼所得到的幀內(nèi)幀的第一代價(jià)和通過以第二GOP大小對與幀內(nèi)幀對應(yīng)的原始幀進(jìn)行編碼所得到的幀間幀的第二代價(jià),并且當(dāng)幀內(nèi)幀的第一代價(jià)小于幀間幀的第二代價(jià)時(shí)判定第一GOP大小為經(jīng)編碼的部分的所判定的GOP大小,或者當(dāng)幀內(nèi)幀的第一代價(jià)大于幀間幀的第二代價(jià)時(shí)判定第二GOP大小為經(jīng)編碼的部分的所判定的GOP大小。
9.如權(quán)利要求6所述的編碼器,其中可伸縮視頻編碼單元通過將與多個(gè)幀內(nèi)幀對應(yīng)的原始幀編碼為多個(gè)幀間幀來生成額外幀,并且將生成的額外幀加到比特流中。
10.如權(quán)利要求9所述的編碼器,其中,可伸縮視頻編碼單元將額外幀布置到比特流中使得額外幀與對應(yīng)于該額外幀的多個(gè)幀內(nèi)幀相鄰。
11.一種帶有可變大小GOP的比特流,該比特流包含以第一畫面組GOP大小可伸縮地編碼的第一視頻幀;和以第二GOP大小可伸縮地編碼的第二視頻幀。
12.如權(quán)利要求11所述的比特流,進(jìn)一步包含所生成的額外幀,所述額外幀是通過將多個(gè)幀內(nèi)幀編碼為多個(gè)幀間幀所獲得的。
13.如權(quán)利要求12所述的比特流,其中,與相應(yīng)于額外幀的多個(gè)幀內(nèi)幀相鄰地放置所生成的額外幀。
14.如權(quán)利要求12所述的比特流,其中,額外幀包含指示要使用的時(shí)間等級的標(biāo)志。
15.一種代碼轉(zhuǎn)換方法包括接收比特流,所述比特流包含經(jīng)可伸縮編碼的視頻幀和通過將對應(yīng)于經(jīng)可伸縮編碼的視頻幀中經(jīng)編碼的幀內(nèi)幀的原始幀可伸縮編碼成幀間幀而獲得的額外幀;以及選擇性地刪除經(jīng)編碼地幀內(nèi)幀和對應(yīng)于該幀內(nèi)幀的額外幀。
16.如權(quán)利要求15所述的代碼轉(zhuǎn)換方法,其中執(zhí)行所述選擇性的刪除,使得根據(jù)幀速率的改變高效地保持包括在比特流中的幀內(nèi)幀的比例。
17.如權(quán)利要求15所述的代碼轉(zhuǎn)換方法,其中所述選擇性的刪除包含檢查指示在代碼轉(zhuǎn)換過程中要使用的時(shí)間等級的標(biāo)志以便判定是否截去額外幀或幀內(nèi)幀,并且如果該標(biāo)志與時(shí)間等級相同,則刪去該幀內(nèi)幀,或者如果該標(biāo)志與時(shí)間等級不同,則刪去該額外幀。
18.一種其上記錄了具有計(jì)算機(jī)可讀程序的記錄介質(zhì),用于執(zhí)行所述可伸縮視頻編碼的方法,該方法包括(a)接收一個(gè)視頻序列(b)以第一畫面組GOP大小將接收到的視頻序列編碼成第一比特流;(c)以第二GOP大小將接收到的視頻序列編碼成第二比特流,其中第二GOP的大小大于第一GOP大小;并且(d)比較第一比特流的第一編碼效率和第二比特流的第二編碼效率,并且判定第一比特流和第二比特流中編碼效率高的一個(gè)。
全文摘要
本發(fā)明提供一種支持可變畫面組(GOP)大小的視頻編碼方法、視頻編碼器和經(jīng)視頻編碼的結(jié)構(gòu)。該編碼方法包括接收一個(gè)視頻序列和以可變GOP大小將所接收的視頻序列編碼成比特流。該視頻編碼器包括根據(jù)預(yù)定準(zhǔn)則可變地判定GOP大小的判定器和以預(yù)定GOP大小將輸入視頻序列編碼成比特流的可伸縮視頻編碼單元。
文檔編號H04N7/26GK1951122SQ200580014726
公開日2007年4月18日 申請日期2005年2月25日 優(yōu)先權(quán)日2004年3月8日
發(fā)明者車尚昌 申請人:三星電子株式會社