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