專(zhuān)利名稱(chēng):利用拉格朗日乘子和視覺(jué)掩蔽來(lái)控制速率-失真折中的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體壓縮和編碼系統(tǒng)領(lǐng)域。本發(fā)明尤其公開(kāi)了用于 控制數(shù)字視頻編碼器中速率一失真折中的方法和系統(tǒng)。
背景技術(shù):
基于數(shù)字的電子介質(zhì)格式正在完全取代傳統(tǒng)的模擬電子介質(zhì)格
式。在音頻領(lǐng)域,多年前數(shù)字壓縮盤(pán)(CD)取代了模擬乙烯樹(shù)脂唱片。 模擬的盒式磁帶也變得愈加稀少。第二和第三代數(shù)字音頻系統(tǒng)諸如基 于小型磁盤(pán)和mp3 (MPEG音頻一層3)的格式正同第一代數(shù)字音頻格 式的壓縮盤(pán)奪取市場(chǎng)份額。
基于數(shù)字的靜態(tài)攝影正迅速地取代基于膠片的靜態(tài)攝影。通過(guò)因 特網(wǎng)為用戶(hù)提供了具有不可抗拒的特點(diǎn)的圖像的及時(shí)利用性以及圖像 分配。
然而,視頻領(lǐng)域向數(shù)字存儲(chǔ)和傳輸格式發(fā)展的速度要比音頻和靜 態(tài)攝影的發(fā)展速度慢。這主要是由于以數(shù)字格式精確表示視頻需要大 量的數(shù)字信息。精確表示視頻所需的大量數(shù)字信息需要非常高容量的 數(shù)字存儲(chǔ)系統(tǒng)和高帶寬的傳輸系統(tǒng)。
但是視頻領(lǐng)域最終采用數(shù)字存儲(chǔ)和傳輸格式。更快的計(jì)算機(jī)處理 器、高密度的存儲(chǔ)系統(tǒng)、高帶寬的光傳輸線以及新的高效視頻編碼算 法最終使得數(shù)字視頻系統(tǒng)在消費(fèi)價(jià)格方面變得實(shí)用。DVD (數(shù)字通用光 盤(pán))、數(shù)字視頻系統(tǒng)已經(jīng)成為銷(xiāo)售最快的消費(fèi)電子產(chǎn)品之一。由于其杰 出的視頻質(zhì)量、高質(zhì)量的5. 1信道數(shù)字音頻、便利以及其它特點(diǎn),DVD 已經(jīng)迅速代替了錄像機(jī)(VCR),成為選擇的預(yù)先錄制視頻重放系統(tǒng)。 在視頻傳輸系統(tǒng)領(lǐng)域,過(guò)時(shí)的模擬NTSC (國(guó)家電視標(biāo)準(zhǔn)委員會(huì))視頻 傳輸標(biāo)準(zhǔn)最終由使用數(shù)字壓縮和編碼技術(shù)的數(shù)字ATSC (高級(jí)電視標(biāo)準(zhǔn) 委員會(huì))視頻傳輸系統(tǒng)所代替。
多年來(lái),計(jì)算機(jī)系統(tǒng)已經(jīng)使用各種不同的數(shù)字視頻編碼格式。由計(jì)算機(jī)系統(tǒng)使用的最好的數(shù)字視頻壓縮和編碼系統(tǒng)是公知的由其縮寫(xiě)
為MPEG的運(yùn)動(dòng)圖像專(zhuān)家組支持的數(shù)字視頻系統(tǒng)。MPEG的三種最公知并 且使用率非常高的數(shù)字視頻格式是己知簡(jiǎn)單的MPEG — 1、 MPEG — 2和 MPEG—4。視頻CD以及用戶(hù)標(biāo)準(zhǔn)數(shù)字視頻編輯系統(tǒng)使用早期的MPEG—1 格式。數(shù)字通用光盤(pán)(DVD)以及碟形網(wǎng)絡(luò)牌(Dish Network brand) 直播衛(wèi)星電視廣播系統(tǒng)(DBS)使用MPEG — 2數(shù)字視頻壓縮和編碼系統(tǒng)。 基于最新計(jì)算機(jī)的數(shù)字視頻編碼器和相關(guān)的數(shù)字視頻播放器正迅速地 采用了 MPEG—4編碼系統(tǒng)。
MPEG—2和MPEG—4標(biāo)準(zhǔn)對(duì)一系列視頻幀或視頻字段進(jìn)行壓縮,然 后將壓縮的幀或字段編譯成數(shù)字比特流。必須嚴(yán)密監(jiān)控?cái)?shù)字比特流的 速率,以使其不溢出緩存區(qū)、不下溢出緩存區(qū)或不超出傳輸信道容量。 因此,必須使復(fù)雜的速率控制系統(tǒng)與數(shù)字視頻編碼器一起應(yīng)用,所述 的數(shù)字視頻編碼器在分配信道容量中提供了盡可能最好的圖像質(zhì)量, 而不溢出或下溢緩存區(qū)。
發(fā)明內(nèi)容
本發(fā)明公開(kāi)了 一種在視頻編碼器中通過(guò)模式選擇來(lái)控制速率 一 失 真折中的方法和裝置。本發(fā)明的系統(tǒng)首先在預(yù)期的失真值附近選擇失 真值D。接下來(lái),該系統(tǒng)利用選定的失真值D確定量化器值Q。該系統(tǒng) 然后利用量化器值Q計(jì)算拉格朗日乘子lambda。利用選擇的拉格朗日 乘子lambda和量化器值Q,該系統(tǒng)開(kāi)始對(duì)象素模塊進(jìn)行編碼。
如果系統(tǒng)檢測(cè)到潛在的緩存區(qū)溢出,則該系統(tǒng)將增加拉格朗日乘 子lambda。當(dāng)緩存區(qū)的占有率值超過(guò)溢出閾值時(shí),可以檢測(cè)到潛在的 緩存區(qū)溢出。如果拉格朗日乘子lambda超過(guò)最大的lambda閾值,貝lj 系統(tǒng)將增加量化器值Q。
如果系統(tǒng)檢測(cè)到潛在的緩存區(qū)下溢,則系統(tǒng)將減小拉格朗日乘子 lambda。當(dāng)緩存區(qū)的占有率值降到緩存區(qū)下溢閾值以下時(shí),可以檢測(cè) 到潛在的緩存區(qū)下溢。如果拉格朗日乘子lambda降到最小的lambda 閾值以下,則系統(tǒng)將減小量化器值Q。
通過(guò)附圖以及下列的詳細(xì)描述,本發(fā)明的其它目的、特點(diǎn)以及優(yōu) 點(diǎn)將會(huì)顯而易見(jiàn)。
通過(guò)下面的詳細(xì)描述,本發(fā)明的目的、特點(diǎn)以及優(yōu)點(diǎn)對(duì)本領(lǐng)域的 技術(shù)人員來(lái)講將會(huì)是顯而易見(jiàn)的,其中
圖1描述的是一個(gè)可能的數(shù)字視頻編碼系統(tǒng)的高級(jí)框圖2描述的是一系列將要顯示的視頻圖片,其中連接不同圖片的 箭頭表示利用運(yùn)動(dòng)補(bǔ)償生成的交互圖片的相關(guān)性;
圖3表示將圖2中的視頻圖片重新排列得到的優(yōu)選傳輸順序的視
頻圖片,其中連接不同圖片的箭頭表示利用運(yùn)動(dòng)補(bǔ)償生成的交互圖片
的相關(guān)性;
圖4描述的是一族R、D曲線,每個(gè)曲線對(duì)應(yīng)量化器Q的每個(gè)不同的值。
具體實(shí)施例方式
本發(fā)明公開(kāi)了在視頻編碼器中通過(guò)模式選擇來(lái)控制速率 一 失真折 中的模式。在下列的描述中,為了便于解釋?zhuān)岢鼍唧w的術(shù)語(yǔ)來(lái)提供 對(duì)本發(fā)明的完整的理解。然而,對(duì)本領(lǐng)域技術(shù)人員來(lái)講顯而易見(jiàn)的是
為了實(shí)施本發(fā)明并不需要這些具體的細(xì)節(jié)。例如,參照MPEG—4部分 10 (H.264)多媒體壓縮和編碼系統(tǒng)對(duì)本發(fā)明進(jìn)行了描述。但是,相同 的技術(shù)可以很容易地應(yīng)用到其它類(lèi)型的壓縮和編碼系統(tǒng)。
多媒體壓縮和編碼綜述
圖1描述的是現(xiàn)有技術(shù)中公知的典型的數(shù)字視頻編碼器100的高 級(jí)框圖。數(shù)字視頻編碼器100接收位于框圖左方的輸入視頻流105。每 個(gè)視頻幀由離散余弦轉(zhuǎn)換(DCT)單元110進(jìn)行處理。可以對(duì)視頻幀獨(dú) 立進(jìn)行處理(幀內(nèi))或者利用運(yùn)動(dòng)估計(jì)單元160參照來(lái)自其它幀(幀 間)的信息對(duì)其進(jìn)行處理。然后量化器(Q)單元120對(duì)來(lái)自離散余弦 轉(zhuǎn)換(DCT)單元110的信息進(jìn)行量化。然后通過(guò)熵編碼器(H) 180 對(duì)量化的幀進(jìn)行編碼以生成編碼的視頻比特流。
由于參照其它附近的視頻幀來(lái)確定幀間編碼的視頻幀,數(shù)字視頻 編碼器100需要對(duì)參考的數(shù)字視頻幀如何真正出現(xiàn)在數(shù)字視頻解碼器 內(nèi)進(jìn)行拷貝,以使得可以對(duì)幀間進(jìn)行編碼。因而,數(shù)字視頻編碼器100的下部實(shí)際上是數(shù)字視頻解碼器。特別地,反向量化器(Q—') 130使
幀信息的量化反轉(zhuǎn),并且反向離散余弦變換(DCT—')單元140使視頻 幀信息的離散余弦變換反轉(zhuǎn)。畢竟DCT系數(shù)是從反向離散余弦變換重 建的,運(yùn)動(dòng)補(bǔ)償單元將利用該信息連同運(yùn)動(dòng)向量來(lái)重建視頻幀,其中 該視頻幀可以作為用于其它視頻幀的運(yùn)動(dòng)估計(jì)的參考視頻幀。
解碼的視頻幀可以用來(lái)對(duì)幀間進(jìn)行編碼,所述的幀間是相對(duì)于解 碼的視頻幀中的信息定義的。特別地,運(yùn)動(dòng)補(bǔ)償(MC)單元150以及 運(yùn)動(dòng)估計(jì)(ME)單元160用來(lái)確定運(yùn)動(dòng)向量并產(chǎn)生用作對(duì)幀間進(jìn)行編 碼的微分值。
速率控制器190接收數(shù)字視頻編碼器100中來(lái)自許多不同部件的 信息,并利用該信息為每個(gè)將被編碼的視頻幀分配比特預(yù)算。以能產(chǎn) 生最高質(zhì)量的數(shù)字比特流的方式分配比特預(yù)算,所述的比特流遵守特 定的一套限定。特別地,速率控制器190試圖產(chǎn)生最高質(zhì)量的壓縮視 頻流而不溢出緩存區(qū)(以比視頻幀信息被顯示并隨后被刪除更快的速 度來(lái)發(fā)送視頻幀信息的方式來(lái)超過(guò)可利用的緩存區(qū)的量)或下溢緩存 區(qū)(發(fā)送的視頻幀信息不夠快以使得正接收的數(shù)字視頻解碼器用完了 顯示的視頻幀信息)。
許多數(shù)字視頻編碼算法首先將每個(gè)視頻圖像分割成通常被稱(chēng)作象 素模塊的小的象素子集。特別地,視頻圖像被分成矩形象素模塊網(wǎng)格。 術(shù)語(yǔ)宏塊(macroblock)、塊、子塊也通常用于象素子集。本文檔將使 用術(shù)語(yǔ)象素模塊來(lái)包括所有這些不同但相似的概念。不同尺寸的象素 模塊可以由不同的數(shù)字視頻編碼系統(tǒng)使用。例如,所使用的不同的象 素模塊尺寸包括8X8象素模塊、8X4象素模塊、16X16象素模塊、4 X4象素模塊等。
為了編碼視頻圖像,使用某種編碼方法對(duì)視頻圖像的每個(gè)獨(dú)立的 象素模塊進(jìn)行編碼。不用參照任何其它象素模塊就可對(duì)有些被稱(chēng)作內(nèi) 部模塊的象素模塊進(jìn)行編碼。利用諸如運(yùn)動(dòng)補(bǔ)償?shù)哪撤N預(yù)測(cè)的編碼方 法對(duì)其它的象素模塊進(jìn)行編碼,其中所述的運(yùn)動(dòng)補(bǔ)償參考在相同或不 同的視頻圖像中的最接近地匹配的象素模塊。
象素模塊編碼對(duì)視頻圖像中的每個(gè)獨(dú)立的象素模塊獨(dú)立進(jìn)行壓縮和編碼。 一些
視頻編碼標(biāo)準(zhǔn),例如ISO MPEG或ITU. 264,使用不同類(lèi)型的預(yù)測(cè)象素 模塊來(lái)編碼數(shù)字視頻圖像。在一個(gè)方案中,象素模塊可以是以下3種
類(lèi)型之一
1、 I象素模塊——內(nèi)部(I)象素模塊,在其編碼中不使用任何其
它視頻圖像的信息(因而,內(nèi)部象素模塊完全是自定義的);
2、 P象素模塊——單向的預(yù)測(cè)(P)象素模塊參考來(lái)自于較早視頻 圖像的圖像信息;或
3、 B象素模塊——雙向的預(yù)測(cè)(B)象素模塊,其利用較早視頻圖 像或稍后的視頻圖像的信息。
如果編碼的數(shù)字視頻圖像中的所有象素模塊是內(nèi)部象素模塊(I 象素模塊),則編碼的數(shù)字視頻圖像幀稱(chēng)作幀內(nèi)。注意幀內(nèi)并不參考任 何其它視頻圖像,使得幀內(nèi)數(shù)字視頻圖像完全自定義。
如果數(shù)字視頻圖像幀只包括單向預(yù)測(cè)象素模塊(P象素模塊)以及 內(nèi)部象素模塊(I象素模塊)但不包括雙向的預(yù)測(cè)象素模塊(B象素模 塊),則該視圖像稱(chēng)作P幀。當(dāng)使用預(yù)測(cè)的編碼(P象素模塊編碼)比 獨(dú)立編碼象素模塊(I象素模塊)需要更多的比特時(shí),I象素模塊可以 出現(xiàn)在P幀中。
如果數(shù)字視頻圖像幀包括任何雙向預(yù)測(cè)象素模塊(B象素模塊), 則視頻圖像幀稱(chēng)作B幀。為了簡(jiǎn)化,本申請(qǐng)將考慮到在給定的圖像區(qū) 域內(nèi)所有的象素模塊都是相同類(lèi)型的情形。(幀內(nèi)只包括I象素模塊, P幀只包括P象素模塊,B幀只包括B象素模塊。)
將要被編碼的視頻圖像的序列的例子可以表示為 B4 P5 Be B7 B8 B9 Pi() Bu P12 Bi3 IM......
其中如果數(shù)字視頻圖像幀是I幀、P幀或B幀則用字母工、P或B 表示,并且數(shù)字下標(biāo)表示在視頻圖像序列中的視頻圖像的拍攝順序。 拍攝順序是攝影機(jī)記錄視頻圖像的順序,因而也是視頻圖像應(yīng)該被顯 示的順序(顯示順序)。
在圖2中對(duì)前述的實(shí)施例的一系列視頻圖像進(jìn)行了概念描述。參 照附圖2,箭頭表示來(lái)自存儲(chǔ)的圖片的象素模塊(在這種情況下為I 幀或P幀)用在了其它數(shù)字視頻圖片(B幀和P幀)的運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)中。參照附圖2,沒(méi)有來(lái)自于任何其它的視頻圖片的信息用在了第一視 頻圖片幀、幀內(nèi)視頻圖片L的編碼中。視頻圖像P5是P幀,其在編碼 中利用來(lái)自于前一個(gè)視頻圖像L的視頻信息,因此箭頭從幀內(nèi)視頻圖 像L繪制到P幀視頻圖像P5。在其編碼中,視頻圖像B2、視頻圖像B:, 和視頻圖像B..,全部都是利用來(lái)自視頻圖像工,和視頻圖像P5的信息,所
以信息相關(guān)性箭頭從視頻圖像L和視頻圖像P5繪制到視頻圖像B2、視
頻圖像B:,和視頻圖像B.,。
由于B幀視頻圖像利用來(lái)自于后面的視頻圖像(隨后顯示的圖像) 的信息, 一組數(shù)字視頻圖像的傳輸順序通常與數(shù)字視頻圖像的顯示順 序不同。特別地,需用來(lái)構(gòu)建其它視頻圖像的參考視頻圖像應(yīng)當(dāng)在由 參考視頻圖像所決定的視頻圖像之前傳輸。因而,對(duì)于圖2中的顯示
順序,優(yōu)選的傳輸順序可以是
LPs B2B3 B., Pin B6 B7 Bs B9 P12 B" Im Bk!……
圖3描述的是圖2中的視頻圖像的優(yōu)選的傳輸順序。圖中的箭頭 表示來(lái)自于參考視頻圖像的象素模塊(在這種情況下的I幀或P幀視 頻圖像)用在了其它視頻圖像的運(yùn)動(dòng)補(bǔ)償預(yù)測(cè)中(P幀和B幀視頻圖 像)。
參照?qǐng)D3,傳輸系統(tǒng)首先傳輸并不依賴(lài)任何其它視頻幀的I幀工,。 接下來(lái),該系統(tǒng)傳輸P幀視頻圖像P5,其只依賴(lài)先前傳輸?shù)囊曨l圖像 L。接下來(lái),即使視頻圖像B2在視頻圖像P5之前顯示,該系統(tǒng)在視頻 圖像Ps之后傳輸B幀視頻圖像B2。原因是當(dāng)要解碼并遞交相關(guān)的視頻 圖像B2時(shí),數(shù)字視頻解碼器已經(jīng)接收到、并解碼了視頻圖像I,和視頻 圖像Ps中的解碼相關(guān)的視頻圖像B2所必需的信息。同樣,解碼的視頻 圖像L和解碼的視頻圖像Ps準(zhǔn)備用于解碼并遞交下兩個(gè)相關(guān)的視頻圖 像相關(guān)的視頻圖像B3和相關(guān)的視頻圖像B.,。
接收器/解碼器系統(tǒng)然后記錄視頻圖像合適的顯示順序。在該項(xiàng)操 作中,參考視頻圖像L以及參考視頻圖像Ps稱(chēng)作"存儲(chǔ)的圖像"。存儲(chǔ) 的圖像用于重構(gòu)其它的參考該存儲(chǔ)的圖像的相關(guān)的視頻圖像。(注意某 些數(shù)字視頻編碼系統(tǒng)也允許B幀用作存儲(chǔ)圖像。)
子母畫(huà)面(P—picture)子母畫(huà)面的編碼典型地利用了運(yùn)動(dòng)補(bǔ)償(MC),其中為當(dāng)前視頻圖 像中的每個(gè)象素模塊計(jì)算指向前一個(gè)視頻圖像中某個(gè)位置的運(yùn)動(dòng)向量 (MV)。運(yùn)動(dòng)向量參考在參考視頻圖像中的接近匹配的象素模塊。利用 運(yùn)動(dòng)向量,預(yù)測(cè)象素模塊可以通過(guò)轉(zhuǎn)換上述的前一個(gè)視頻圖像中參考 象素來(lái)形成。然后將子母畫(huà)面中的實(shí)際的象素模塊與預(yù)測(cè)象素模塊之 間的差異進(jìn)行編碼用于傳輸。然后用該差異來(lái)精確構(gòu)建初始的象素模 塊。
每個(gè)運(yùn)動(dòng)向量也可以通過(guò)預(yù)測(cè)編碼方法進(jìn)行傳輸。例如,可以利 用鄰近的運(yùn)動(dòng)向量來(lái)形成運(yùn)動(dòng)向量預(yù)測(cè)。在這種情況下,實(shí)際運(yùn)動(dòng)向 量與預(yù)測(cè)運(yùn)動(dòng)向量之間的差異然后被編碼用于傳輸。然后將該差異用 于生成來(lái)自于預(yù)測(cè)運(yùn)動(dòng)向量的實(shí)際運(yùn)動(dòng)向量。
雙向畫(huà)面(B—picture)
B幀中的每個(gè)B象素模塊使用兩個(gè)不同的運(yùn)動(dòng)向量第一運(yùn)動(dòng)向量 和第二運(yùn)動(dòng)向量,其中第一運(yùn)動(dòng)向量參考較早的視頻圖像中的象素模 塊,第二運(yùn)動(dòng)向量參考稍后的視頻圖像中的另一個(gè)象素模塊。根據(jù)這 兩個(gè)運(yùn)動(dòng)向量,計(jì)算兩個(gè)預(yù)測(cè)象素模塊。利用某種函數(shù)將這兩個(gè)預(yù)測(cè) 象素模塊聯(lián)合在一起以形成最終預(yù)測(cè)象素模塊。(可以對(duì)這兩個(gè)象素模 塊一起簡(jiǎn)單地進(jìn)行平均。)與P象素模塊一樣,B幀視頻圖像的實(shí)際預(yù) 期的象素模塊和最終預(yù)測(cè)象素模塊之間的差異被編碼用于傳輸。該象 素模塊差異然后用于精確重建初始的象素模塊。
與P象素模塊一樣,B象素模塊的每個(gè)運(yùn)動(dòng)向量(MV)也可以通過(guò) 預(yù)測(cè)編碼方法進(jìn)行傳輸。特別地,可以利用鄰近的運(yùn)動(dòng)向量的某種組 合來(lái)形成預(yù)測(cè)運(yùn)動(dòng)向量。然后,實(shí)際運(yùn)動(dòng)向量與預(yù)測(cè)運(yùn)動(dòng)向量之間的 差異被編碼用于傳輸。然后利用該差異重新創(chuàng)造來(lái)自于預(yù)測(cè)的運(yùn)動(dòng)向 量的實(shí)際運(yùn)動(dòng)向量。
然而,對(duì)于B象素模塊,存在內(nèi)插運(yùn)動(dòng)向量的機(jī)會(huì),所述的運(yùn)動(dòng) 向量來(lái)自于配置的或鄰近存儲(chǔ)的圖像象素模塊中的運(yùn)動(dòng)向量。這樣的 運(yùn)動(dòng)向量的內(nèi)插是在數(shù)字視頻編碼器和數(shù)字視頻解碼器中執(zhí)行的。(注 意數(shù)字視頻編碼器一直包括數(shù)字視頻解碼器。)
在一些情況下,內(nèi)插的運(yùn)動(dòng)向量足夠好,不需對(duì)該內(nèi)插的運(yùn)動(dòng)向量做任何類(lèi)型的修正就可使用。在這樣情況下,不需要發(fā)送運(yùn)動(dòng)向量
數(shù)據(jù)。在ITU H. 263以及H. 264數(shù)字視頻編碼標(biāo)準(zhǔn)中,這稱(chēng)為"直接 模式"。
該運(yùn)動(dòng)向量?jī)?nèi)插技術(shù)在來(lái)自于由攝影機(jī)生成的視頻序列的一系列 視頻圖像運(yùn)作得尤其好,其中所述的攝影機(jī)緩慢地隨動(dòng)拍攝(panning) 靜態(tài)的背景。實(shí)際上,這樣的運(yùn)動(dòng)向量?jī)?nèi)插足夠好可以單獨(dú)使用。特 別地,這意味著對(duì)這些利用運(yùn)動(dòng)向量?jī)?nèi)插編碼的B象素模塊運(yùn)動(dòng)向量 來(lái)講不需要微分的運(yùn)動(dòng)向量信息來(lái)進(jìn)行計(jì)算或傳輸。
象素模塊編碼
在每個(gè)視頻圖像內(nèi)象素模塊也可以以不同的方式進(jìn)行編碼。例如, 可以將象素模塊分成更小的子塊,對(duì)每個(gè)子塊計(jì)算并傳輸運(yùn)動(dòng)向量。 子塊的形狀也可以不同,并且可以不一定是正方形。
在子母畫(huà)面或雙向畫(huà)面內(nèi),如果在存儲(chǔ)的參考的圖像內(nèi)沒(méi)有找到 接近匹配的象素模塊,不用運(yùn)動(dòng)補(bǔ)償就可以對(duì)一些象素模塊進(jìn)行高效 的編碼。這樣的象素模塊然后被編碼為內(nèi)部象素模塊(I象素模塊)。 在雙向畫(huà)面中,利用單向運(yùn)動(dòng)補(bǔ)償代替雙向運(yùn)動(dòng)補(bǔ)償可以對(duì)一些象素 模塊更好地進(jìn)行編碼。因此,根據(jù)最接近匹配的象素模塊是否在較早 的視頻圖像或較后的視頻圖像中找到,將那些象素模塊編碼為向前預(yù) 測(cè)象素模塊(P象素模塊)或向后預(yù)測(cè)象素模塊。
在傳輸之前,象素模塊或子??斓念A(yù)測(cè)錯(cuò)誤典型地由正交轉(zhuǎn)換諸 如離散余弦轉(zhuǎn)換或其近似值來(lái)進(jìn)行轉(zhuǎn)換。轉(zhuǎn)換操作的結(jié)果是一組轉(zhuǎn)換 系數(shù),其在數(shù)值上等于被轉(zhuǎn)換的象素模塊或者子模快中的象素個(gè)數(shù)。 在接收器/解碼器處,將接收到的轉(zhuǎn)換系數(shù)進(jìn)行反轉(zhuǎn)換以恢復(fù)在解碼中 進(jìn)一步用到的預(yù)測(cè)錯(cuò)誤值。并不是所有的轉(zhuǎn)換系數(shù)都需要傳輸為可接 受的視頻質(zhì)量。根據(jù)可利用的傳輸比特率, 一半或者有時(shí)多于一半的 轉(zhuǎn)換系數(shù)可以被刪除和不傳輸。在解碼器處,在反變換操作之前,被 刪除的系數(shù)值由0來(lái)代替。
而且,在傳輸之前,典型地對(duì)轉(zhuǎn)換系數(shù)進(jìn)行如圖1所述的量化和 熵編碼。量化包括用可能值的有限子集來(lái)表示轉(zhuǎn)換系數(shù)值,這降低了 傳輸?shù)木_度。而且,該量化經(jīng)常使得小的轉(zhuǎn)換系數(shù)值為O,因而進(jìn)一步減小了被傳輸?shù)霓D(zhuǎn)換系數(shù)值的數(shù)量。
在量化步驟中,每個(gè)轉(zhuǎn)換系數(shù)值典型地由量化器步長(zhǎng)Q進(jìn)行分割 并四舍五入為最接近的整數(shù)。例如,利用下列公式可將初始的轉(zhuǎn)換系 數(shù)C量化為量化的系數(shù)值Cq:
Cg= (C+Q/2) /Q 截為整數(shù)。
在量化步驟之后,利用諸如霍夫曼編碼的變長(zhǎng)編碼或算術(shù)編碼對(duì)
這些整數(shù)進(jìn)行熵編碼。由于許多轉(zhuǎn)換系數(shù)值被截為o,由從量化和變長(zhǎng)
編碼步驟將獲得大量的壓縮。
利用拉格朗日函數(shù)選擇比特率和失真值 數(shù)字視頻編碼器必須在所有可能的編碼方法(或編碼模式)中確 定最好的編碼方法,以用于對(duì)視頻圖像中的每個(gè)象素模塊進(jìn)行編碼。 這種編碼問(wèn)題通常稱(chēng)作模式選擇問(wèn)題。許多特定的方法用在了不同的 數(shù)字視頻編碼器的實(shí)施中以處理模式選擇問(wèn)題。轉(zhuǎn)換系數(shù)刪除、傳輸
的轉(zhuǎn)換系數(shù)的量化以及模式選擇的結(jié)合使得用于傳輸?shù)谋忍芈蔙減少。 然而,這些比特率R減少技術(shù)也導(dǎo)致解碼的視頻圖像中的失真D。
理想地,當(dāng)設(shè)計(jì)視頻編碼器時(shí),人們?cè)敢饣蛘邔⒈忍芈蔙固定為 常量值并減小編碼失真D或者將編碼失真D固定為常量值同時(shí)減小比 特率R。然而,特別是在象素模塊級(jí),比特率R和/或失真D值可以與 預(yù)期的固定值具有相當(dāng)大的差別,因而使得限定的最優(yōu)化方法站不住 腳。
然而可以做的是利用拉格朗日乘子將限定的最優(yōu)化問(wèn)題轉(zhuǎn)化為無(wú) 限定的最優(yōu)化問(wèn)題。因而,不是固定其中一個(gè)變量(比特率R或失真D) 并最優(yōu)化另一個(gè)變量,而是可以只最小化拉格朗日方程. D+lambdaXR
其中l(wèi)ambda是拉格朗日乘子。因而對(duì)于視頻圖像中的每個(gè)象素模 塊,編碼器選擇象素模塊編碼模式來(lái)最小化拉格朗日方程D + lambda XR。
理論上,通過(guò)重復(fù)利用所有可能的lambda值來(lái)實(shí)現(xiàn)對(duì)每個(gè)單獨(dú)的 視頻圖像的完全最優(yōu)化,每個(gè)lambda生成(D, R)對(duì)。預(yù)期的比特率R (或失真D)、相應(yīng)的失真D (或比特率R)以及l(fā)ambda值都可以從其中得到。然后再一次利用該選定的lambda值將視頻圖像最終編碼,其 將會(huì)生成預(yù)期的結(jié)果。
實(shí)際上,對(duì)每個(gè)視頻圖像來(lái)講,這種理想的方法通常太復(fù)雜并且 太資源密集而不能執(zhí)行。為了確定lambda、失真D和量化器Q之間近 似的關(guān)系,通常的做法是以寬范圍的lambda值,利用完整的最優(yōu)化方 法執(zhí)行具有多個(gè)視頻圖像的許多初步的實(shí)驗(yàn)。
以寬范圍的1 ambda值利用完整的最優(yōu)化方法初歩試驗(yàn)多個(gè)視頻圖 像來(lái)確定lambda、失真D和量化器Q之間近似的關(guān)系。在這些實(shí)驗(yàn)中, 在改變lambda拉格朗日乘子的同時(shí)保持量化器Q為常量通常是有利 的。如果在每個(gè)實(shí)驗(yàn)中保持量化器Q為常量,最終結(jié)果是一族R、 D曲 線, 一條曲線對(duì)應(yīng)量化器Q的每個(gè)不同值。圖4描述的是這樣一族R、 D曲線的一個(gè)實(shí)例。對(duì)于每個(gè)不同的常量Q曲線,在由lambda的某個(gè) 值得到的特定的(R, Dl點(diǎn),曲線的斜率是(一lambda)。最佳的化,D} 關(guān)系是通過(guò)提取所有的R、 D曲線的最小值來(lái)獲得的。
此后,對(duì)于每個(gè)不同的量化器Q值,選定典型的lambda值諸如 lambda 。例如,lambda??梢允窃趫D4的Q+l和Q — l的交叉點(diǎn)之間的 半路部分提供失真D值的值。用來(lái)選擇典型的lambda值的其它方法包 括lambdaQ = 0. 85Q2以及l(fā)ambdaQ=0.85X2Q/3。對(duì)于多個(gè)雙向畫(huà)面,通 常選定更大的lambda。值。因而,我們有 lambdaQ=f (Q)
Dcpg (Q) 從中可以獲得Q = h (D )
然后為了編碼帶有預(yù)期的失真D的視頻圖像序列,可以首先找出 最接近的D ,從中可以獲得Q=h(DQ)。然后,利用相應(yīng)的lambdaQ=f (Q) 對(duì)視頻圖像執(zhí)行編碼,這提供了失真D。的最優(yōu)的比特率R。
在許多應(yīng)用中,作為結(jié)果的比特率R可能太大或太小,迫使使用 速率控制以確保不發(fā)生緩存區(qū)溢出或緩存區(qū)下溢。和大多數(shù)速率控制 算法一樣,通常的方法是將量化器Q從象素模塊改變?yōu)橄笏啬K和/或 從視頻圖像改變?yōu)橐曨l圖像。當(dāng)編碼器緩存區(qū)有可能變得太滿(mǎn)(并可 能溢出)的征兆時(shí),增加量化器Q的值以減小比特率R。當(dāng)編碼器緩存 區(qū)可能太空(并且將可能下溢)時(shí),減小量化器Q的值以增加比特率R。
然而,量化器Q的值的改變可能導(dǎo)致比特率R的太大的變化。而且,量化器Q值的改變需要發(fā)信號(hào)到解碼器,這增加了必須要傳輸?shù)?解碼器的附加位的量。而且,改變量化器Q可能具有其它有關(guān)視頻圖 像質(zhì)量的影響諸如回路濾波。
為了獲得預(yù)期的速率控制,改變量化器Q另一可選擇的辦法是改
變拉格朗日乘子lambda。較小的拉格朗日乘子lambda值導(dǎo)致較大的比 特率R (以及較小的失真D),同樣地較大的拉格朗日乘子lambda值降 低了比特率R (并增加失真D)。拉格朗日乘子lambda中的變化可以隨 意地細(xì)微,這與被數(shù)字化并編碼的量化器Q中的變化相反,使得量化 器Q只限定于某些值。在許多數(shù)字視頻壓縮與編碼系統(tǒng)中,包括所有 的MPEG視頻壓縮與編碼標(biāo)準(zhǔn),并不是量化器Q的所有整數(shù)值都允許發(fā) 送,在這種情況下比特率R的突然變化可以更顯著。
當(dāng)需要拉格朗日乘子lambda大于某個(gè)閾值lambda—max (Q)以得 到某一比特率減小量時(shí),量化器Q將增加,并且利用新增加的量化器Q 值,拉格朗日乘子lambda將返回其名義上的值f (Q)。當(dāng)需要拉格朗 日乘子lambda小于某個(gè)閾值lambda—min (Q)以得到某一比特率增加 時(shí),量化器Q將減小,并且利用新減小的量化器Q,拉格朗日乘子lambda 將返回其名義上的值f (Q)。
lambda—max (Q)和lambda一rnin (Q)的值是由圖4中的比特率一 一失真關(guān)系上的交叉點(diǎn)來(lái)決定的。如果將D (lambda, Q)確定為當(dāng)用 拉格朗日乘子lambda和量化器步長(zhǎng)Q編碼時(shí)獲得的失真,則操作關(guān)系 為
D (lambda—min(Q+l) , Q+l)-D (lambda—max (Q) , Q) lambda一min(Q)〈=f(Q)〈= lambda—max(Q)
在以下的偽代碼中對(duì)視頻編碼系統(tǒng)的這樣的速率控制算法的詳細(xì)
操作進(jìn)行了闡述
Start_encoding—picture: //開(kāi)始編碼視頻圖像
input desired D; //取得預(yù)期的失真D值
find DQ nearest to D;//找到和預(yù)期的D值最接近的D。值
Q-h(D。); //確定量化器值Q
lambda=f (Q); //確定拉格朗日乘子lambda
start—encoding—pixelblock: //開(kāi)始從圖像中編碼象素模塊code—pixelblock (lambda, Q);〃利用lambda和Q編碼象素模塊 if (encoder—buffer〉Tfu11) { 〃緩存區(qū)有溢出征兆否?
lambda二lambda+deltalambda; //deltalan]bda卩J以依賴(lài)閾Q if (lambda〉Lambda—max (Q)) { 〃如果lambda太大,增加Q Q=Q+deltaQ; 〃增加量化器Q步長(zhǎng)
Lambda^ (Q); 〃設(shè)置新的拉格朗日乘
子lambda
if (encoder_buffer〈Temp1:y) { 〃緩存區(qū)有下溢征兆否?
lambda二lambda-deltalambda; //是白勺,因此減小lambda if (Xambda化ambda—min (Q)) {〃如果lambda太小,減小Q Q二Q-deltaQ; 〃減小量化器Q步長(zhǎng)
Lambda=f (Q); 〃設(shè)置新的拉格朗日乘子lambda
if (not last pixelblock) then goto start_encoding—pixelblock; 〃接下來(lái)處理圖像
通常的比特率控制算法的變化可以包括編碼器緩存區(qū)值的多種不 同的閾值,由此如果編碼器緩存區(qū)大大超過(guò)Tfull閾值,則不用等到 拉格朗日乘子lambda超過(guò)其閾值就可以立即增加量化器Q。類(lèi)似地, 如果編碼器緩存區(qū)顯著低于Tempty閾值,則可以立即減小量化器Q。 可替代地,如果編碼器緩存區(qū)極大地超過(guò)Tfull閾值或者遠(yuǎn)沒(méi)達(dá)到 Tempty閾值,則可以增加deltalambda的步長(zhǎng)。
Deltalambda和deltaQ的值可以隨著量化器Q或隨著視頻圖像類(lèi) 型(單一畫(huà)面、子母畫(huà)面或雙向畫(huà)面)而變化。而且,增加拉格朗日 乘子lambda的操作可以由乘法來(lái)代替,其可以將拉格朗日乘子lambda 改變某一百分量。例如,可以利用下列的增加lambda的操作的等式來(lái) 改變拉格朗日乘子lambda:
Lambda= (1十deltalambda) X lambda
同樣地,可以利用下列的等式進(jìn)行減小lambda的操作Lambda= (1—deltalambda) X lambda
這個(gè)簡(jiǎn)單的速率控制算法描述了用于該應(yīng)用的不同的lambda。也
設(shè)計(jì)了其它的更復(fù)雜的速率控制算法,并且這些其它的速率控制算法 也可以得益于不同的拉格朗日乘子lambda。
視覺(jué)失真折中
不同的拉格朗日乘子lambda的另一個(gè)應(yīng)用是在視覺(jué)失真標(biāo)準(zhǔn)的使 用中。通常通過(guò)對(duì)原始的象素值和解碼的象素值之間的平方誤差進(jìn)行 求和來(lái)對(duì)失真D進(jìn)行測(cè)量。然而,這種簡(jiǎn)單的失真測(cè)量方法并不能較 好地調(diào)整視頻圖像中象素錯(cuò)誤的實(shí)際的可見(jiàn)性。因而,這樣簡(jiǎn)單的失 真測(cè)量方法可以使得先前的最小化得出小于最佳結(jié)果的結(jié)果。因而, 將主觀的影響考慮進(jìn)去的算法通常是更有用的。
可以通過(guò)對(duì)每個(gè)將被編碼在視頻圖像中的象素模塊或子模塊的視 覺(jué)掩蔽值M進(jìn)行計(jì)算來(lái)將編碼噪音的可見(jiàn)性考慮進(jìn)去。視覺(jué)掩蔽值M 是基于該區(qū)域內(nèi)的象素的空間變量和時(shí)間變量的。
更大的視覺(jué)掩蔽值M表示更大的掩蔽,其使得失真更難于視覺(jué)上 檢測(cè)到。在這樣的區(qū)域,可以增加失真D并減少比特率R。這是在編碼 優(yōu)化算法中利用MX lambda (拉格朗日乘子)而不是只利用拉格朗曰乘 子lambda來(lái)方便地完成的。下面的偽代碼描述了修改的算法。 Start—encoding—picture: //開(kāi)始編碼視頻圖像
i叩ut desired D 〃取得預(yù)期的失真D值 find DQ nearest to D; 〃找到和預(yù)期的D值最接近的D值 Qnorm=h(D ) 〃確定沒(méi)有掩蔽的正常Q
lambda=f (Qnorm); 〃確定拉格朗日乘子lambda start—encoding—pixelblock: 〃開(kāi)始從圖像中編碼象素模塊 Q=Qnorm; 〃將Q設(shè)置到?jīng)]有掩蔽的正常Q
calculate visual mask M;〃確定視覺(jué)掩蔽的量 while (MX lambda〉Lambda—max (Q)) 〃 {如果存在強(qiáng)烈的掩蔽,
增加Q
Q二Q+deltaQ; 〃增加量化器Q步長(zhǎng)code pixelblock ((M X lambda, Q) 〃利用M X lambda禾n Q進(jìn)
行編碼
if (encoder—buff er〉Tful1) { 〃緩存區(qū)有溢出征兆否?
if (lambda〉Lambda—max (Q)) {//測(cè)試lambda
Qnorm二Qnorm+deltaQ; //如果lambda太大,土曾力口 Q
if (encoder—buff er〈Tempty) { 〃緩存區(qū)有下溢征兆否? la油da二lambda-deltalambda; //減小lambda if (Lambda〈Lambda jin (Qnorm)) {//測(cè)試lambda
Qnorm二Qnorm-deltaQ; 〃如果lambda太小,減小Q Lambda=f (Qnorm); 〃計(jì)算新的lambda
if (not last pixelblock) then goto start—encoding—pixelblock;
//接下來(lái)處理圖像 第二個(gè)簡(jiǎn)單的視覺(jué)掩蔽算法描述了不同的la油da在該應(yīng)用中的使
用。也設(shè)計(jì)了其它的更復(fù)雜的視覺(jué)掩蔽算法,并且這些其它的視覺(jué)掩 蔽算法也可以得益于不同的拉格朗日乘子lambda。
拉格朗日乘子lambda的變化在其它編碼決策中也可以是有用的。 例如當(dāng)編碼一系列視頻圖像時(shí),要確定有多少雙向畫(huà)面要編碼通常是 非常難以回答的。對(duì)于特定值的量化器Q和lambda =f (Q),每個(gè)子 母畫(huà)面帶一個(gè)雙向畫(huà)面的編碼結(jié)果可以是Rt、 D,,而每個(gè)子母畫(huà)面帶兩 個(gè)雙向畫(huà)面的編碼結(jié)果可以是R2、 D2。
如果R2<仏并且DZD"則顯然最好的答案是兩個(gè)雙向畫(huà)面較好。 然而,結(jié)果經(jīng)常是R2〈R,并且D2〉D^這樣不清楚雙向畫(huà)面的數(shù)量較好。 在這種情況下,我們可以使用具有較小的lambda的每一子母畫(huà)面兩個(gè) 雙向畫(huà)面來(lái)重新編碼,該lambda給定的D2近似等于D,。然后我們可以 簡(jiǎn)單地將結(jié)果值R2和R,進(jìn)行對(duì)比,看那個(gè)比特率更小。
lambda二lambda+deltalambda; //增力口 lambda
〃計(jì)算新的lambda其它方案可以相似地類(lèi)比,例如交織編碼對(duì)連續(xù)編碼、不同的運(yùn) 動(dòng)搜索范圍的編碼、帶有或者不帶有某種編碼模式的編碼等。
總而言之,我們提供了一種簡(jiǎn)單但有效的速率一失真折中的方法, 其在視頻編碼中具有多種應(yīng)用。以上描述了在多媒體壓縮和編碼系統(tǒng) 中通過(guò)編碼模式選擇來(lái)控制速率一失真折中的系統(tǒng)。預(yù)期本領(lǐng)域的普 通技術(shù)人員在不背離本發(fā)明的范圍的情況下可以對(duì)本發(fā)明的元件的材 料和配置作出改變和修改。
權(quán)利要求
1、一種用于控制速率失真的方法,所述方法包括a.基于初始的量化器值和初始的拉格朗日乘子,對(duì)至少一個(gè)視頻圖像進(jìn)行編碼;b.通過(guò)改變初始的量化器值或初始的拉格朗日乘子來(lái)對(duì)視頻圖像的編碼進(jìn)行調(diào)整。
2、 根據(jù)權(quán)利要求1所述的方法,其中,初始的量化器值和初始的拉格朗日乘子被調(diào)整以獲得特定的失真值。
3、 根據(jù)權(quán)利要求2所述的方法,其中,所述特定的失真值是最接 近預(yù)期失真值的失真值。
4、 根據(jù)權(quán)利要求l所述的方法,其中,對(duì)編碼的調(diào)整是基于緩沖 區(qū)流準(zhǔn)則。
5、 根據(jù)權(quán)利要求1所述的方法,其中,當(dāng)緩沖區(qū)超過(guò)溢出閾值時(shí), 執(zhí)行對(duì)編碼的調(diào)整。
6、 根據(jù)權(quán)利要求1所述的方法,其中,當(dāng)緩沖區(qū)降到下溢閾值以 下時(shí),執(zhí)行對(duì)編碼的調(diào)整。
7、 根據(jù)權(quán)利要求1所述的方法,其中,當(dāng)?shù)谝焕窭嗜粘俗哟笥?最大閾值時(shí),改變初始的量化器值。
8、 根據(jù)權(quán)利要求1所述的方法,其中,對(duì)編碼進(jìn)行調(diào)整包括增加 初始的拉格朗日乘子以減小比特率值。
9、 根據(jù)權(quán)利要求1所述的方法,其中,對(duì)編碼進(jìn)行調(diào)整包括減小 初始的拉格朗日乘子以增加比特率值。
10、 根據(jù)權(quán)利要求1所述的方法, 加初始的量化器值以減小比特率值。
11、 根據(jù)權(quán)利要求1所述的方法, 小初始的量化器值以增加比特率值。權(quán)利要求書(shū)第2/4頁(yè)其中,對(duì)編碼進(jìn)行調(diào)整包括增 其中,對(duì)編碼進(jìn)行調(diào)整包括減
12、 根據(jù)權(quán)利要求1所述的方法,其中,對(duì)編碼進(jìn)行調(diào)整包括,通過(guò)來(lái)自多個(gè)拉格朗日delta值中的特定的拉格朗日delta值,改變 拉格朗日乘子。
13、 根據(jù)權(quán)利要求12所述的方法,其中,所使用的特定的拉格朗 曰delta值是基于來(lái)自多個(gè)量化器值中的所便用的特定的量化器值。
14、 根據(jù)權(quán)利要求1所述的方法,其中,對(duì)編碼進(jìn)行調(diào)整包括, 通過(guò)來(lái)自多個(gè)量化器delta值中的特定的量化器delta值改變量化器 值。
15、 根據(jù)權(quán)利要求14所述的方法,其中,所使用的特定的量化器 delta值是基于來(lái)自多個(gè)量化器值中的所使用的特定的量化器值。
16、 根據(jù)權(quán)利要求1所述的方法,其中,對(duì)編碼進(jìn)行調(diào)整包括, 通過(guò)與特定的乘法系數(shù)相乘后的特定的拉格朗日delta值改變初始的 拉格朗日乘子。
17、 一種用于控制速率失真的方法,所述方法包括a. 為至少一個(gè)視頻圖像計(jì)算視覺(jué)掩蔽值;b. 基于計(jì)算的視覺(jué)掩蔽值對(duì)至少一個(gè)視頻圖像進(jìn)行編碼。
18、 根據(jù)權(quán)利要求17所述的方法,其中,進(jìn)一步基于量化器值和 拉格朗日乘子進(jìn)行編碼。
19、 根據(jù)權(quán)利要求18所述的方法,其中,還包括通過(guò)改變量化器 值調(diào)整對(duì)視頻圖像的編碼。
20、 根據(jù)權(quán)利要求19所述的方法,其中,當(dāng)視覺(jué)掩蔽值乘以拉格朗日乘子大于閾值時(shí),改變量化器值。
21、 根據(jù)權(quán)利要求18所述的方法,其中,還包括通過(guò)改變拉格朗 曰乘子調(diào)整對(duì)視頻圖像的編碼。
22、 根據(jù)權(quán)利要求21所述的方法,其中,通過(guò)與視覺(jué)掩蔽值相乘 后的拉格朗日delta值改變拉格朗日乘子。
23、 根據(jù)權(quán)利耍求17所述的方法,其中,視覺(jué)掩蔽值為至少一個(gè) 視頻圖像定義編碼噪音的可見(jiàn)性。
24、 根據(jù)權(quán)利要求17所述的方法,其中,視覺(jué)掩蔽值是基于視頻 圖像的區(qū)域內(nèi)的至少一個(gè)象素的空間變量的。
25、 根據(jù)權(quán)利要求17所述的方法,其中,視覺(jué)掩蔽值是基于視頻 圖像的區(qū)域內(nèi)的至少一個(gè)象素的時(shí)間變量的。
26、 一種設(shè)備,包括用于實(shí)現(xiàn)權(quán)利要求1-25之一的方法的裝置。
27、 一種編碼器,包括a. 量化器單元,用于對(duì)至少一個(gè)視頻圖像進(jìn)行量化;b. 速率控制器,用于改變拉格朗日乘子和量化器單元所使用的量 化器值。
28、 根據(jù)權(quán)利要求27所述的編碼器,其中,在改變量化器值之前 改變拉格朗日乘子。
29、 根據(jù)權(quán)利要求27所述的編碼器,還包括用于存儲(chǔ)視頻圖像的緩沖區(qū)。
30、 根據(jù)權(quán)利要求27所述的編碼器,其中,速率控制器在緩沖區(qū) 大于閾值時(shí)改變拉格朗日乘子。
31、 根據(jù)權(quán)利要求27所述的編碼器,其中,速率控制器在緩沖區(qū) 小于閾值時(shí)改變拉格朗日乘子。
32、 根據(jù)權(quán)利要求27所述的編碼器,其中,速率控制器在緩沖區(qū) 大于閾值時(shí)改變量化器值。
33、 根據(jù)權(quán)利要求27所述的編碼器,其中,速率控制器在緩沖區(qū) 小于閾值時(shí)改變量化器值。
34、 根據(jù)權(quán)利要求27所述的編碼器,其中,速率控制器還用于為 至少一個(gè)視頻圖像計(jì)算視覺(jué)掩蔽值。
全文摘要
本發(fā)明公開(kāi)了一種在視頻編碼器中利用拉格朗日乘子和視覺(jué)掩蔽來(lái)控制速率一失真折中的方法和裝置。本發(fā)明的系統(tǒng)首先在預(yù)期的失真值附近選擇失真值D。接下來(lái),該系統(tǒng)利用選定的失真值D確定量化器值Q。該系統(tǒng)然后利用量化器值Q計(jì)算拉格朗日乘子lambda。利用選定的拉格朗日乘子lambda和量化器值Q,該系統(tǒng)開(kāi)始對(duì)象素模塊進(jìn)行編碼。如果系統(tǒng)檢測(cè)到潛在的緩存區(qū)溢出,則該系統(tǒng)將增加拉格朗日乘子lambda。如果拉格朗日乘子lambda超過(guò)最大的lambda閾值,則系統(tǒng)將增加量化器值Q。如果系統(tǒng)檢測(cè)到潛在的緩存區(qū)下溢,則系統(tǒng)將減小拉格朗日乘子lambda。如果拉格朗日乘子lambda降到最小的lambda閾值以下,則系統(tǒng)將減小量化器值Q。
文檔編號(hào)H04N7/30GK101409835SQ20081008785
公開(kāi)日2009年4月15日 申請(qǐng)日期2003年10月31日 優(yōu)先權(quán)日2002年11月8日
發(fā)明者A·普里, A·杜米特拉什, B·G·哈斯克爾 申請(qǐng)人:蘋(píng)果公司