專利名稱:視頻編碼的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻的編碼方法和譯碼方法。主要應(yīng)用在低帶寬,視頻實(shí)時(shí)要求高的情況,如視頻會(huì)議,實(shí)時(shí)監(jiān)控等應(yīng)用。
背景技術(shù):
最近,包括以數(shù)據(jù)流的形式出現(xiàn)的視頻和音頻信息的多媒體應(yīng)用得到很大的使用。典型的視頻流包括一個(gè)圖像序列,常常被稱為幀。這些幀包括被安排成長(zhǎng)方形的像素集。在現(xiàn)有的視頻存在兩種冗余空間的和時(shí)間的,因此存在兩種壓縮方式幀內(nèi)(Intraframe)壓縮和幀間預(yù)測(cè)壓縮(Interframe)、一般包括前向預(yù)測(cè)和雙向預(yù)測(cè)。對(duì)應(yīng)壓縮方式產(chǎn)生的幀分別稱為內(nèi)部幀和預(yù)測(cè)幀。幀內(nèi)壓縮只利用幀本身內(nèi)的像素空間相關(guān)性,而不使用來自過去的或?qū)淼膸男畔⑦M(jìn)行編碼。內(nèi)部幀被用作解碼/解壓縮其它幀的基礎(chǔ),以及提供對(duì)于編碼的序列的訪問點(diǎn),由此可進(jìn)行解碼。預(yù)測(cè)幀是從所謂的參考幀通過運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)被編碼/壓縮的幀。由于在典型的視頻序列中相鄰的幀是高度相關(guān)的,所以當(dāng)使用預(yù)測(cè)幀可以達(dá)到更高的壓縮。因此,內(nèi)部幀一般情況下比預(yù)測(cè)幀要大。在MPEG-2,MPEG-4,H.261,H.262和H.263中,規(guī)定了三種圖像內(nèi)部幀(I幀),預(yù)測(cè)幀(包括前向預(yù)測(cè)幀(P幀),雙向預(yù)測(cè)幀(B幀))。每種圖像類型利用圖像序列中的不同類型的冗余度,導(dǎo)致不同的壓縮效率。
視頻流中幀的頻率并不是很頻繁的變化。內(nèi)部幀被用作解碼/解壓縮其它幀的基礎(chǔ),提供對(duì)于編碼的序列的訪問點(diǎn),在視頻流中可能存在出錯(cuò),特別是在網(wǎng)絡(luò)傳輸中。因此,在一些編碼標(biāo)準(zhǔn)中,每相隔一定數(shù)量的預(yù)測(cè)幀,就需要一個(gè)內(nèi)部幀。在視頻流中,如果一個(gè)圖像是內(nèi)部幀,則數(shù)據(jù)量就大一些,如果是預(yù)測(cè)幀,數(shù)據(jù)量就相對(duì)小一些。一般情況下,P幀比I幀小,B幀比P幀小。
壓縮幀長(zhǎng)度是變化的,這種變化有一部分是由于壓縮算法引起的,把這種抖動(dòng)稱為系統(tǒng)抖動(dòng);但還有一部分是視頻信息量變化引起的,如視頻中大量物體的運(yùn)動(dòng),稱之為信息量抖動(dòng)。
一般說來幀播放的時(shí)間間隔與產(chǎn)生時(shí)間間隔一般是相同的,所有壓縮幀都受到具有最大長(zhǎng)度的壓縮幀的發(fā)送延遲的影響。為了使視頻流的數(shù)據(jù)率以一個(gè)更一致的速率進(jìn)行,必須在流的兩端設(shè)定緩沖區(qū)??偟膩碚f,每一個(gè)壓縮幀發(fā)送延遲和緩沖區(qū)等待所要時(shí)間之和是相同的,都等于ta=LMB---(1)]]>LM為最大幀長(zhǎng),B是發(fā)送壓縮幀的可用帶寬。
這種延遲與可用帶寬成反比,與最大幀長(zhǎng)成正比。運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)的視頻編碼方法,采用內(nèi)部壓縮與采用預(yù)測(cè)編碼所生成的壓縮幀長(zhǎng)度差別很大。在實(shí)際的應(yīng)用中,如果保留大量的帶寬,就會(huì)造成很大的浪費(fèi),否則就造成很大的延時(shí),如視頻會(huì)議等系統(tǒng)。
在網(wǎng)絡(luò)應(yīng)用中,QoS技術(shù)對(duì)數(shù)據(jù)流的速率變化都有一些限制。RSVP要對(duì)帶寬預(yù)留,DiffServ對(duì)數(shù)據(jù)流的突發(fā)有一些很嚴(yán)格的限制。ATM有RT-VBR服務(wù),但對(duì)數(shù)據(jù)速率的變化還是有一些要求,并且還容易丟包?,F(xiàn)在的網(wǎng)絡(luò)技術(shù)是完全支持不變速度的數(shù)據(jù)傳輸?shù)?,如ATM-CBR,以及現(xiàn)在各種QoS技術(shù),可以通過預(yù)留帶寬而減少丟包。
由公式(1),可以看出減少LM可以降低ta。而在視頻流中,壓縮幀中的內(nèi)部幀和預(yù)測(cè)幀的長(zhǎng)度差距是很大的,因此,消除壓縮幀長(zhǎng)度的系統(tǒng)抖動(dòng),使LM減少,降低ta有很重要的實(shí)際意義。
發(fā)明內(nèi)容
本發(fā)明的目的就是要消除因壓縮算法引起壓縮后幀長(zhǎng)的系統(tǒng)抖動(dòng),從而使每一個(gè)壓縮幀長(zhǎng)度之間差別變小,易于傳輸。
在本發(fā)明中,每一幀不再單純采用一種壓縮方式,而是混合兩種壓縮方式。每一幀被劃分成多個(gè)部分,每一部分稱之為子幀。所有子幀采用的壓縮方式(幀內(nèi)壓縮或幀間預(yù)測(cè)壓縮)不完全相同。視頻流在接收端,根據(jù)子幀對(duì)應(yīng)的壓縮方式,采用不同的方式譯碼后,通過裝配,恢復(fù)出整個(gè)幀。因此,在本發(fā)明中,增加了兩個(gè)過程,一個(gè)是幀劃分,把幀劃分成多個(gè)部分;另一個(gè)是控制每一部分的壓縮方式,內(nèi)部壓縮或預(yù)測(cè)壓縮,稱為壓縮方式控制器,有時(shí)簡(jiǎn)稱為幀控制器。
幀劃分的輸出結(jié)果是把幀劃分成多個(gè)部分,主要有兩種劃分方式固定劃分和變動(dòng)劃分。在固定劃分中,幀的劃分在視頻流中是不變的,這樣譯碼端可以知道這種劃分,在壓縮后的視頻流中就不需要加入關(guān)于劃分的信息。在變動(dòng)劃分中,幀的劃分在視頻流中是變動(dòng)的,因此壓縮后的視頻流中必須有劃分信息,譯碼端譯碼后,就可以把子幀裝配成幀。幀劃分主要考慮下面的因素1.視頻流要求的幀內(nèi)壓縮的頻率。一般說來幀劃分輸出的子幀數(shù)量要大于等于幀內(nèi)壓縮的頻率,因?yàn)樽訋菐刂破髂懿僮鞯淖钚卧鴫嚎s后的幀至少有一個(gè)子幀是幀內(nèi)壓縮,這樣就會(huì)增加幀內(nèi)壓縮的頻率。
2.幀劃分后的,每部分采用的壓縮算法,有一些壓縮算法對(duì)劃分后的部分有一些要求,如長(zhǎng)寬,形狀等,因此必須要考慮的。
3.與前一幀相比,幀像素的變化情況,盡可能把相鄰的,變化量比較大的像素劃分到同一個(gè)塊內(nèi)。
壓縮方式控制器決定了每一子幀的壓縮方式,可以有多種算法實(shí)現(xiàn),但其實(shí)現(xiàn)方式依賴于幀劃分。幀控制器的目的是使壓縮幀長(zhǎng)度均勻,減少由系統(tǒng)引起的變化,并在一定程度上增加壓縮比,但是要在一定程度上保證對(duì)視頻流的隨機(jī)訪問及在網(wǎng)絡(luò)傳輸中誤差的消除。本說明書提供兩個(gè)壓縮方式控制器的實(shí)現(xiàn),這兩種實(shí)現(xiàn)的幀劃分是固定的。第一個(gè)實(shí)現(xiàn)介紹一個(gè)基本的幀控制器,完成最基本的目的,使幀被壓縮編碼后長(zhǎng)度比較均勻,消除系統(tǒng)抖動(dòng)。
假設(shè)視頻流在網(wǎng)絡(luò)中傳輸中為了防止錯(cuò)誤積累,要求采用內(nèi)部壓縮的間隔是v。幀劃分過程把幀被劃分成v等分(劃分要考慮壓縮算法對(duì)子幀長(zhǎng)寬的要求),并為每一個(gè)子幀設(shè)定位置編號(hào)。假設(shè)一個(gè)子幀的編號(hào)為i,所在幀的順序號(hào)為s,如果(i+s)%v(i+s除以v后的余數(shù))為0,則這個(gè)子幀采用幀內(nèi)壓縮,否則采用幀間壓縮。在視頻流中任意連續(xù)的v個(gè)幀,每一個(gè)壓縮幀中,有一個(gè)子內(nèi)部幀,其它為子預(yù)測(cè)幀。滿足了內(nèi)部幀間隔要求,同時(shí)每一個(gè)壓縮幀的子內(nèi)部幀和子預(yù)測(cè)幀數(shù)量是一樣的,因此每一個(gè)壓縮幀的大小可以相差很小。附圖3說明了這種算法。這種算法非常簡(jiǎn)單,對(duì)現(xiàn)在的編碼標(biāo)準(zhǔn)也不需要改變。
另一個(gè)幀控制器的實(shí)現(xiàn)考慮了更多的因素,一些特別的應(yīng)用,特別是實(shí)時(shí)視頻流要通過網(wǎng)絡(luò)傳輸,幀控制器減少采用幀內(nèi)壓縮方式的次數(shù),提高壓縮比。需要考慮的因素包括1.一些應(yīng)用,圖像中只有一部分變化比較多,對(duì)于變化比較少的部分,幀內(nèi)壓縮的間隔自然可以增加;對(duì)于變化比較多的子幀,幀內(nèi)壓縮的頻率高一些。
2.在一些情況下,由于子幀內(nèi)像素變化非常大,采用預(yù)測(cè)方式并沒有太多的價(jià)值,這時(shí)就可以采用幀內(nèi)壓縮。
3.幀中每一個(gè)像素的重要性也是不同的,在邊界的往往比在中心的重要性要低一些。因此,邊界子幀可以少采用幀內(nèi)壓縮。
4.在網(wǎng)絡(luò)的傳輸中,數(shù)據(jù)會(huì)產(chǎn)生錯(cuò)誤,變化較小的子幀,對(duì)應(yīng)傳輸?shù)阶g碼器的數(shù)據(jù)也少,因此,產(chǎn)生錯(cuò)誤數(shù)量的數(shù)學(xué)期望就??;反之,則高。錯(cuò)誤產(chǎn)生的概率少,就少用幀內(nèi)壓縮方式,反之,就多用。
考慮到上面的因素,幀控制器的實(shí)現(xiàn)就必須與現(xiàn)在的壓縮編譯碼系統(tǒng)結(jié)合起來,附圖2就是采用本發(fā)明后,幀間預(yù)測(cè)編碼器的變化,因幀劃分過程比較簡(jiǎn)單,把它與幀控制器(6)合在一起了。
綜合上面的因素,幀控制所依賴的因素如下1.子幀的變化量,記為C1,C2,C3,C4,……Ck2.每個(gè)子幀的比重,記為W1,W2,W3,W4,……Wk3.閘值T,假設(shè)錯(cuò)誤數(shù)量的數(shù)學(xué)期望與子幀的變化量成正比關(guān)系,在子幀的變化量到達(dá)閘值,就采用幀內(nèi)壓縮。
4.子幀內(nèi)像素變化量S,子幀內(nèi)像素變化很大,有必要采用幀內(nèi)壓縮。每個(gè)子幀的比重預(yù)先設(shè)定。閘值T也預(yù)先設(shè)定。子幀的預(yù)測(cè)誤差用來表示子幀的變化量。子幀內(nèi)像素的變化,在附圖2中是由運(yùn)動(dòng)估值(5)來為幀控制器提供信息。
上面介紹了兩個(gè)幀控制器的實(shí)現(xiàn),總之,本說明書提出了一種清除壓縮后幀長(zhǎng)系統(tǒng)抖動(dòng)的方法,并能在一定程度上增加壓縮比。這種方法特別在視頻會(huì)議等實(shí)時(shí)視頻應(yīng)用中有很重要的意義。
內(nèi)部幀編碼效率較低;預(yù)測(cè)幀編碼效率較高。因此,在實(shí)時(shí)應(yīng)用中,對(duì)網(wǎng)絡(luò)帶寬的需求因幀壓縮方式的不同而產(chǎn)生很大的變化。而現(xiàn)在的網(wǎng)絡(luò)并沒有一種技術(shù)能很好滿足這種要求。本發(fā)明則把幀分成子幀并分別壓縮,把內(nèi)部幀分散在多個(gè)壓縮幀中,每一個(gè)子幀的壓縮方式統(tǒng)一控制,從而消除壓縮后的幀長(zhǎng)度系統(tǒng)抖動(dòng)。利用本發(fā)明還可以使幀壓縮更符合應(yīng)用實(shí)際,在子幀中增加了比重,根據(jù)子幀內(nèi)像素變化做特別的處理。因此,本發(fā)明在一定程度上可以提高壓縮比,以及提高圖像質(zhì)量。
圖1顯示使用運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)的視頻編碼系統(tǒng)的示意圖。圖的上半部分是編碼器,圖的下半部分是譯碼器。
圖2是運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)的視頻編碼系統(tǒng)使用本發(fā)明后的示意圖。在圖2中幀控制器(6)根據(jù)運(yùn)動(dòng)估值(5)的信息和本身的記錄生成要把各個(gè)子幀采用的編碼方式傳給運(yùn)動(dòng)區(qū)編碼(7),運(yùn)動(dòng)區(qū)編碼(7)結(jié)合各個(gè)子幀的壓縮方式生成必要的運(yùn)動(dòng)信息。運(yùn)動(dòng)估值(5)提供粗略的預(yù)測(cè)誤差。因?yàn)樵趲写嬖趦煞N壓縮方式,因此MC預(yù)測(cè)(8)、預(yù)測(cè)誤差編碼(1)和預(yù)測(cè)誤差譯碼(3)需要做一些小的改變,增加處理子幀的能力。對(duì)應(yīng)的譯碼器也需要增加處理子幀的能力。在運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)的視頻編碼系統(tǒng)中,一般使用的是塊預(yù)測(cè)。因此對(duì)原來的算法并不會(huì)改變很多。
圖3顯示,在不對(duì)現(xiàn)在的各種壓縮標(biāo)準(zhǔn)的算法做修改,而直接使用本發(fā)明的方法,上圖是編碼方法,而下圖是譯碼方法。編碼分為三個(gè)步驟1.幀劃分(51)把幀分成k個(gè)相同的部分。
2.每一部分采用獨(dú)立的視頻編碼器(53),由幀控制器(52)控制。
3.把每一部分編碼后的數(shù)據(jù)與幀劃分的信息由復(fù)接(54)發(fā)送出去。
對(duì)于譯碼,也分為三個(gè)步驟1.分接(63)收到數(shù)據(jù),取出每一部分編碼后的數(shù)據(jù)與幀劃分信息。
2.每部分采用獨(dú)立的視頻譯碼器(62)。
3.幀劃分信息與每個(gè)獨(dú)立的視頻由幀裝配(61)裝配在一起生成一個(gè)幀。
應(yīng)當(dāng)說明,上面的例子并不是對(duì)本發(fā)明的限制。幀控制器是本發(fā)明的核心,本文所描述的設(shè)計(jì)并不是對(duì)本發(fā)明的限制,只是提出兩個(gè)設(shè)計(jì)方式。本發(fā)明也不僅僅限于運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)的視頻編碼系統(tǒng),對(duì)任何利用幀內(nèi)部的相關(guān)性壓縮和利用幀間相關(guān)性壓縮而產(chǎn)生壓縮幀長(zhǎng)抖動(dòng),本方法都可以用來消除或減少這種抖動(dòng)。本領(lǐng)域的技術(shù)人員能夠在不背離本發(fā)明的隨后權(quán)利要求的精神范圍內(nèi)設(shè)計(jì)多種替代的變形。
權(quán)利要求
1.用于視頻流的視頻編譯碼器,視頻編碼器具有幀劃分,用于把一個(gè)視頻幀被劃分成多個(gè)部分,具有幀控制器,用于控制各個(gè)部分采用的壓縮方式。視頻譯碼器具有幀裝配過程,是幀劃分的逆過程,用于把各個(gè)子幀裝配成完整的幀。
2.按權(quán)利要求1所述的幀劃分,其特征在于幀劃分部分或全部基于下面的因素(a)視頻流采用幀內(nèi)壓縮的頻率,(b)幀劃分后的,子幀采用的壓縮算法限制,(c)與前面幀相比,幀像素的變化。
3.按權(quán)利要求1所述的幀控制器,其特征在于幀控制器部分或全部基于下面的因素(a)壓縮后的可能幀長(zhǎng)度,(b)子幀自最近一次采用幀內(nèi)壓縮以來,總的變化量,(c)壓縮編碼后子幀的長(zhǎng)度,(d)子幀的權(quán)重,(e)如果要通過網(wǎng)絡(luò)傳輸,網(wǎng)絡(luò)可能的失誤率。
4.按權(quán)利要求1所述的幀裝配,其特征在于要根據(jù)子幀在幀內(nèi)的位置,把幀裝配起來。
5.按權(quán)利要求1所述的方法,一種實(shí)現(xiàn)是對(duì)現(xiàn)有的壓縮編譯碼不做任改變,只是基于它們。幀劃分,幀控制器和幀裝配被預(yù)先設(shè)定好。
6.按權(quán)利要求1所述的方法,一種實(shí)現(xiàn)是加入到現(xiàn)有的壓縮編譯碼中,并對(duì)現(xiàn)有的編譯碼做一些改動(dòng)。
7.按權(quán)利要求5所述的實(shí)現(xiàn),壓縮編碼過程分為三步驟(a)對(duì)幀執(zhí)行幀劃分,(b)然后把子幀作為一個(gè)幀,對(duì)應(yīng)每個(gè)子幀,有一個(gè)單獨(dú)的壓縮編碼器壓縮編碼,其壓縮方式由幀控制器來控制,(c)把子幀壓縮后的數(shù)據(jù)復(fù)接,傳輸或存儲(chǔ)。
8.按權(quán)利要求5所述的實(shí)現(xiàn),譯碼過程分為三個(gè)步驟(a)分接,取出子幀的壓縮數(shù)據(jù),(b)每個(gè)子幀的壓縮數(shù)據(jù)都有一個(gè)單獨(dú)的譯碼器進(jìn)行譯碼,(c)譯碼后交給幀裝配過程,生成完整幀。
9.按權(quán)利要求6所述的幀劃分過程和幀控制器,合并到現(xiàn)有的運(yùn)動(dòng)預(yù)測(cè)編碼過程中。其特征在于(a)幀劃分利用運(yùn)動(dòng)估值提供的信息做出幀劃分,(b)幀控制器利用存儲(chǔ)的信息與運(yùn)動(dòng)估值提供的信息決定壓縮方式,(c)幀的預(yù)測(cè)誤差提供幀內(nèi)像素變化信息。(d)運(yùn)動(dòng)估值向幀劃分和幀控制器提供粗略的估值誤差和運(yùn)動(dòng)向量,(e)MC預(yù)測(cè)生成預(yù)測(cè)幀要判斷子幀壓縮方式的不同,生成預(yù)測(cè)幀。(f)運(yùn)動(dòng)區(qū)編碼編碼幀劃分信息和子幀的壓縮方式信息。
10.按權(quán)利要求6所述的幀裝配,合并到現(xiàn)有的運(yùn)動(dòng)預(yù)測(cè)譯碼過程中。其特征在于(a)譯碼器能夠識(shí)別各子幀的壓縮方式,(b)譯碼器能夠知道幀的劃分方式,并實(shí)現(xiàn)幀裝配。
全文摘要
幀內(nèi)壓縮或幀間壓縮壓縮比差別很大,對(duì)任一幀單純采用一種方法,使壓縮后的幀長(zhǎng)度變化很大,引起幀的延遲,造成網(wǎng)絡(luò)不穩(wěn)定。對(duì)實(shí)時(shí)性要求比較高的應(yīng)用中,這種延遲和不穩(wěn)定對(duì)應(yīng)用的影響非常大,而且是不必要的。本發(fā)明把幀劃分成多個(gè)部分,每一部分的壓縮方式的選擇是獨(dú)立的,由一個(gè)過程來控制。這種方法與單純采用一種壓縮方式的方法相比,幾乎不會(huì)減少總的壓縮比,但卻可以很容易使壓縮后幀長(zhǎng)差別很小。本發(fā)明還提出幀的不同部分重要性是不同的,考慮了幀內(nèi)不同部分變化不相同,因此,對(duì)幀的不同部分特別處理。
文檔編號(hào)H04N7/32GK1571516SQ20041003772
公開日2005年1月26日 申請(qǐng)日期2004年5月10日 優(yōu)先權(quán)日2004年5月10日
發(fā)明者牛廣鋒, 錢華林 申請(qǐng)人:牛廣鋒