專利名稱:多通路視頻編碼的制作方法
背景技術(shù):
視頻編碼器通過利用多種編碼方案編碼視頻圖像序列(例如,視頻幀)。視頻編碼方案典型地是以內(nèi)幀或幀間的方式編碼視頻幀或視頻幀的各部分(例如,視頻幀內(nèi)的像素集)。內(nèi)幀編碼的幀或像素集是獨(dú)立于其他幀或其他幀內(nèi)的像素集來編碼的。幀間編碼的幀或像素集是通過參考一個(gè)或多個(gè)其他幀或其他幀內(nèi)的像素集來編碼的。
當(dāng)壓縮視頻幀時(shí),一些編碼器實(shí)現(xiàn)了“速率控制器”,其為將要編碼的視頻幀或視頻幀的集合提供“比特預(yù)算”。比特預(yù)算指定已經(jīng)分配給編碼該視頻幀或視頻幀集合的比特?cái)?shù)量。通過有效分配比特預(yù)算,速率控制器試圖生成考慮到某種限制(例如,目標(biāo)比特率等)的最高質(zhì)量壓縮的視頻流。
迄今為止,已經(jīng)提出了多種單通路和多通路速率控制器。單通路速率控制器為在單個(gè)通路中編碼一系列視頻圖像的編碼方案提供比特預(yù)算,而多通路速率控制器為在多個(gè)通路中編碼一系列視頻圖像的編碼方案提供比特預(yù)算。
單通路速率控制器在實(shí)時(shí)編碼條件下是有效的。另一方面,多通路速率控制器基于一組限制為特定比特率優(yōu)化編碼。迄今為止,并沒有很多的速率控制器在控制它們的比特率中考慮到幀或幀內(nèi)像素集的空間或時(shí)間的復(fù)雜度。同樣,大多數(shù)多通路速率控制器沒有為慮及所期望比特率而對(duì)幀和/或幀內(nèi)像素集使用最優(yōu)量化參數(shù)的編碼解決方案充分搜索解空間。
因此,現(xiàn)有技術(shù)中存在對(duì)使用新穎技術(shù)的速率控制器的需求,以便在控制用于編碼一組視頻圖像的比特率的同時(shí),考慮視頻圖像和/或視頻圖像各部分的空間或時(shí)間復(fù)雜度。現(xiàn)有技術(shù)中還存在對(duì)多通路速率控制器的需求,其充分檢查各種編碼方案以識(shí)別出針對(duì)視頻圖像和/或視頻圖像各部分使用最優(yōu)量化參數(shù)集的編碼方案。
發(fā)明內(nèi)容
本發(fā)明的一些實(shí)施例提供一種編碼多個(gè)圖像(例如,視頻序列的多個(gè)幀)的多通路編碼方法。該方法重復(fù)執(zhí)行編碼這些圖像的編碼操作。該編碼操作是基于標(biāo)稱量化參數(shù),該方法使用該標(biāo)稱量化參數(shù)計(jì)算這些圖像的量化參數(shù)。在該編碼操作的幾次不同的迭代過程中,該方法使用了幾種不同的標(biāo)稱量化參數(shù)。該方法在達(dá)到了終結(jié)準(zhǔn)則(例如,其識(shí)別到一個(gè)可接受的圖像編碼)時(shí)停止其迭代過程。
本發(fā)明的一些實(shí)施例提供一種用于編碼視頻序列的方法。該方法識(shí)別量化視頻中的第一圖像的復(fù)雜度的第一屬性。它還基于所述識(shí)別的第一屬性為編碼第一圖像識(shí)別量化參數(shù)。該方法接著基于所述識(shí)別的量化參數(shù)編碼第一圖像。在一些實(shí)施例中,這種方法為視頻中的多個(gè)圖像執(zhí)行這三項(xiàng)操作。
本發(fā)明的一些實(shí)施例基于視頻圖像和/或視頻圖像的各部分的“視覺掩蔽”屬性編碼視頻圖像序列。圖像或圖像各部分的視覺掩蔽是對(duì)在圖像或圖像各部分中能夠忍受多少編碼人工因素的指示。為了表達(dá)圖像或圖像各部分的視覺掩蔽屬性,一些實(shí)施例計(jì)算了量化圖像或圖像各部分的亮度能量的視覺掩蔽強(qiáng)度。在一些實(shí)施例中,該亮度能量測(cè)量作為圖像或圖像各部分的平均luma或像素能量的函數(shù)。
替代該亮度能量或與之結(jié)合,圖像或圖像各部分的視覺掩蔽強(qiáng)度也可以量化圖像或圖像各部分的活動(dòng)性能量?;顒?dòng)性能量表示圖像或圖像各部分的復(fù)雜度。在一些實(shí)施例中,活動(dòng)性能量包括量化圖像或圖像各部分空間復(fù)雜度的空間組件,和/或量化由于圖像之間的移動(dòng)而能夠忍受/掩蔽的失真數(shù)量的運(yùn)動(dòng)組件。
本發(fā)明的一些實(shí)施例提供一種用于編碼視頻序列的方法。該方法識(shí)別視頻中的第一圖像的視覺掩蔽屬性。其還識(shí)別用于基于所述識(shí)別的視覺掩蔽屬性編碼第一圖像的量化參數(shù)。該方法接著基于所述識(shí)別的量化參數(shù)編碼第一圖像。
本發(fā)明的新穎特征在所附權(quán)利要求書中闡述。然而,出于解釋的目的,在以下附圖中闡述本發(fā)明的多個(gè)實(shí)施例。
圖1給出了概念性舉例說明本發(fā)明一些實(shí)施例的編碼方法的過程;圖2概念性舉例說明了一些實(shí)施例的編解碼系統(tǒng);圖3為舉例說明一些實(shí)施例的編碼過程的流程圖;圖4a為一些實(shí)施例中圖像的標(biāo)稱移除時(shí)間和最終到達(dá)時(shí)間之間的區(qū)別與舉例說明下溢條件的圖像數(shù)量之間關(guān)系的曲線圖;圖4b舉例說明了在消除下溢條件之后,對(duì)如圖4a中所示的同一圖像標(biāo)稱移除時(shí)間和最終到達(dá)時(shí)間的區(qū)別與圖像數(shù)量之間的關(guān)系曲線圖;圖5舉例說明了一些實(shí)施例中編碼器用于執(zhí)行下溢檢測(cè)的過程;圖6舉例說明了一些實(shí)施例中編碼器用于消除圖像的單個(gè)片段中的下溢條件的過程;圖7舉例說明了視頻流應(yīng)用中緩沖器下溢管理的應(yīng)用;圖8舉例說明了HD-DVD系統(tǒng)中緩沖器下溢管理的應(yīng)用。
圖9給出了利用其實(shí)現(xiàn)了本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)。
具體實(shí)施例方式
在以下對(duì)本發(fā)明的詳細(xì)描述中,提出并描述了本發(fā)明的眾多細(xì)節(jié)、實(shí)例及實(shí)施例。然而,對(duì)本領(lǐng)域技術(shù)人員明確并顯而易見的是,本發(fā)明并不局限于所述的實(shí)施例,并且本發(fā)明可以無需一些指定細(xì)節(jié)和所討論實(shí)例而實(shí)施。
I.定義此部分為這個(gè)文檔中使用的多個(gè)符號(hào)提供了定義。
RT代表目標(biāo)比特率,它是用于編碼幀序列所期望的比特率。通常,這個(gè)比特率以比特/秒為單位表述,并且是從所期望的最終的文件尺寸、序列中幀的數(shù)量、以及幀速率計(jì)算得出的。
Rp代表通路p的結(jié)束處所編碼比特流的比特率。
Ep代表在通路p的結(jié)束處比特率中的錯(cuò)誤百分比。在一些情況下,這個(gè)百分比計(jì)算為 ε代表最終比特率中的誤差容許范圍。
εC代表針對(duì)第一QP搜索階段的比特率中的誤差容許范圍。
QP代表量化參數(shù)。
QPNom(p)代表為幀序列編碼的通路p中所使用的標(biāo)稱量化參數(shù)。QPNom(p)的值由本發(fā)明的多通路編碼器在第一QP調(diào)整階段中調(diào)整以達(dá)到目標(biāo)比特率。
MQPp(k)代表屏蔽幀QP,其是通路p中幀k的量化參數(shù)(QP)。一些實(shí)施例通過利用標(biāo)稱QP和幀級(jí)視覺掩蔽計(jì)算該值。
MQPMB(p)(k,m)代表屏蔽宏塊QP,其是幀k和通路p的單個(gè)宏塊(具有宏塊索引m)的量化參數(shù)(QP)。一些實(shí)施例通過利用MQPp(k)和宏塊級(jí)視覺掩蔽計(jì)算MQPMB(p)(k,m)。
φF(k)代表成為幀k掩蔽強(qiáng)度的值。掩蔽強(qiáng)度φF(k)是對(duì)該幀的復(fù)雜度度量,在一些實(shí)施例中,這個(gè)值被用于確定視覺編碼人工因素/噪聲將如何呈現(xiàn)以及用于計(jì)算幀k的MQPp(k)。
φR(p)代表通路p中的參考屏蔽強(qiáng)度。該參考屏蔽強(qiáng)度用于計(jì)算幀k的MQPp(k),并且其由本發(fā)明的多通路編碼器在第二階段中調(diào)整以達(dá)到目標(biāo)比特率。
φMB(k,m)代表幀k中具有索引號(hào)為m的宏塊的屏蔽強(qiáng)度。屏蔽強(qiáng)度φMB(k,m)為該宏塊復(fù)雜度的度量,并且在一些實(shí)施例中,其被用于確定視覺編碼人工因素/噪聲將如何呈現(xiàn)以及用于計(jì)算MQPMB(p)(k,m)。AMQPp代表通路p中的幀之上的平均屏蔽QP。在一些實(shí)施例中,該值作為通路p中的所有幀之上的平均MQPp(k)計(jì)算。
II.概述本發(fā)明的一些實(shí)施例提供了實(shí)現(xiàn)以給定比特率編碼幀序列的最佳視覺質(zhì)量的編碼方法。在一些實(shí)施例中,該方法使用為每一個(gè)宏塊分配量化參數(shù)QP的視覺掩蔽過程。這種分配基于圖像或視頻幀中較亮或空間上較復(fù)雜區(qū)域中的編碼人工因素/噪聲不如較暗或平面區(qū)域中的編碼人工因素/噪聲明顯的認(rèn)識(shí)。
在一些實(shí)施例中,這種視覺掩蔽過程作為發(fā)明的多通路編碼過程的部分執(zhí)行。為了使最終編碼比特流達(dá)到目標(biāo)比特率,這種編碼過程調(diào)整標(biāo)稱量化參數(shù)并通過參考屏蔽強(qiáng)度參數(shù)φR控制視覺掩蔽過程。如以下的進(jìn)一步描述,調(diào)整標(biāo)稱量化參數(shù)和控制屏蔽算法調(diào)整每幅圖片(即,通常是視頻編碼方案中的每個(gè)幀)和每幅圖片內(nèi)的每個(gè)宏塊的QP值。
在一些實(shí)施例中,多通路編碼過程全局調(diào)整整個(gè)序列的標(biāo)稱QP和φR。在其他實(shí)施例中,這個(gè)過程將視頻序列劃分為片段,利用標(biāo)稱QP和φR調(diào)整每個(gè)片段。下面的描述涉及其上應(yīng)用了多通路編碼處理的幀序列。普通技術(shù)人員將意識(shí)到在一些實(shí)施例中這個(gè)序列包括整個(gè)序列,而在其他實(shí)施例中其僅包括序列的一個(gè)片段。
在一些實(shí)施例中,本方法具有三個(gè)編碼階段。這三個(gè)階段為(1)在通路0中執(zhí)行的初始分析階段,(2)在通路1到通路N1中執(zhí)行的第一搜索階段,以及(3)在通路N1+1到N1+N2中執(zhí)行的第二搜索階段。
在初始分析階段中(即,在通路0期間),本方法識(shí)別用于標(biāo)稱QP(QPNom(1),將在編碼的通路1中使用)的初始值。在初始分析階段期間,該方法還識(shí)別參考屏蔽強(qiáng)度φR的值,它在第一搜索階段中的所有通路中使用。
在第一搜索階段中,本方法執(zhí)行編碼過程的N1迭代(即,N1通路)。在通路p中對(duì)每一個(gè)幀k,該過程通過使用特定量化參數(shù)MQPp(k)和幀k內(nèi)的各個(gè)宏塊m的特定量化參數(shù)MQPMB(p)(k,m)編碼該幀,在此MQPMB(p)(k,m)是利用MQPp(k)計(jì)算的。
在第一搜索階段中,量化參數(shù)MQPp(k)在通路之間變化,因?yàn)槠涫怯稍谕分g變化的標(biāo)稱量化參數(shù)QPNom(p)得到的。換言之,在第一搜索階段期間每個(gè)通路p的結(jié)束時(shí),該過程計(jì)算用于通路p+1的標(biāo)稱QPNom(p+1)。在一些實(shí)施例中,標(biāo)稱QPNom(p+1)是基于來自之前的通路的標(biāo)稱QP值和比特率錯(cuò)誤。在其他的實(shí)施例中,標(biāo)稱QPNom(p+1)值在第二搜索階段中的每個(gè)通路的結(jié)束時(shí)不同地計(jì)算。
在第二搜索階段中,本方法執(zhí)行編碼過程的N2迭代(即,N2通路)。正如在第一搜索階段中的那樣,該過程通過使用特定量化參數(shù)MQPp(k)和幀k內(nèi)的各個(gè)宏塊m的特定量化參數(shù)MQPMB(p)(k,m)在每個(gè)通路p期間編碼每個(gè)幀k,在此由MQPp(k)得到MQPMB (p)(k,m)。
同樣,正如在第一搜索階段中的那樣,量化參數(shù)MQPp(k)在通路間變化。然而,在第二搜索階段期間,這個(gè)參數(shù)改變是由于其是利用在通路之間變化的參考屏蔽強(qiáng)度φR(p)計(jì)算的。在一些實(shí)施例中,參考屏蔽強(qiáng)度φR(p)是基于來自之前通路的比特率中的錯(cuò)誤和φR值計(jì)算的。在其他的實(shí)施例中,該參考屏蔽強(qiáng)度在第二搜索階段中的每個(gè)通路的結(jié)束時(shí)計(jì)算為不同的值。
盡管是結(jié)合視覺掩蔽過程描述了多通路編碼過程,本領(lǐng)域的普通技術(shù)人員將意識(shí)到的是編碼器無需同時(shí)一起使用這些兩種處理過程。例如,在一些實(shí)施例中,通過忽略φR并省略以上所述的第二搜索階段,多通路編碼過程被用于編碼給定目標(biāo)比特率附近的比特流而無需視覺掩蔽。
在本申請(qǐng)的第III和IV部分進(jìn)一步描述了視覺掩蔽和多通路編碼過程。
III.視覺掩蔽給定一個(gè)標(biāo)稱量化參數(shù),視覺掩蔽處理首先利用參考屏蔽強(qiáng)度(φR)和該幀屏蔽強(qiáng)度(φF)計(jì)算每個(gè)幀的屏蔽幀量化參數(shù)(MQP)。該過程接著基于該幀和宏塊級(jí)屏蔽強(qiáng)度(φF和φMB)計(jì)算每個(gè)宏塊的屏蔽宏塊量化參數(shù)(MQPMB)。當(dāng)在多通路編碼過程中應(yīng)用視覺掩蔽處理時(shí),一些實(shí)施例中的參考屏蔽強(qiáng)度(φR)如上所述以及以下進(jìn)一步的描述在第一編碼通路中被識(shí)別。
A.計(jì)算幀級(jí)屏蔽強(qiáng)度1.第一種方法為了計(jì)算幀級(jí)屏蔽強(qiáng)度φF(k),一些實(shí)施例使用以下公式(A)φF(k)=C*power(E*avgFrameLuma(k),β)*power(D*avgFrameSAD(k),αF),(A)其中●avgFrameLuma(k)為利用bxb區(qū)域計(jì)算的幀k中的平均像素強(qiáng)度,其中b為大于或等于1的整數(shù)(例如,b=1或b=4);●avgFrameSAD(k)為幀k內(nèi)所有宏塊的MbSAD(k,m)的平均值;●MbSAD(k,m)為由函數(shù)Calc4×4MeanRemovedSAD(4×4_block_pixel_value)給出的具有索引為m的宏塊中所有4×4塊的值的總和;●αF,C,D,和E為常數(shù)和/或根據(jù)本地統(tǒng)計(jì)而調(diào)整;以及●power(a,b)意為ab。
用于函數(shù)Calc4×4MeanRemovedSAD的偽碼如下Calc4×4MeanRemovedSAD(4×4_block_pixel_values){calculate the mean of pixel values in the given 4×4 block;subtract the mean from pixel values and compute their absolute values;sum the absolute values obtained in the previous step;return the sum;}2.第二種方法其他的實(shí)施例以不同的方式計(jì)算幀級(jí)屏蔽強(qiáng)度。例如,上述的公式(A)基本如下所示計(jì)算幀屏蔽強(qiáng)度φF(k)=C*power(E*Brightness_Attribute,exponent0)*power(scalar*Spatial_Activity_Attribute,exponent1)
在公式(A)中,幀的Brightness_Attribute等于avgFrameLuma(k),而Spatial_Activity_Attribute等于avgFrameSAD(k),其是幀內(nèi)的所有宏塊的平均宏塊SAD(MbSAD(k,m))值,在此平均宏塊SAD等于宏塊內(nèi)所有4×4塊的平均移除4×4像素變更(如由Calc4×4MeanRemovedSAD給出)的絕對(duì)值之和。該Spatial_Activity_Attribute度量了正被編碼的幀之內(nèi)的像素區(qū)域中的空間修正的數(shù)量。
其他的實(shí)施例將活動(dòng)度量擴(kuò)展到包含穿過許多連續(xù)幀的像素區(qū)域中的時(shí)間修正的數(shù)量。特別的,這些實(shí)施例如下所示計(jì)算幀屏蔽強(qiáng)度φF(k)=C*power(E*Brightness_Attribute,exponent0)*power(scalar*Activity_Attribute,exponent1) (B)在這個(gè)公式中,Activity_Attribute由以下公式(C)給出E*power(F*Temporal_Activity_Attribuc,exponent_delta)(C)在一些實(shí)施例中,Temporal_Activity_Attribute量化了能夠忍受(即,屏蔽)由于幀之間的移動(dòng)而引起失真的數(shù)量。在這些實(shí)施例的一些中,幀的Temporal_Activity_Attribute等于該幀內(nèi)所定義的像素區(qū)域的移動(dòng)補(bǔ)償錯(cuò)誤信號(hào)的絕對(duì)值之和的常數(shù)倍。在另外一些實(shí)施例中,Temporal_Activity_Attribute由以下公式(D)提供Temporal_Activity_Attribute=]]>Σj=-1-N(Wj·avgFranieSAD(j))+Σj=1M(Wj·avgFrameSAD(j))+W0·avgFranieSAD(0)---(D)]]>在公式(D)中,“avgFrameSAD”代表(如上所述)幀內(nèi)的平均宏塊SAD(MbSAD(k,m))值,avgFrameSAD(0)為當(dāng)前幀的avgFrameSAD,并且負(fù)的j指向當(dāng)前幀之前的時(shí)間實(shí)例,而正的j指向當(dāng)前幀之后的時(shí)間實(shí)例。由此,avgFrameSAD(j=-2)表示當(dāng)前幀之前的兩個(gè)幀的平均幀SAD,avgFrameSAD(j=3)表示當(dāng)前幀之后的三個(gè)幀的平均幀SAD。
同樣,在公式(D)中,變量N和M分別指當(dāng)前幀之前和之后的幀的數(shù)量。代替簡(jiǎn)單的基于特定數(shù)量的幀選擇值N和M,一些實(shí)施例基于當(dāng)前時(shí)間幀的時(shí)間的之前或之后特定時(shí)間周期計(jì)算值N和M。將移動(dòng)屏蔽與空間持續(xù)時(shí)間相關(guān)聯(lián)比將移動(dòng)屏蔽與一組數(shù)量的幀相關(guān)聯(lián)更具優(yōu)勢(shì)。這是因?yàn)閷⒁苿?dòng)屏蔽與時(shí)間周期相關(guān)聯(lián)直接符合觀察者基于時(shí)間的視覺感覺。另一方面,將這樣的屏蔽與幀的數(shù)量相關(guān)聯(lián)由于不同的顯示裝置以不同幀速率呈現(xiàn)視頻而要忍受可變的顯示持續(xù)時(shí)間。
在公式(D)中,“W”代指權(quán)重因數(shù),在一些實(shí)施例中,當(dāng)幀j進(jìn)一步離開當(dāng)前幀時(shí)其會(huì)減少。同樣,在這個(gè)公式中,第一求和表示能夠在當(dāng)前幀之前屏蔽的移動(dòng)數(shù)量。第二求和表示能夠在當(dāng)前正之后屏蔽的移動(dòng)數(shù)量,而最后的表達(dá)式(avgFrameSAD(0))表示當(dāng)前幀的幀SAD。
在一些實(shí)施例中,權(quán)重因數(shù)被調(diào)整以說明場(chǎng)景變化。例如,一些實(shí)施例解決先行范圍內(nèi)(即,在M幀內(nèi))即將來臨的場(chǎng)景變化,但在場(chǎng)景變化之后沒有任何幀。例如,這些實(shí)施例可以設(shè)置場(chǎng)景變化之后的先行范圍內(nèi)的幀的權(quán)重因數(shù)為零。同樣,一些實(shí)施例不解決向后看范圍內(nèi)(即,在N幀之內(nèi))先于或位于場(chǎng)景變化的幀。例如,這些實(shí)施例可以設(shè)置涉及前面場(chǎng)景或落到先前場(chǎng)景變化之前的向后看范圍內(nèi)的幀的權(quán)重因數(shù)為零。
3.第二方法的變異a)限制過去幀和將來幀對(duì)Temporal_Activity_Attribute的影響以上的公式(D)基本上從以下條件表述Temporal_Activity_AttributeTemporal_Activity_Attribute=Past_Frame_Activity+Future_Frame_Activity+Current_Frame_Activity,在此Past_Frame_Activity(PFA)等于 Future_Frame_Activity(FFA)等于 而Current_Frame_Activity(CFA)等于avgFrameSAD(current)。
一些實(shí)施例修改Temporal_Activity_Attribute的計(jì)算以便Past_Frame_Activity和Future_Frame_Activity均不會(huì)過度控制Temporal_Activity_Attribute的值。例如,一些實(shí)施例初始定義PFA等于 而FFA等于 這些實(shí)施例接著判斷PFA是否大于標(biāo)量時(shí)間FFA。如果是的話,這些實(shí)施例就將PFA設(shè)置為等于PFA上限值(例如,標(biāo)量時(shí)間FFA)。除了設(shè)置PFA等于PFA上限值,一些實(shí)施例可以執(zhí)行將FFA設(shè)置為零以及將CFA設(shè)置為零的組合設(shè)置。其他的實(shí)施例可以將PFA和CFA之一或二者設(shè)置為PFA、CFA、以及FFA的加權(quán)組合。
與之類似,在基于加權(quán)總和初始定義了PFA和FFA值之后,一些實(shí)施例還判斷FFA值是否大于標(biāo)量時(shí)間PFA。如果是的話,這些實(shí)施例就將FFA設(shè)置為等于FFA上限值(例如,標(biāo)量時(shí)間PFA)。除了設(shè)置FFA等于FFA上限值,一些實(shí)施例可以執(zhí)行將PFA設(shè)置為零以及將CFA設(shè)置為零的組合設(shè)置。其他的實(shí)施例可以將FFA和CFA之一或二者設(shè)置為FFA、CFA、以及PFA的加權(quán)組合。
PFA和FFA值的潛在后續(xù)調(diào)整(在基于加權(quán)總和對(duì)這些值進(jìn)行初始估算之后)防止了這些值的任一個(gè)對(duì)Temporal_Activity_Attribute的過度控制。
b)限制Spatial_Activity_Attribute和Temporal_Activity_Attribute對(duì)Activity_Attribute的影響以上的公式(C)基本從以下條件表述Activity_AttributeActivity_Attribute=Spatial_Activity+Temporal_Activity,其中,Spatial_Activity等于scalar*(scalar*Spatial_Activity_Attribute)β,而Temporal_Activity等于scalar*(scalar*Temporal_Activity_Attribute)Δ。
一些實(shí)施例修改Activity_Attribute的計(jì)算以便Spatial_Activity和Temporal_Activity任一個(gè)都不會(huì)過度控制Activity_Attribute的值。例如,一些實(shí)施例初始定義Spatial_Activity(SA)等于scalar*(scalar*Spatial_Activity_Attribute)β,以及定義Temporal_Activity(TA)等于scalar*(scalar*Temporal_Activity_Attribute)Δ。
這些實(shí)施例接著判斷SA是否大于標(biāo)量時(shí)間TA。如果是的話,這些實(shí)施例就將SA設(shè)置為等于SA上限值(例如,標(biāo)量時(shí)間TA)。除了設(shè)置SA等于SA上限的這種情況之外,一些實(shí)施例還可以將TA值設(shè)置為零或設(shè)置為TA和SA的加權(quán)組合。
與之類似,在基于指數(shù)方程初始定義SA和TA值之后,一些實(shí)施例還判斷TA值是否大于標(biāo)量時(shí)間SA。如果是的話,這些實(shí)施例就將TA設(shè)置為等于TA上限值(例如,標(biāo)量時(shí)間SA)。除了設(shè)置TA等于TA上限的這種情況之外,一些實(shí)施例還可以將SA值設(shè)置為零或設(shè)置為SA和TA的加權(quán)組合。
SA和TA值的潛在后續(xù)調(diào)整(在基于指數(shù)方程對(duì)這些值進(jìn)行初始計(jì)算之后)防止了這些值之一對(duì)Activity_Attribute的過度控制。
B.計(jì)算宏塊級(jí)屏蔽強(qiáng)度1.第一種方法在一些實(shí)施例中,宏塊級(jí)屏蔽強(qiáng)度φMB(k,m)如下計(jì)算φMB(k,m)=A*power(C*avgMbLuma(k,m),β)*power(B*MbSAD(k,m),αMB),(F)其中avgMbLuma(k,m)為幀k、宏塊m內(nèi)的平均像素強(qiáng)度;αMB、β、A、B、和C為常數(shù)和/或適合于本地統(tǒng)計(jì)。
2.第二種方法以上所述的公式(F)基本上如下計(jì)算宏塊屏蔽強(qiáng)度φMB(k,m)=D*power(E*Mb_Brightness_Attribute,exponent0)*power(scalar*Mb_Spatial_Activity_Attribute,exponent1)在公式(F)中,宏塊的Mb_Brightness_Attribute等于avgMbLuma(k,m),而Mb_Spatial_Activity_Attribute等于avgMbSAD(k)。該Mb_Spatial_Activity_Attribute度量了正被編碼的宏塊內(nèi)的像素區(qū)域中的空間修正的數(shù)量。
正如在幀屏蔽強(qiáng)度的情況下一樣,一些實(shí)施例可以擴(kuò)展宏塊屏蔽強(qiáng)度中的活動(dòng)度量以包含穿過許多連續(xù)幀的像素區(qū)域中的時(shí)間修正的數(shù)量。特別的,這些實(shí)施例將如下所示計(jì)算宏塊屏蔽強(qiáng)度φMB(k,m)=D*power(E*Mb_Brightness_Attribute,exponent0)*power(scalar*Mb_Activity_Attribute,exponent1),(G)其中Mb_Activity_Attribute由以下公式(H)給出Mb_Activity_Attribute=F*power(D*Mb_Spatial_Activity_Attribute,exponent_beta)+G*power(F*Mb_Temporal_Activity_Attribue,exponent_delta)(H)宏塊的Mb_Temporal_Activity_Attribute的計(jì)算可以與以上所述幀的Mb_Temporal_Activity_Attribute的計(jì)算相類似。例如,在這些實(shí)施例的一些中,Mb_Temporal_Activity_Attribute由以下公式(I)提供Mb_Temporal_Activity_Attribute=]]>Σi=1N(Wi·MbSAD(i,m))+Σj=1M(Wj·MbSAD(j,m))+MbSAD(m)---(I)]]>公式(I)中的變量在第III部分中定義。在公式(F)中,幀I或j中的宏塊m可以是如與當(dāng)前幀中宏塊m的相同位置中的宏塊,或可以是初始預(yù)測(cè)為對(duì)應(yīng)當(dāng)前幀中的宏塊m的幀i或j中的宏塊。
由公式(I)提供的Mb_Temporal_Activity_Attribute可以以與公式(D)所提供的幀Temporal_Activity_Attribute的修改(在以上第III.A.3部分中所討論的)相類似的方式進(jìn)行修改。特別的,可以修改由公式(I)提供的Mb_Temporal_Activity_Attribute以限制過去和將來幀中的宏塊的過度影響。
類似的,由公式(H)所提供的Mb_Activity_Attribute可以以與公式(C)所提供的幀Activity_Attribute的修改(在以上第III.A.3部分中所討論的)相類似的方式進(jìn)行修改。特別的,可以修改由公式(H)提供的Mb_Activity_Attribute以限制Mb_Spatial_Activity_Attribute和Mb_Temporal_Activity_Attribute的過度影響。
C.計(jì)算屏蔽的QP值基于屏蔽強(qiáng)度(φF和φMB)值和參考屏蔽強(qiáng)度(φR)值,視覺掩蔽處理可通過使用兩個(gè)函數(shù)CalcMQP和CalcMQPforMB計(jì)算幀級(jí)和宏塊級(jí)的屏蔽QP值。這兩個(gè)函數(shù)的偽碼如下CalcMQP(nominalQP,φR,φF(k),maxQPFrameAdjustment){QPFrameAdjustment=βF*(φF(k)-φR)/φR;clip QPFrameAdjustment to lie within[minQPFrameAdjustment,,maxQPFrameAdjustment];maskedQPofFrame=nominalQP+QPFrameAdjustment;clip maskedQPofFrame to lie in the admissible range;return maskedQPofFrame(for frame k);}CalcMQPforMB(maskedQPofFrame,φF(k),φMB(k,m),maxQPMacroblockAdjustment){if(φF(k)>T) where T is a suitably chosen thresholdQPMacroblockAdjustment=βMB*(φMB(k,m)-φF(k))/φF(k);elseQPMacroblockAdjustment=0;clip QPMacroblockAdjustment so that it lies within[minQPMacroblockAdjustment,maxQPMacroblockAdjustment];maskedQPofMacroblock=maskedQPofFrame+QPMacroblockAdjustment;clip maskedQPofMacroblock so that it lies within the valid QP valuerange;return maskedQPofMacroblock;}在以上函數(shù)中,βF和βMB可以是預(yù)先設(shè)定的常數(shù)或適合于本地統(tǒng)計(jì)。
IV.多通路編碼圖1展示了過程100,其概念性地舉例說明了本發(fā)明一些實(shí)施例的多通路編碼方法。正如該圖所示,過程100有三個(gè)階段,在以下三個(gè)部分中描述。
A.分析和初始QP選擇如圖1所示,過程100最初在多通路編碼過程的初始分析階段(即,在通路0期間)計(jì)算參考屏蔽強(qiáng)度(φR(1))的初始值和標(biāo)稱量化參數(shù)(QPNom(1))的初始值(步驟105)。初始參考強(qiáng)度(φR(1))在第一搜索階段期間使用,而初始標(biāo)稱量化參數(shù)(QPNom(1))在第一搜索階段的第一通路期間使用(即,多通路編碼過程的通路1期間)。
在通路0之初,φR(0)可以是某些任意值或基于實(shí)驗(yàn)結(jié)果選擇的值(例如,φR值的典型范圍的中間值)。在序列的分析期間,針對(duì)每幀計(jì)算屏蔽強(qiáng)度φF(k),然后在通路0的結(jié)束設(shè)置參考屏蔽強(qiáng)度φR(1)等于avg(φF(k))。對(duì)參考屏蔽強(qiáng)度φR的其他判定也是可能的。例如,它可以計(jì)算作為值φF(k)的中間值或其他算術(shù)函數(shù),例如值φF(k)的加權(quán)平均值。
存在使用變化的復(fù)雜度進(jìn)行初始QP選擇的幾種方法。例如,初始標(biāo)稱QP可以選擇為如任意值(例如26)。可選的,可以基于編碼實(shí)驗(yàn)選擇已知的值以針對(duì)目標(biāo)比特率生成可接受的質(zhì)量。
初始標(biāo)稱QP值也可以基于空間解決方案、幀速率、空間/時(shí)間復(fù)雜度、以及目標(biāo)比特率從查詢表中選擇。在一些實(shí)施例中,該初始標(biāo)稱QP值使用依賴于這些參數(shù)中的每一個(gè)的距離度量從表中選擇,或者它可以利用這些參數(shù)的加權(quán)距離度量選擇。
該初始標(biāo)稱QP值還可以如它們?cè)谑褂盟俾士刂破骺焖倬幋a期間(無屏蔽)所選擇的那樣設(shè)置為幀QP值的調(diào)整平均值,其中該平均值已經(jīng)基于通路0的比特率百分比速率誤差E0調(diào)整。類似的,初始標(biāo)稱QP也可以設(shè)置為幀QP值的加權(quán)調(diào)整平均值,其中每個(gè)幀的權(quán)重由沒有編碼為跳躍宏塊的宏塊在這個(gè)幀中的百分比確定。可選的,初始標(biāo)稱QP可以如它們?cè)谑褂盟俾士刂破骺焖倬幋a期間(帶屏蔽)所選擇的那樣設(shè)置為幀QP值的調(diào)整平均值或調(diào)整加權(quán)平均值,同時(shí)考慮了參考屏蔽強(qiáng)度從φR(0)改變到φR(1)的效應(yīng)。
B.快速搜索階段標(biāo)稱QP調(diào)整步驟105之后,多通路編碼過程100進(jìn)入第一搜索階段。在第一搜索階段,過程100執(zhí)行序列的N1編碼,其中N1代表通過第一搜索階段的通路數(shù)。在第一階段的每個(gè)通路期間,該過程使用具有恒定參考屏蔽強(qiáng)度的變動(dòng)標(biāo)稱量化參數(shù)。
特別的,在第一級(jí)搜索階段的每個(gè)通路p期間,過程100計(jì)算(步驟107)每個(gè)幀k的特定量化參數(shù)MQPp(k),以及計(jì)算幀k內(nèi)的每個(gè)單獨(dú)宏塊m的特定量化參數(shù)MQPMB(p)(k,m)。給定標(biāo)稱量化參數(shù)QPNom(p)和參考屏蔽強(qiáng)度φR(p)的參數(shù)MQPp(k)和MQPMB(p)(k,m)的計(jì)算在第III部分中描述(其中MQPp(k)和MQPMB(p)(k,m)是通過利用函數(shù)CalcMQP和CalcMQPforMB計(jì)算的,這在以上的部分III中描述)。在通過步驟107的第一通路(即,通路1)中,標(biāo)稱量化參數(shù)和第一階段參考屏蔽強(qiáng)度為參數(shù)QPNom(1)和參考屏蔽強(qiáng)度φR(1),它們?cè)诔醪椒治鲭A段105期間計(jì)算。
步驟107之后,該過程基于在步驟107計(jì)算的量化參數(shù)值編碼該序列(步驟110)。接下來,編碼過程100判斷其是否應(yīng)該結(jié)束(步驟115)。不同的實(shí)施例具有結(jié)束整個(gè)編碼過程的不同條件。完全結(jié)束多通路編碼過程的退出條件的例子包括●|Ep|<ε,其中ε為最終比特率中的誤差容許范圍。
●QPNom(p)為QP值有效范圍的上邊界和下邊界。
●通路的數(shù)量超過了允許的最大通路數(shù)PMAX。
一些實(shí)施例可能使用所有的這些退出條件,而其他實(shí)施例可能僅使用它們中的一些。然而其他的實(shí)施例可能使用其他的用于結(jié)束編碼過程的退出條件。
當(dāng)多通路編碼過程決定結(jié)束(步驟115),過程100省略第二搜索階段并轉(zhuǎn)移到步驟145。在步驟145,該過程保存來自最后的通路p的比特流作為最終結(jié)果,然后結(jié)束。
另一方面,當(dāng)該過程確定(步驟115)不能結(jié)束,其接著確定(步驟120)是否應(yīng)當(dāng)結(jié)束第一搜索階段。同樣,不同的實(shí)施例具有結(jié)束第一搜索階段的不同條件。結(jié)束多通路編碼過程的第一搜索階段的退出條件的例子包括●QPNom(p+1)與QPNom(q)相同,并且q≤p,(在此情況下,比特率中的誤差不能再通過修改標(biāo)稱QP進(jìn)一步降低)。
●|Ep|<εC,εC>ε,其中εC為第一搜索階段的比特率中的誤差允許范圍。
●通路的數(shù)量已超過了P1,其中P1小于PMAX。
●通路的數(shù)量已超過了P2,其小于P1,并且|Ep|<ε2,ε2>εC。
一些實(shí)施例可能使用所有這些退出條件,而其實(shí)施例可能僅使用它們中的一些。然而其他的實(shí)施例可能使用其他的用于結(jié)束第一搜索階段的退出條件。
當(dāng)多通路編碼過程決定(步驟120)結(jié)束第一搜索階段時(shí),過程100繼續(xù)到第二搜索階段,其在以下部分中描述。另一方面,當(dāng)過程確定(步驟120)其不應(yīng)結(jié)束第一搜索階段時(shí),它就在第一搜索階段中更新(步驟125)下一通路的標(biāo)稱QP(即,定義QPNom(p+1))。在一些實(shí)施例中,標(biāo)稱QPNom(p+1)如下更新。在通路1的結(jié)束,這些實(shí)施例定義QPNom(p+1)=QPNom(p)+χEp,其中χ為常數(shù)。在從通路2到通路N1的每個(gè)通路的結(jié)束,這些
InterpExtrap(x,x1,x2,y1,y2){if(x2?。絰1)y=y(tǒng)1+(x-x1)*(y2-y1)/(x2-x1);else y=y(tǒng)1;return y;}標(biāo)稱QP值通常四舍五入為整數(shù)值并限制在QP值的有效范圍之內(nèi)。本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到其他實(shí)施例可以以不同于以上所述的方法來計(jì)算標(biāo)稱QPNom(p+1)。
在步驟125之后,該過程轉(zhuǎn)移回到步驟107以開始下一通路(即,p=p+1),并且對(duì)于這個(gè)通路,針對(duì)當(dāng)前通路p計(jì)算每個(gè)幀k的特定量化參數(shù)MQPp(k),以及幀k內(nèi)的每個(gè)單獨(dú)的宏塊m的特定量化參數(shù)MQPMB(p)(k,m)(步驟107)。接下來,該過程基于這些新近計(jì)算的量化參數(shù)編碼幀序列(步驟110)。該過程接著由步驟110轉(zhuǎn)移步驟115,其已在上面描述。
C.第二搜索階段參考屏蔽強(qiáng)度調(diào)整當(dāng)過程100確定其應(yīng)當(dāng)結(jié)束第一搜索階段時(shí)(步驟120),它轉(zhuǎn)移到步驟130。在第二搜索階段,過程100執(zhí)行序列的N2編碼,在此N2代表通過第二搜索階段的通路數(shù)。在每個(gè)通路期間,該過程使用相同的標(biāo)稱量化參數(shù)和變化的參考屏蔽強(qiáng)度。
在步驟130,過程100計(jì)算下一通路,即通路p+1,其為通路N1+1,的參考屏蔽強(qiáng)度φR(p+1)。在通路N1+1中,過程100在步驟135中編碼幀序列。不同的實(shí)施例以不同的方式在通路p的結(jié)束計(jì)算參考屏蔽強(qiáng)度φR(p+1)(步驟130)。以下描述了兩種可選的實(shí)現(xiàn)方法。
一些實(shí)施例基于來自先前的通路的比特率中的誤差和φR的值計(jì)算參考屏蔽強(qiáng)度φR(p)。例如,在通路N1的結(jié)束,一些實(shí)施例定義φR(N1+1)=φR(N1)+φR(N1)×Konst×EN1.
在通路N1+m的結(jié)束處,此處m為大于1的整數(shù),一些實(shí)施例定義φR(N1+m)=InterpExtrap(0,EN1+m-2,EN1+m-1,φR(N1+m-2),φR(N1+m-1))或者,一些實(shí)施例定義φR(N1+m)=InterpExtrap(0,EN1+m-q2,EN1+m-q1,φR(N1+m-q2),φR(N1+m-q1))其中q1和q2為之前給出最優(yōu)誤差的通路。
其他實(shí)施例通過利用AMQP在第二搜索階段在每個(gè)通路的結(jié)束計(jì)算參考屏蔽強(qiáng)度,其在第I部分中定義。以下將參考函數(shù)GetAvgMaskedQP的偽碼描述給定標(biāo)稱QP和φR的一些值用于計(jì)算AMQP的一種方式
GetAvgMaskedQP(nominalQP,φR){sum=0;for(k=0;k<numframes;k++){MQP(k)=maskedQP for frame k calculated usingCalcMQP(nominalQP,φR,φF(k),maxQPFrameAdjustment);//seeabovesum+=MQP(k);}return sum/numframes;}一些使用AMQP的實(shí)施例基于來自之前通路的比特率中的誤差和AMQP的值計(jì)算通路p+1所期望的AMQP。對(duì)應(yīng)于這個(gè)AMQP的φR(p+1)于是通過由函數(shù)Search(AMQP(p+1),φR(p))給出的搜索過程而找到,該函數(shù)的偽碼在本部分的最后給出。
例如,一些實(shí)施例在通路N1的結(jié)束計(jì)算AMQPN1+1,其中AMQPN1+1=InterpExtrap(0,EN1-1,EN1,AMQPN1-1,AMQPN1),when N1>1,并且AMQPN1+1=AMQPN1,when N1=1,這些實(shí)施例于是定義φR(N1+1)=Search(AMQPN1+1,φR(N1))在通路N1+m(其中m為大于1的整數(shù))的結(jié)束,一些實(shí)施例定義AMQPN1+m=InterpExtrap(0,EN1+m-2,EN1+m-1,AMQPN1+m-2,AMQPN1+m-1),以及φR(N1+m)=Search(AMQPN1+m,φR(N1+m-1))給定所期望的AMQP和φR的一些默認(rèn)值,對(duì)應(yīng)于所期望的AMQP的φR可以利用Search函數(shù)找到,該函數(shù)在一些實(shí)施例中具有以下偽碼
Search(AMQP,φR){interpolateSuccess=True; //until set otherwiserefLumaSad0=refLumaSad1=refLumaSadx=φR;errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSadx)-AMQP;if(errorInAvgMaskedQp>0){ntimes=0;do{ntimes++;refLumaSad0=(refLumaSad0*1.1);errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSad0)-amqp;}while(errorInAvgMaskedQp>0&&ntimes<10);if(ntimes>=10)interpolateSuccess=False;}else{ //errorInAvgMaskedQp<0ntimes=0;do{ntimes++;refLumaSad1=(refLumaSad1*0.9);errorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSad1)-amqp;}while(errorInAvgMaskedQp<0&&ntimes<10);if(ntimes>=10)interpolateSuccess=False;}ntimes=0;do{ntimes++;refLumaSadx=(refLumaSad0+refLumaSad1)/2;//simple successiveapproximationerrorInAvgMaskedQp=GetAvgMaskedQp(nominalQp,refLumaSadx)-AMQP;if(errorInAvgMaskedQp>0)refLumaSad1=refLumaSadx;else refLumaSad0=refLumaSadx;}while(ABS(errorInAvgMaskedQp)>0.05&&ntimes<12);if(ntimes>=12)interpolateSuccess=False;}if(interpolateSuccess)return refLumaSadx;else return φR;}在以上偽碼中,數(shù)字10、12和0.05可以使用適當(dāng)選擇的閾值代替。
在通過編碼幀序列計(jì)算了下一通路(通路p+1)的參考屏蔽強(qiáng)度之后,過程100就轉(zhuǎn)移到步驟132并開始下一個(gè)通路(即,p=p+1)。在每個(gè)編碼通路p期間,對(duì)于每個(gè)幀k和每個(gè)宏塊m,該過程計(jì)算每個(gè)幀k的特定量化參數(shù)MQPp(k)以及幀k中的單獨(dú)宏塊m的特定量化參數(shù)MQPMB(p)(k,m)(步驟132)。給定標(biāo)稱量化參數(shù)QPNom (p)和參考屏蔽強(qiáng)度φR(p)的參數(shù)MQPp(k)和MQPMB(p)(k,m)的計(jì)算在第III部分中描述(其中MQPp(k)和MQPMB(p)(k,m)通過利用函數(shù)CalcMQP和CalcMQPforMB計(jì)算,這在以上第III部分中描述)。在通過步驟132的第一通路期間,參考屏蔽強(qiáng)度正是在步驟130處計(jì)算的數(shù)值。同樣,在第二搜索階段期間,標(biāo)稱QP在整個(gè)第二搜索階段保持為常數(shù)。在一些實(shí)施例中,第二搜索階段之內(nèi)的標(biāo)稱QP為第一搜索階段期間由最優(yōu)編碼解決方案(即,在具有最低比特率誤差的編碼解決方案中)所得到的標(biāo)稱QP。
在步驟132之后,該過程利用在步驟130處計(jì)算的量化參數(shù)編碼幀序列(步驟135)。在步驟135之后,該過程確定(步驟140)是否應(yīng)當(dāng)結(jié)束第二搜索階段。不同的實(shí)施例使用不同的條件用于在通路p的結(jié)束處結(jié)束第一搜索階段。這種條件的例子為●|Ep|<ε,其中ε為最終比特率中的誤差容許范圍。
●通路的數(shù)量超過了所允許的最大通路數(shù)PMAX。
一些實(shí)施例可能使用所有的這些退出條件,而其他實(shí)施例可能僅使用它們中的一些。然而其他的實(shí)施例可能使用其他的用于結(jié)束第一搜索階段的退出條件。
當(dāng)過程100確定(步驟140)不應(yīng)當(dāng)結(jié)束第二搜索階段時(shí),其返回到步驟130以重新計(jì)算下一編碼通路的參考屏蔽強(qiáng)度。該過程從步驟130轉(zhuǎn)移到步驟132以計(jì)算量化參數(shù),然后轉(zhuǎn)移到步驟135以通過利用新近計(jì)算的量化參數(shù)編碼視頻序列。
另一方面,當(dāng)該過程決定(步驟140)結(jié)束第二搜索階段時(shí),則其轉(zhuǎn)移到步驟145。在步驟145,過程100保存來自最后一個(gè)通路p的比特流作為最終結(jié)果,然后就結(jié)束。
V.解碼器輸入緩沖區(qū)下溢控制本發(fā)明的一些實(shí)施例提供對(duì)目標(biāo)比特率檢查視頻序列的各種編碼的多通路編碼過程,為了識(shí)別有關(guān)由解碼器使用的輸入緩沖區(qū)的使用的最優(yōu)編碼方案。在一些實(shí)施例中,這種多通路過程遵循圖1的多通路編碼過程100。
由于各種因素的變化,例如已編碼圖像的大小、解碼器接收已編碼數(shù)據(jù)所使用的速度、解碼器緩沖區(qū)的大小、解碼過程的速度等方面的變動(dòng),解碼器輸入緩沖區(qū)(“解碼器緩沖區(qū)”)的使用在解碼已編碼圖片序列(例如,幀)的過程中在一定程度上變動(dòng)。
解碼器緩沖區(qū)下溢在圖像已經(jīng)完全到達(dá)解碼器端之前解碼器準(zhǔn)備解碼下一圖像的情況下頗為重要。一些實(shí)施例的多通路編碼器模擬解碼器緩沖區(qū)并重新編碼序列中所選擇的片段以防止解碼器緩沖區(qū)下溢。
圖2概念性舉例說明了本發(fā)明一些實(shí)施例的編碼系統(tǒng)200。該系統(tǒng)包括解碼器205和編碼器210。在該圖中,編碼器210具有多個(gè)使其能夠模擬解碼器205的類似組件的操作的組件。
特別的,解碼器205具有輸入緩沖區(qū)215、解碼過程220、以及輸出緩沖區(qū)225。解碼器210通過維護(hù)模擬解碼器輸入緩沖區(qū)230、模擬解碼過程235、以及模擬解碼器輸出緩沖區(qū)240來模擬這些模塊。為了不妨礙本發(fā)明的描述,簡(jiǎn)化圖2以將解碼過程220和編碼過程245顯示為單個(gè)的塊。同樣,在一些實(shí)施例中,沒有利用模擬解碼過程235和模擬解碼器輸出緩沖區(qū)240用于緩沖區(qū)下溢管理,從而在本圖中僅出于舉例而示意。
解碼器維護(hù)輸入緩沖區(qū)215以消除輸入的編碼圖像的速率和到達(dá)時(shí)間的變化。如果解碼器用完了數(shù)據(jù)(下溢)或填滿了輸入緩沖區(qū)(上溢)的話,就會(huì)有例如圖片解碼中斷或輸入的數(shù)據(jù)被丟棄的可視的解碼中斷。這兩種情況都是不期望的。
為了消除下溢條件,在一些實(shí)施例中編碼器210首先編碼圖像序列并將它們存儲(chǔ)到存儲(chǔ)器255。例如,編碼器210使用多通路編碼過程100以獲取圖像序列的第一編碼。然后它模擬解碼器輸入緩沖區(qū)215并且重新編碼可能導(dǎo)致緩沖區(qū)下溢的圖像。在所有緩沖區(qū)下溢條件都消除之后,通過連接255將重新編碼的圖像提供給解碼器205,連接255可以是網(wǎng)絡(luò)連接(因特網(wǎng)、電纜、PSTN線路等),非網(wǎng)絡(luò)直接連接,媒體(DVD等)等。
圖3舉例說明了一些實(shí)施例的編碼器的編碼過程300。該過程試圖找到不會(huì)導(dǎo)致解碼器緩沖區(qū)下溢的最優(yōu)編碼方案。如圖3所示,過程300識(shí)別(步驟302)滿足所期望目標(biāo)比特率(例如,序列中滿足所期望平均目標(biāo)比特率的每個(gè)圖像的平均比特率)的圖像序列的第一編碼。例如,過程300可以使用(步驟302)多通路編碼過程100以獲取圖像序列的第一編碼。
在步驟302之后,編碼過程300通過考慮各種因素,如連接速度(即,解碼器用于接收編碼數(shù)據(jù)的速度)、解碼器輸入緩沖區(qū)的大小、所編碼圖像的大小、解碼處理速度等,的變化模擬解碼器輸入緩沖區(qū)215(步驟305)。在步驟310,過程300確定所編碼圖像的任何片段是否會(huì)導(dǎo)致解碼器輸入緩沖區(qū)下溢。編碼器用于確定(并隨后消除)下溢條件的技術(shù)在下面進(jìn)一步描述。
如果過程300確定(步驟310)所編碼圖像沒有造成下溢條件,該過程結(jié)束。另一方面,如果過程300確定(步驟310)在所編碼圖像的任何片段中存在緩沖區(qū)下溢條件的話,其就基于來自先前編碼通路的這些參數(shù)的值改進(jìn)編碼參數(shù)(步驟315)。然后該過程重新編碼(步驟320)具有下溢的片段以減小該片段的比特大小。在重新編碼該片段之后,過程300檢查(步驟325)該片段以確定是否消除了下溢條件。
當(dāng)該過程確定(步驟325)該片段仍會(huì)導(dǎo)致下溢時(shí),過程300就轉(zhuǎn)移到步驟315以進(jìn)一步改進(jìn)編碼參數(shù)以消除下溢??蛇x的,當(dāng)該過程確定(步驟325)該片段不會(huì)導(dǎo)致任何下溢時(shí),該過程就指定(步驟330)用于重新檢查并重新編碼該視頻序列的起始點(diǎn)作為步驟320的上一次迭代中重新編碼的片段的結(jié)束之后的幀。接下來,在步驟335,該過程重新編碼在步驟330所指定的視頻序列部分,直到(并排除)在步驟315和320指定的下溢片段隨后的第一IDR幀。在步驟335之后,該過程轉(zhuǎn)移回到步驟305以模擬解碼器緩沖區(qū)以確定余下的視頻序列在重新編碼之后是否仍就會(huì)導(dǎo)致緩沖區(qū)下溢。以上描述了過程300從步驟305開始的流程。
A.確定已編碼圖像序列中的下溢片段如上所述,編碼器模擬解碼器緩沖區(qū)條件以確定已編碼或重新編碼的圖像的序列中的任何片段是否會(huì)導(dǎo)致解碼器緩沖區(qū)中的下溢。在一些實(shí)施例中,編碼器使用考慮了編碼圖像的大小、諸如帶寬的網(wǎng)絡(luò)條件、解碼器因素(例如,輸入緩沖區(qū)大小,移除圖像的初始和標(biāo)稱時(shí)間,解碼處理時(shí)間,每個(gè)圖像的顯示時(shí)間等)的模擬模型。
在一些實(shí)施例中,使用MPEG-4AVC編碼圖片緩沖區(qū)(CPB)模型模擬解碼器輸入緩沖區(qū)條件。CPB是在MPEG-4 H.264標(biāo)準(zhǔn)中使用的術(shù)語,指理想基準(zhǔn)解碼器(HRD)的模擬輸入緩沖區(qū)。HRD為指定編碼過程可能產(chǎn)生的合格數(shù)據(jù)流的可變性方面的限制的理想解碼器模型。CPB模型是眾所周知的,并且出于方便在以下部分1中描述。CPB和HRD的更為詳細(xì)的描述可以在ITU-T推薦草案和International Standard of Joint Video Specification最終草案(ITU-TRec.H.264/ISO/IEC 14496-10 AVC)中找到。
1.使用CPB模型模擬解碼器緩沖區(qū)以下段落描述了在一些實(shí)施例中是如何使用CPB模型模擬解碼器輸入緩沖區(qū)的。圖像n的第一個(gè)比特開始進(jìn)入CPB的時(shí)間被稱為初始到達(dá)時(shí)間tai(n),其推導(dǎo)如下●tai(0)=0,當(dāng)圖像為第一圖像時(shí)(即,圖像0);●tai(n)=Max(taf(n-1),tai,earliest(n)),當(dāng)圖像不是正編碼或重新編碼的序列中的第一圖像時(shí)(即,n>0)。
在以上公式中●tai,earliest(n)=tr,n(n)-initial_cpb_removal_delay,其中tr,n(n)為如下面所指定的圖像n從CPB中移除的標(biāo)稱移除時(shí)間,而initial_cpb_removal_delay為初始緩沖周期。
圖像n的最終到達(dá)時(shí)間通過下式推導(dǎo)
taf(n)=tai(n)+b(n)/BitRate,其中b(n)為圖像n以比特為單位的大小。
在一些實(shí)施例中,編碼器如下所述進(jìn)行自身標(biāo)稱移除時(shí)間的計(jì)算,而非如H.264規(guī)范中的那樣從比特流的可選部分讀取。對(duì)于圖像0,圖像從CPB移除的標(biāo)稱移除時(shí)間指定為tr,n(0)=initial_cpb_removal_delay對(duì)于圖像n(n>0),圖像從CPB移除的標(biāo)稱移除時(shí)間指定為tr,n(n)=tr,n(0)+sumi=0 to n-1(ti)其中tr,n(n)為圖像n的標(biāo)稱移除時(shí)間,而ti為圖片i的顯示持續(xù)時(shí)間。
圖像n的移除時(shí)間如下指定●tr(n)=tr,n(n),當(dāng)tr,n(n)>=taf(n)時(shí),●tr(n)=taf(n),當(dāng)tr,n(n)<taf(n)時(shí)后一種情況指示圖像n的大小b(n)非常大以至于它阻止了在標(biāo)稱移除時(shí)間時(shí)移除。
2.下溢片段的檢測(cè)如在前面的部分中的描述,編碼器能夠模擬解碼器輸入緩沖區(qū)狀態(tài)并在立即給定的時(shí)間瞬間獲取緩沖區(qū)中的比特?cái)?shù)量??蛇x的,編碼器能夠跟蹤每個(gè)單獨(dú)的圖像是如何通過其標(biāo)稱移除時(shí)間與最終到達(dá)時(shí)間之間的差異(即,tb(n)=tr,n(n)-taf(n))來改變解碼器輸入緩沖區(qū)狀態(tài)的。當(dāng)tb(n)小于0時(shí),緩沖區(qū)就會(huì)在時(shí)間瞬間tr,n(n)和taf(n)之間,并且可能會(huì)在tr,n(n)之前和taf(n)之后遭遇下溢。
通過測(cè)試tb(n)是否小于0能夠容易地發(fā)現(xiàn)直接陷入下溢的圖像。然而,tb(n)小于0的圖像并非必然導(dǎo)致下溢,反之導(dǎo)致下溢的圖像的tb(n)不一定小于0。一些實(shí)施例通過連續(xù)不停地耗盡解碼器輸入緩沖區(qū)直至下溢達(dá)到其最低點(diǎn)將下溢片段定義為導(dǎo)致下溢的連續(xù)圖像(以解碼順序)的伸展。
圖4為一些實(shí)施例中圖像tb(n)與圖像數(shù)量的標(biāo)稱移除時(shí)間與最終到達(dá)時(shí)間之間的差別的曲線圖。該曲線針對(duì)1500個(gè)編碼圖像序列而繪制。圖4a示意了以箭頭標(biāo)記其開始和結(jié)束的下溢片段。注意圖4a中在第一下溢片段之后還發(fā)生了另外一個(gè)下溢片段,出于簡(jiǎn)化沒有對(duì)其使用箭頭明顯標(biāo)注。
圖5舉例說明了編碼器用于執(zhí)行步驟305處的下溢檢測(cè)操作的過程500。過程500首先通過如上述的解釋模擬解碼器輸入緩沖區(qū)條件確定(步驟505)每個(gè)圖像的最終到達(dá)時(shí)間taf和標(biāo)稱移除時(shí)間tr,n。注意,由于該過程在緩沖區(qū)下溢管理的迭代過程中可能被稱為若干時(shí)間,其接收?qǐng)D像號(hào)作為起始點(diǎn)并從該給定的起始點(diǎn)開始檢查圖像序列。顯而易見的是,對(duì)于第一次迭代,該起始點(diǎn)為序列中的第一個(gè)圖像。
在步驟510,過程500通過解碼器將解碼器輸入緩沖區(qū)處的每個(gè)圖像的最終到達(dá)時(shí)間與該圖像的標(biāo)稱移除時(shí)間相比較。如果該過程確定在標(biāo)稱移除時(shí)間之后沒有具有最終到達(dá)時(shí)間的圖像(即,不存在下溢條件),該過程就退出。另一方面,當(dāng)找到了其最終到達(dá)時(shí)間在標(biāo)稱移除時(shí)間之后的圖像時(shí),該過程就確定存在下溢并轉(zhuǎn)移到步驟515以識(shí)別下溢片段。
在步驟515,過程500將下溢片段識(shí)別為解碼器緩沖區(qū)開始連續(xù)耗盡直至下一全局最小值的圖像的片段,在此下溢條件開始改進(jìn)(即,tb(n)在圖像伸展期間不會(huì)更多的負(fù)值)。過程500于是退出。在一些實(shí)施例中,下溢片段的開始被進(jìn)一步調(diào)整為以I幀開始,其是標(biāo)記一組相關(guān)內(nèi)編碼圖像的開始的內(nèi)編碼圖像。一旦識(shí)別出一個(gè)或多個(gè)導(dǎo)致下溢的片段,編碼器就繼續(xù)消除下溢。以下部分B描述了單個(gè)片段情況下(即,當(dāng)編碼整個(gè)圖像序列僅包含單個(gè)下溢片段時(shí))下溢的消除。然后部分C描述用于多個(gè)片段下溢的情況下的下溢消除。
B.單個(gè)片段下溢消除參考圖4(a),如果tb(n)與n的曲線具有下降斜率僅穿過n軸一次的話,那么在整個(gè)序列中就僅有一個(gè)下溢片段。該下溢片段開始于先前零交叉點(diǎn)的最近的本地最大值處,結(jié)束于零交叉點(diǎn)與序列結(jié)束之間的下一個(gè)全局最小值點(diǎn)。如果緩沖區(qū)從下溢中恢復(fù)的話,片段的結(jié)束點(diǎn)能夠跟隨具有上升斜率的曲線的另一個(gè)零交叉點(diǎn)。
圖6舉例說明了在一些實(shí)施例中在圖像的單個(gè)片段內(nèi)解碼器用于(步驟315、320和325)消除下溢條件的過程600。在步驟605,過程600通過計(jì)算進(jìn)入到緩沖區(qū)中的輸入比特率的產(chǎn)出和在片段的結(jié)束處找到的最長延遲(例如,最小值tb(n))估算下溢片段內(nèi)要減少的比特總數(shù)(ΔB)。
接著,在步驟610,過程600使用平均屏蔽幀QP(AMQP)以及來自上一編碼通路(或多個(gè)通路)的當(dāng)前片段中的比特總數(shù)估算用于實(shí)現(xiàn)該片段所期望的比特?cái)?shù)的期望的AMQP,BT=B-ΔBp,其中p為該片段的過程600的當(dāng)前迭代次數(shù)。如果該迭代為該特定片段的過程600的首次迭代的話,AMQP和比特的總數(shù)就是在步驟302處所識(shí)別的由初始編碼解決方案推導(dǎo)得到的該片段的AMQP和比特總數(shù)。另一方面,當(dāng)該迭代不是過程600的首次迭代的話,這些參數(shù)就可以由編碼解決方案或在過程600的最后一個(gè)通路或最后多個(gè)通路中獲得的解決方案推導(dǎo)得到。
接下來,在步驟615,過程600基于屏蔽強(qiáng)度φF(n)使用所期望的AMQP修正平均屏蔽幀QP,MQP(n),以便能夠忍受更多屏蔽的圖像得到更多得比特扣除。該過程接著基于在步驟315定義的參數(shù)重新編碼(步驟620)視頻片段。該過程接著檢查(步驟625)該片段以判斷下溢條件是否被消除。圖4(b)舉例說明了在將過程600應(yīng)用于下溢片段以對(duì)其重新編碼之后圖4(a)的下溢條件的消除情況。當(dāng)消除了下溢條件時(shí),該過程就退出。否則,過程轉(zhuǎn)移回到步驟605以進(jìn)一步調(diào)整編碼參數(shù)以減少總比特大小。
C.多下溢片段的下溢消除當(dāng)序列中有多個(gè)下溢片段時(shí),片段的重新編碼改變了所有確保幀的緩沖區(qū)充滿度時(shí)間tb(n)。為了解決修改的緩沖區(qū)條件,編碼器從具有下降斜率的第一個(gè)零交叉點(diǎn)(即,在最低點(diǎn)n處)開始,一次搜索一個(gè)下溢片段。
下溢片段開始于先于該零交叉點(diǎn)的最近的本地最大值處,并結(jié)束于零交叉點(diǎn)和下一零交叉點(diǎn)(或如果沒有更多零交叉點(diǎn)的話在序列的結(jié)束點(diǎn))之間的下一全局最小值處。在找到一個(gè)片段之后,編碼器理想地移除這個(gè)片段內(nèi)的下溢并通過在片段結(jié)束處設(shè)置tb(n)為0以及對(duì)所有序列幀重新進(jìn)行緩沖區(qū)模擬估算更新的緩沖區(qū)充滿度。
編碼器接著利用修改后的緩沖區(qū)充滿度繼續(xù)搜索下一片段。一旦如上所述的識(shí)別了所有的下溢片段,編碼器就導(dǎo)出AMQP并正如在單個(gè)片段的情況下的那樣獨(dú)立于其他片段修改每個(gè)片段的屏蔽幀QP。
普通技術(shù)人員會(huì)認(rèn)識(shí)到可以以不同方式實(shí)現(xiàn)其他的實(shí)施例。例如,一些實(shí)施例不會(huì)識(shí)別多個(gè)導(dǎo)致解碼器的輸入緩沖區(qū)下溢的片段。一些實(shí)施例而是會(huì)如上所述執(zhí)行緩沖區(qū)模擬以識(shí)別導(dǎo)致下溢的第一片段。在識(shí)別這樣的片段之后,這些實(shí)施例就修改該片段以校正那個(gè)片段內(nèi)的下溢條件,然后繼續(xù)執(zhí)行隨后的校正部分的編碼。在編碼了序列的剩余部分之后,這些實(shí)施例將對(duì)下一下溢片段重復(fù)這個(gè)過程。
D.緩沖區(qū)下溢管理的應(yīng)用以上所述的解碼器緩沖區(qū)下溢技術(shù)應(yīng)用于眾多編碼和解碼系統(tǒng)。以下描述了此類系統(tǒng)的多個(gè)例子。
圖7舉例說明了將視頻數(shù)據(jù)流服務(wù)器710與幾臺(tái)客戶端解碼器715-725相連接的網(wǎng)絡(luò)705??蛻舳送ㄟ^具有諸如300Kb/秒和3Mb/秒的不同帶寬的鏈路連接到網(wǎng)絡(luò)705。視頻數(shù)據(jù)流服務(wù)器710控制從編碼器730到客戶端解碼器715-725的編碼視頻圖像流。
流視頻服務(wù)器可以決定使用網(wǎng)絡(luò)中的最低帶寬(即,300Kb/秒)和最小客戶端緩沖區(qū)大小流動(dòng)編碼視頻圖像。在此情況下,流服務(wù)器710僅需要為300Kb/秒的目標(biāo)比特率優(yōu)化的一組編碼的圖像。另一方面,服務(wù)器可以生成并存儲(chǔ)針對(duì)不同帶寬和不同客戶端緩沖區(qū)條件優(yōu)化的不同編碼。
圖8舉例說明了解碼器下溢管理的另一個(gè)應(yīng)用實(shí)例。在這個(gè)例子中,HD-DVD播放器805從已經(jīng)存儲(chǔ)了來自視頻編碼器810的已編碼視頻數(shù)據(jù)的HD-DVD 840接收編碼視頻圖像。HD-DVD播放器805具有輸入緩沖區(qū)815、出于簡(jiǎn)化顯示為一個(gè)部件820的一組解碼模塊、以及輸出緩沖區(qū)825。
播放器805的輸出被發(fā)送到諸如TV 830或計(jì)算機(jī)顯示終端835的顯示裝置。HD-DVD播放器可以具有很高的帶寬,例如29.4Mb/秒。為了在顯示裝置上維持高質(zhì)量的圖像,編碼器確保視頻圖像以某種方式編碼,其中圖像序列中不會(huì)有太大以致不能按時(shí)傳遞到解碼器輸入緩沖區(qū)的片段。
VI.計(jì)算機(jī)系統(tǒng)圖9展示了所實(shí)現(xiàn)的本發(fā)明的一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)系統(tǒng)900包括總線905、處理器910、系統(tǒng)存儲(chǔ)器915、只讀存儲(chǔ)器920、永久存儲(chǔ)裝置925、輸入裝置930、和輸出裝置935??偩€905集中表示所有的系統(tǒng)、外圍設(shè)備、和暢通連接計(jì)算機(jī)系統(tǒng)900的眾多內(nèi)部設(shè)備的芯片集總線。例如,總線905將處理器910與只讀存儲(chǔ)器920、系統(tǒng)存儲(chǔ)器915、和永久存儲(chǔ)器裝置925暢通連接。
為了執(zhí)行本發(fā)明的各個(gè)過程,處理器910從這些各種各樣的存儲(chǔ)單元中檢索要執(zhí)行的指令和要處理的數(shù)據(jù)。只讀存儲(chǔ)器(ROM)920存儲(chǔ)了處理器910和計(jì)算機(jī)系統(tǒng)的其他模塊所需的靜態(tài)數(shù)據(jù)和指令。
另一方面,永久存儲(chǔ)器裝置925為讀-寫存儲(chǔ)器裝置。該裝置是即使是當(dāng)計(jì)算機(jī)系統(tǒng)900關(guān)閉時(shí)也存儲(chǔ)指令和數(shù)據(jù)的非易失存儲(chǔ)器單元。本發(fā)明的一些實(shí)施例使用大容量存儲(chǔ)裝置(如磁盤或光盤及其對(duì)應(yīng)的盤驅(qū)動(dòng)器)作為永久存儲(chǔ)裝置925。
其他的實(shí)施例使用可移動(dòng)存儲(chǔ)裝置(如軟盤或壓縮盤,及其對(duì)應(yīng)的盤驅(qū)動(dòng)器)作為永久存儲(chǔ)裝置。與永久存儲(chǔ)裝置925相類似,系統(tǒng)存儲(chǔ)器915為讀-寫存儲(chǔ)器裝置。然而,與存儲(chǔ)裝置925不同的是,系統(tǒng)存儲(chǔ)器為非永久性讀-寫存儲(chǔ)器,如隨機(jī)存取存儲(chǔ)器。系統(tǒng)存儲(chǔ)器存儲(chǔ)了處理器在運(yùn)行時(shí)間所需的一些指令和數(shù)據(jù)。在一些實(shí)施例中,本發(fā)明的各種處理過程保存在系統(tǒng)存儲(chǔ)器915、永久存儲(chǔ)裝置925、和/或只讀存儲(chǔ)器920中。
總線905還連接到輸入和輸出裝置930和935。輸入裝置使用戶能夠與計(jì)算機(jī)系統(tǒng)溝通信息并選擇到計(jì)算機(jī)系統(tǒng)的命令。輸入裝置930包括字母數(shù)字鍵盤和光標(biāo)控制器。輸出裝置935顯示由計(jì)算機(jī)系統(tǒng)生成的圖像。輸出裝置包括打印機(jī)和顯示設(shè)備,如陰極射線管(CRT)或液晶顯示器(LCD)。
最后,如圖9所示,總線905還通過網(wǎng)絡(luò)適配器(未示出)將計(jì)算機(jī)900與網(wǎng)絡(luò)965相連。在這種方式下,計(jì)算機(jī)可以是計(jì)算機(jī)網(wǎng)絡(luò)(如局域網(wǎng)(“LAN”),廣域網(wǎng)(“WAN”),或內(nèi)部網(wǎng))的一部分或網(wǎng)絡(luò)(諸如因特網(wǎng))的網(wǎng)絡(luò)的一部分。計(jì)算機(jī)系統(tǒng)900的任何或所有組件都可以結(jié)合本發(fā)明使用。然而,本領(lǐng)域普通技術(shù)人員將理解的是,也可以結(jié)合本發(fā)明使用任何其他系統(tǒng)配置。
盡管已經(jīng)參考各種特定細(xì)節(jié)描述了本發(fā)明,本領(lǐng)域普通技術(shù)人員將認(rèn)識(shí)到的是,可以不偏離本發(fā)明的精神而以其他指定的方式實(shí)施本發(fā)明。例如,不是使用模擬解碼器輸入緩沖區(qū)的H264方法,也可以使用考慮到緩沖區(qū)大小、緩沖區(qū)中圖像的到達(dá)和移除時(shí)間、以及圖像的解碼和顯示次數(shù)的其他模擬方法。
以上所述的多個(gè)實(shí)施例計(jì)算了平均移除SAD以獲得宏塊中圖像變化的指示。然而,其他實(shí)施例可以以不同的方式識(shí)別圖像變化。例如,一些實(shí)施例可以預(yù)測(cè)宏塊的像素的期望圖像值。這些實(shí)施例接著通過從宏塊的像素的亮度值中扣除該預(yù)測(cè)值,并加上該扣除部分的絕對(duì)值生成宏塊SAD。在一些實(shí)施例中,該預(yù)測(cè)值不僅基于宏塊內(nèi)的像素值,而且基于一個(gè)或多個(gè)相鄰宏塊內(nèi)的像素值。
同樣,以上所述的實(shí)施例直接使用推導(dǎo)得出的空間和時(shí)間屏蔽值。其他的實(shí)施例為了挑出視頻圖像之中連續(xù)空間屏蔽值和/或連續(xù)時(shí)間屏蔽值的總體趨勢(shì)而在使用它們之前對(duì)這些值應(yīng)用平滑過濾。由此,本領(lǐng)域內(nèi)普通技術(shù)人員將理解的是,本發(fā)明并不局限于前面所舉例的細(xì)節(jié)。
權(quán)利要求
1.一種編碼多個(gè)圖像的方法,所述方法包括a)為編碼所述圖像定義標(biāo)稱量化參數(shù);b)基于所述標(biāo)稱量化參數(shù),為至少一個(gè)圖像推導(dǎo)至少一個(gè)特定于圖像的量化參數(shù);c)基于所述特定于圖像的量化參數(shù),編碼所述圖像;以及d)迭代地重復(fù)所述定義、推導(dǎo)和編碼操作以優(yōu)化所述編碼。
2.根據(jù)權(quán)利要求1的方法,還包括a)基于所述標(biāo)稱量化參數(shù),推導(dǎo)多個(gè)圖像的多個(gè)特定于圖像的量化參數(shù);b)基于所述特定于圖像的量化參數(shù),編碼所述圖像;以及c)重復(fù)所述定義、推導(dǎo)和編碼操作以優(yōu)化所述編碼。
3.根據(jù)權(quán)利要求1的方法,還包括當(dāng)編碼操作滿足一組終結(jié)準(zhǔn)則時(shí)停止所述迭代。
4.根據(jù)權(quán)利要求3的方法,其中所述終結(jié)準(zhǔn)則組包括所述圖像的可接受編碼的識(shí)別。
5.根據(jù)權(quán)利要求4的方法,其中所述圖像的可接受編碼為特定目標(biāo)比特率范圍內(nèi)的圖像的編碼。
6.一種編碼多個(gè)圖像的方法,所述方法包括a)識(shí)別多個(gè)圖像屬性,每個(gè)特定的圖像屬性量化特定圖像的至少特定部分的復(fù)雜度;b)識(shí)別量化所述多個(gè)圖像的復(fù)雜度的參考屬性;b)基于所述識(shí)別的圖像屬性、參考屬性和所述標(biāo)稱量化參數(shù),識(shí)別用于編碼所述多個(gè)圖像的量化參數(shù);c)基于所述識(shí)別的量化參數(shù),編碼所述多個(gè)圖像;以及d)迭代地執(zhí)行所述識(shí)別和編碼操作以優(yōu)化所述編碼,其中多次不同的迭代使用多個(gè)不同的參考屬性。
7.根據(jù)權(quán)利要求6的方法,其中多個(gè)所述屬性為每個(gè)圖像的至少一部分的視覺掩蔽強(qiáng)度,所述視覺掩蔽強(qiáng)度用于估算在已經(jīng)根據(jù)所述方法編碼并隨后解碼所述視頻序列之后,不會(huì)被所述視頻序列的觀察者所察覺的編碼人工因素的數(shù)量。
8.根據(jù)權(quán)利要求6的方法,其中多個(gè)所述屬性為每個(gè)圖像的至少一部分的視覺掩蔽強(qiáng)度,其中用于圖像的一部分的視覺掩蔽強(qiáng)度量化所述部分的圖像的復(fù)雜度,其中在量化圖像的一部分的復(fù)雜度的過程中,所述視覺掩蔽強(qiáng)度提供所述數(shù)量的壓縮人工因素的指示,其中所述人工因素可在所述圖像解碼之后,在所述編碼圖像中無需可見失真而根據(jù)編碼生成。
9.一種存儲(chǔ)用于編碼多個(gè)圖像的計(jì)算機(jī)程序的計(jì)算機(jī)可讀媒體,所述計(jì)算機(jī)程序包括指令組,用于a)為編碼所述圖像定義標(biāo)稱量化參數(shù);b)基于所述標(biāo)稱量化參數(shù),為至少一個(gè)圖像推導(dǎo)至少一個(gè)特定于圖像的量化參數(shù);c)基于所述特定于圖像的量化參數(shù),編碼所述圖像;以及d)迭代地重復(fù)所述定義、推導(dǎo)和編碼操作以優(yōu)化所述編碼。
10.根據(jù)權(quán)利要求18的計(jì)算機(jī)可讀媒體,其中所述計(jì)算機(jī)程序還包括指令組,用于a)基于所述標(biāo)稱量化參數(shù),推導(dǎo)多個(gè)圖像的多個(gè)特定于圖像的量化參數(shù);b)基于所述特定于圖像的量化參數(shù),編碼所述圖像;以及c)重復(fù)所述定義、推導(dǎo)和編碼操作以優(yōu)化所述編碼。
11.根據(jù)權(quán)利要求9的計(jì)算機(jī)可讀媒體,還包括用于當(dāng)編碼操作滿足一組終結(jié)準(zhǔn)則時(shí)停止所述迭代的一組指令。
12.根據(jù)權(quán)利要求11的計(jì)算機(jī)可讀媒體,其中所述終結(jié)準(zhǔn)則組包括所述圖像的可接受編碼的識(shí)別。
13.根據(jù)權(quán)利要求12的計(jì)算機(jī)可讀媒體,其中所述圖像的可接受編碼為特定的目標(biāo)比特率范圍內(nèi)的圖像的編碼。
14.一種編碼視頻圖像序列的方法,所述方法包括a)接收所述視頻圖像序列;b)迭代地檢查所述視頻圖像序列的不同編碼方案,以識(shí)別優(yōu)化圖像質(zhì)量同時(shí)滿足目標(biāo)比特率且滿足一組限制的編碼方案,所述限制組考慮通過用于解碼所述編碼視頻序列的假想?yún)⒖季幋a器的輸入緩沖區(qū)的編碼數(shù)據(jù)流。
15.根據(jù)權(quán)利要求14的方法,其中所述迭代地檢查包括當(dāng)在處理所述視頻序列內(nèi)的任意一組圖像的編碼方案時(shí),為每個(gè)編碼方案確定所述假想?yún)⒖季幋a器是否下溢。
16.根據(jù)權(quán)利要求14的方法,其中不同編碼的所述迭代檢查包括a)模擬假想?yún)⒖季幋a器的輸入緩沖區(qū)條件;b)利用所述模擬選擇比特?cái)?shù)以優(yōu)化圖像質(zhì)量,同時(shí)最大化所述假想?yún)⒖季幋a器上的輸入緩沖區(qū)的使用;c)重新編碼所述編碼視頻圖像以實(shí)現(xiàn)所述優(yōu)化的緩沖區(qū)使用;以及d)迭代地執(zhí)行所述模擬、利用和重新編碼,直至識(shí)別出最優(yōu)的編碼方案。
17.根據(jù)權(quán)利要求16的方法,其中模擬所述假想?yún)⒖季幋a器輸入緩沖區(qū)條件還包括考慮所述假想?yún)⒖季幋a器接收編碼數(shù)據(jù)的速率。
18.根據(jù)權(quán)利要求16的方法,其中模擬所述假想?yún)⒖季幋a器輸入緩沖區(qū)條件還包括考慮所述假想?yún)⒖季幋a器輸入緩沖區(qū)的大小。
19.根據(jù)權(quán)利要求16的方法,其中模擬所述假想?yún)⒖季幋a器輸入緩沖區(qū)條件還包括考慮來自所述假想?yún)⒖季幋a器的輸入緩沖區(qū)的初始移除延遲。
20.根據(jù)權(quán)利要求14的方法,還包括a)在所述迭代檢查之前,識(shí)別不基于與所述緩沖區(qū)流有關(guān)的所述限制組的初始編碼方案;以及b)利用所述初始編碼方案,開始所述迭代檢查中的第一檢查。
21.一種存儲(chǔ)計(jì)算機(jī)程序的計(jì)算機(jī)可讀媒體,所述計(jì)算機(jī)程序用于在具有帶輸入緩沖區(qū)的假想?yún)⒖季幋a器的系統(tǒng)中編碼視頻圖像序列,所述計(jì)算機(jī)程序包括指令組,用于a)接收所述視頻圖像序列;b)迭代地檢查所述視頻圖像序列的不同編碼方案,以識(shí)別優(yōu)化圖像質(zhì)量同時(shí)滿足目標(biāo)比特率且滿足一組限制的編碼方案,所述限制組考慮通過用于解碼所述編碼視頻序列的假想?yún)⒖季幋a器的輸入緩沖區(qū)的編碼數(shù)據(jù)流。
22.根據(jù)權(quán)利要求21的計(jì)算機(jī)可讀媒體,其中用于所述重復(fù)檢查的所述指令組包括當(dāng)在處理所述視頻序列內(nèi)的任意一組圖像的編碼方案時(shí),為每個(gè)編碼方案確定所述假想?yún)⒖季幋a器是否下溢的一組指令。
23.根據(jù)權(quán)利要求21的計(jì)算機(jī)可讀媒體,其中用于不同編碼的所述迭代檢查的所述指令組包括一組指令,用于a)模擬假想?yún)⒖季幋a器的輸入緩沖區(qū)條件;b)利用所述模擬選擇比特?cái)?shù)以優(yōu)化圖像質(zhì)量,同時(shí)最大化所述假想?yún)⒖季幋a器上的輸入緩沖區(qū)的使用;c)重新編碼所述編碼視頻圖像,以實(shí)現(xiàn)所述優(yōu)化的緩沖區(qū)使用;以及d)迭代地執(zhí)行所述模擬、利用和重新編碼,直至識(shí)別出最優(yōu)的編碼方案。
24.根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀媒體,其中用于模擬所述假想?yún)⒖季幋a器輸入緩沖區(qū)條件的所述指令組還包括用于考慮所述假想?yún)⒖季幋a器接收編碼數(shù)據(jù)的速率的一組指令。
25.根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀媒體,其中用于模擬所述假想?yún)⒖季幋a器輸入緩沖區(qū)條件的所述指令組還包括用于考慮所述假想?yún)⒖季幋a器輸入緩沖區(qū)大小的一組指令。
26.根據(jù)權(quán)利要求23的計(jì)算機(jī)可讀媒體,其中用于模擬所述假想?yún)⒖季幋a器輸入緩沖區(qū)條件的所述一組指令還包括用于考慮來自所述假想?yún)⒖季幋a器的輸入緩沖區(qū)中的初始移除延遲的一組指令。
27.根據(jù)權(quán)利要求21的計(jì)算機(jī)可讀媒體,其中所述計(jì)算機(jī)程序還包括指令組,用于a)在所述迭代檢查之前,識(shí)別不基于與所述緩沖區(qū)流有關(guān)的所述限制組的初始編碼方案;以及b)利用所述初始編碼方案,開始所述迭代檢查中的第一檢查。
28.一種編碼視頻的方法,所述方法包括a)識(shí)別所述視頻序列中的第一圖像的第一部分的第一視覺掩蔽強(qiáng)度,其中所述視覺掩蔽強(qiáng)度量化由于所述第一部分的復(fù)雜度導(dǎo)致的對(duì)觀察者不可感知的編碼人工因素的程度;以及b)基于所述識(shí)別的第一視覺掩蔽強(qiáng)度,編碼所述第一圖像的至少一部分。
29.根據(jù)權(quán)利要求28的方法,其中所述視覺掩蔽強(qiáng)度指定所述第一部分的空間復(fù)雜度。
30.根據(jù)權(quán)利要求29的方法,其中所述空間復(fù)雜度被計(jì)算作為所述圖像的一部分的像素值的函數(shù)。
31.根據(jù)權(quán)利要求30的方法,其中所述第一部分具有多個(gè)像素和用于每個(gè)像素的圖像值,其中識(shí)別所述第一部分的所述視覺掩蔽包括a)估算所述第一部分的像素的圖像值;b)從所述第一部分的像素的圖像值中扣除所述統(tǒng)計(jì)屬性;c)基于所述扣除的結(jié)果,計(jì)算所述視覺掩蔽強(qiáng)度。
32.根據(jù)權(quán)利要求31的方法,其中所述估算的圖像值為所述第一部分的像素的圖像值的統(tǒng)計(jì)屬性。
33.根據(jù)權(quán)利要求32的方法,其中所述統(tǒng)計(jì)屬性為平均值。
34.根據(jù)權(quán)利要求31的方法,其中所述估算圖像值部分地基于所述第一部分的像素的相鄰像素。
35.根據(jù)權(quán)利要求28的方法,其中所述視覺掩蔽強(qiáng)度指定所述第一部分的時(shí)間復(fù)雜度。
36.根據(jù)權(quán)利要求35的方法,其中所述時(shí)間復(fù)雜度被計(jì)算作為所述第一圖像的第一部分內(nèi)定義的像素區(qū)域的移動(dòng)補(bǔ)償誤差信號(hào)的函數(shù)。
37.根據(jù)權(quán)利要求35的方法,其中所述時(shí)間復(fù)雜度被計(jì)算作為所述第一圖像的第一部分內(nèi)定義的像素區(qū)域的移動(dòng)補(bǔ)償誤差信號(hào)以及一組其他圖像的一組第二部分內(nèi)定義的像素的移動(dòng)補(bǔ)償誤差信號(hào)的函數(shù)。
38.根據(jù)權(quán)利要求37的方法,其中所述其他圖像組僅包括一個(gè)圖像。
39.根據(jù)權(quán)利要求37的方法,其中所述其他圖像組包括多于一個(gè)的其他圖像。
40.根據(jù)權(quán)利要求39的方法,其中所述移動(dòng)補(bǔ)償誤差信號(hào)是混合移動(dòng)補(bǔ)償誤差信號(hào),其中所述方法還包括a)為每個(gè)其他圖像定義權(quán)重因數(shù),其中第二圖像的權(quán)重因數(shù)大于第三圖像的權(quán)重因數(shù),其中所述第二圖像在所述視頻序列中比所述第三圖像更為靠近所述第一圖像;b)計(jì)算所述第一圖像和所述其他圖像組中的每個(gè)圖像的各個(gè)移動(dòng)補(bǔ)償誤差信號(hào);c)利用所述權(quán)重因數(shù),根據(jù)所述各個(gè)移動(dòng)補(bǔ)償誤差信號(hào)生成所述混合移動(dòng)補(bǔ)償誤差信號(hào)。
41.根據(jù)權(quán)利要求40的方法,其中選擇不是具有所述第一圖像的場(chǎng)景的一部分的所述其他圖像組中的圖像子集的權(quán)重因數(shù),以消除所述圖像子集。
42.根據(jù)權(quán)利要求37的方法,其中所述其他圖像組僅包括作為具有所述第一圖像的場(chǎng)景的一部分的圖像,并且不包括與另一個(gè)場(chǎng)景有關(guān)的任何圖像。
43.根據(jù)權(quán)利要求37的方法,其中從發(fā)生在所述第一圖像之前的一組過去的圖像和發(fā)生在所述第一圖像之后的一組將來的圖像中選擇所述第二圖像。
44.根據(jù)權(quán)利要求28的方法,其中所述視覺掩蔽強(qiáng)度包括空間復(fù)雜度組件和時(shí)間復(fù)雜度組件,所述方法還包括將所述空間復(fù)雜度組件和所述時(shí)間復(fù)雜度組件相互比較,并基于某一準(zhǔn)則修改它們,以維持所述空間復(fù)雜度組件的作用和所述時(shí)間復(fù)雜度組件的作用在具有彼此可接受范圍的所述屏蔽強(qiáng)度。
45.根據(jù)權(quán)利要求44的方法,其中調(diào)整所述時(shí)間復(fù)雜度組件,以解決特定幀的先行范圍內(nèi)即將到來的場(chǎng)景變化。
46.根據(jù)權(quán)利要求28的方法,其中所述視覺掩蔽強(qiáng)度指定所述第一部分的亮度屬性。
47.根據(jù)權(quán)利要求46的方法,其中所述亮度屬性被計(jì)算作為所述第一部分的平均像素強(qiáng)度。
48.根據(jù)權(quán)利要求28的方法,其中所述第一部分是整個(gè)所述第一圖像。
49.根據(jù)權(quán)利要求28的方法,其中所述第一部分小于整個(gè)所述第一圖像。
50.根據(jù)權(quán)利要求49的方法,其中所述第一部分為所述第一圖像內(nèi)的宏塊。
51.一種存儲(chǔ)用于編碼視頻的計(jì)算機(jī)程序的計(jì)算機(jī)可讀媒體,所述計(jì)算機(jī)程序包括指令組,用于a)識(shí)別量化所述視頻序列中的第一圖像的第一部分的復(fù)雜度的第一視覺掩蔽強(qiáng)度;以及b)基于所述識(shí)別的第一視覺掩蔽強(qiáng)度,編碼所述第一圖像的至少一部分。
52.根據(jù)權(quán)利要求51的計(jì)算機(jī)可讀媒體,其中所述視覺掩蔽強(qiáng)度量化由于所述第一部分的空間復(fù)雜度導(dǎo)致的編碼人工因素對(duì)觀察者不可感知的程度。
53.根據(jù)權(quán)利要求51的計(jì)算機(jī)可讀媒體,其中所述視覺掩蔽強(qiáng)度量化由于所述視頻中的移動(dòng)導(dǎo)致的編碼人工因素對(duì)觀察者不可感知的程度,其中所述移動(dòng)由所述第一圖像和所述第一圖像之前和之后的一組圖像捕捉。
54.根據(jù)權(quán)利要求51的計(jì)算機(jī)可讀媒體,其中屏蔽強(qiáng)度包括空間復(fù)雜度和時(shí)間復(fù)雜度,所述方法還包括將所述空間復(fù)雜度和所述時(shí)間復(fù)雜度相互比較,并基于一組準(zhǔn)則修改它們,以維持所述空間復(fù)雜度組件的作用和所述時(shí)間復(fù)雜度組件的作用在具有彼此可接受范圍的所述屏蔽強(qiáng)度。
55.根據(jù)權(quán)利要求54的計(jì)算機(jī)可讀媒體,其中屏蔽強(qiáng)度包括空間復(fù)雜度和時(shí)間復(fù)雜度,所述計(jì)算機(jī)程序還包括用于通過消除一組圖像內(nèi)的所述空間復(fù)雜度和所述時(shí)間復(fù)雜度的時(shí)間趨勢(shì)而改變所述空間復(fù)雜度和時(shí)間復(fù)雜度的一組指令。
56.根據(jù)權(quán)利要求54的計(jì)算機(jī)可讀媒體,其中調(diào)整所述時(shí)間復(fù)雜度組件,以解決特定幀的先行范圍內(nèi)即將到來的場(chǎng)景變化。
57.根據(jù)權(quán)利要求51的計(jì)算機(jī)可讀媒體,其中所述屏蔽強(qiáng)度屬性指定所述第一部分的亮度屬性。
全文摘要
本發(fā)明的一些實(shí)施例提供了一種編碼多個(gè)圖像(例如,視頻序列的幾幀)的多通路編碼方法。該方法重復(fù)執(zhí)行編碼這些圖像的編碼操作。該編碼操作基于標(biāo)稱量化參數(shù),該方法使用該標(biāo)稱量化參數(shù)計(jì)算該圖像的量化參數(shù)。在該編碼操作的幾次不同的迭代操作期間,該方法使用了幾種不同的標(biāo)稱量化參數(shù)。該方法在達(dá)到了終結(jié)準(zhǔn)則(例如,其識(shí)別到一個(gè)可接受的圖像編碼)時(shí)停止其迭代過程。
文檔編號(hào)H04N7/12GK1926863SQ200580006363
公開日2007年3月7日 申請(qǐng)日期2005年6月24日 優(yōu)先權(quán)日2004年6月27日
發(fā)明者童歆, 吳錫榮, 托馬斯·彭, 安德里亞那·杜米特拉, 巴林·哈斯凱爾, 吉姆·諾米勒 申請(qǐng)人:蘋果電腦有限公司