專利名稱::基于紋理水平的量化調整的制作方法基于紋理水平的量化調整背景隨著DVD的日益流行,經因特網、和數碼相機、數字媒體傳遞音樂也變得愈發平常。工程師使用各種技術在維持質量的同時有效處理數字音頻、視頻和圖像。為了理解這些技術,理解音頻、視頻和圖像信息是如何在計算機內表示和處理是有幫助的。I.計算機中媒體信息的表示計算機將媒體信息作為表示該信息的一系列數字來處理。例如,單個數字可以表示圖片的每個基本小區域的亮度強度或諸如紅色、綠色或藍色等色彩分量的強度,使得圖片的數字表示由這些數字的一個或多個陣列組成。每個這樣的數字可以被稱為一個^^本。對于彩色圖像,常規上用一個以上的樣本來表示每個基本區域的色彩,且通常使用三個樣本。用于一基本區域的這些樣本的集合可被稱之為像素,其中單詞"像素"指的是"圖片元素"這一概念的縮寫。例如,一個像素可以由代表表示該基本區域所必需的紅光、綠光和藍光強度的三個樣本組成。這一像素類型被稱為RGB像素。若干因素影響媒體信息的質量,包括樣本深度、分辨率和幀速率(用于視頻)。樣本深度是指示能夠用來表示一樣本的數字范圍的通常以比特為單位的測得的特性。當用于該樣本的可能值越多,質量就越高,因為該數字能夠捕捉更精細的強度變化和/或更大的值范圍。分辨率通常指的是某一持續時間(對于音頻)或空間(對于圖像或單獨的視頻圖片)內的樣本數。分辨率更高的圖像往往比其他圖像看上去更明快,并且包含更多可辨別的有用細節。幀速率是視頻的時間分辨率的常用術語。較高幀速率的視頻往往比其他視頻更能模擬自然物體的平滑運動,并且也可以類似地認為其在時間維度上包含更多細節。鑒于所有這些因素,如下表1所示,對高質量的折衷是存儲和傳輸信息的表示樣本深度、分辨率和幀速率所需的比特率方面的成本<table>tableseeoriginaldocumentpage5</column></row><table><table>tableseeoriginaldocumentpage6</column></row><table>表l:用于原始視頻的不同質量等級的比特率盡管有存儲和發送高質量視頻(諸如HDTV)所需的高比特率,但公司和消費者仍愈發依賴計算機來創建、分發和回放高質量內容。為此,工程師使用壓縮(也稱為源譯碼或源編碼)來降低數字媒體的比特率。壓縮通過將信息轉換成較低比特率的形式來降低存儲和傳送信息的成本。壓縮可以是無損的,其中視頻質量不受損害,但是比特率的降低受到視頻復雜度的限制。或者,壓縮可以是有損的,其中視頻質量受到損害,但是比特率的降低更顯著。解壓(也被稱為解碼)從已壓縮形式中重構一種版本的原始信息。"編解碼器"是編碼器/解碼器系統。一般而言,視頻壓縮技術包括"幀內"壓縮和"幀間"或預測壓縮。對于視頻幀,幀內壓縮技術壓縮個別的幀,通常稱為I幀或關鍵幀。幀間壓縮技術參考前導和/或后續幀來壓縮各幀,且幀間壓縮的幀通常被稱為預測幀、P幀或B幀。II.WindowsMediaVideo版本8和9中的幀間和幀內壓縮微軟公司的WindowsMediaVideo(Windows媒體視頻)版本8["WMV8"]包括視頻編碼器和視頻解碼器。WMV8編碼器使用幀內和幀間壓縮,而WMV8解碼器使用幀內和幀間解壓。WindowsMediaVideo版本9["WMV9"]對許多操作使用類似的體系結構。A.幀內壓縮圖1示出了WMV8編碼器中關鍵幀中的樣本塊105的基于塊的幀內壓縮100。塊是一組樣本,例如,8x8的樣本排列。WMV8編碼器將關鍵視頻幀拆分成8x8的塊并向諸如塊105等各個塊應用8x8的離散余弦變換["DCT"]llO。DCT是將8x8的樣本塊(空間信息)轉換成8x8的DCT系數塊115的一類頻率變換,該系數塊是頻率信息。DCT操作本身是無損或接近無損的。然而,與原始樣本值相比,DCT系數對于編碼器的壓縮更高效,因為大多數重要信息集中在低頻系數中(常規上,塊115的左上角),并且許多高頻系數(常規上,塊115的右下角)具有零或接近零的值。編碼器然后量化(120)該DCT系數,得到8X8的經量化的DCT系數塊125。量化是有損的。由于低頻DCT系數往往具有更高的值,因此量化通常導致精度的損失,但是不會完全損失關于系數的信息。另一方面,由于高頻DCT系數往往具有零或接近零的值,因此高頻系數的量化通常導致連續的零值區域。另外,在某些情況中,高頻DCT系數比低頻DCT系數更粗略地量化,導致對于高頻DCT系數的更大精度/信息損失。編碼器然后準備8x8的量化DCT系數塊125以供熵編碼,這是一種形式的無損壓縮。熵編碼的確切類型可以取決于一系數是DC系數(最低頻率)、頂行或左列中的AC系數(其它頻率)還是另一AC系數而變化。編碼器將DC系數126編碼為與相鄰的8x8塊的DC系數136的差分,該相鄰塊是正被編碼的塊的先前己編碼的鄰居(例如,頂部或左邊)。(圖1示出了位于幀中正被編碼的塊的左邊的鄰居塊135)。編碼器對該差分進行熵編碼140。熵編碼器可以將左列或頂行的AC系數編碼為與相鄰的8x8塊的對應左列或頂行的差分。這是AC系數預測的一個示例。圖l示出了被編碼為與相鄰(實際上在左邊)塊135的左列137的差分147的左列127的AC系數。該差分編碼增加了差分系數具有零值的幾率。其余AC系數來自量化的DCT系數塊125。編碼器將8x8的量化的ACDCT系數塊145掃描150到一維陣列155中,然后使用行程長度編碼160的變體來對掃描的AC系數進行熵編碼。編碼器從一個或多個"行程/等級/最后"表165中選擇熵碼,并輸出該熵碼。B.幀間壓縮WMV8編碼器中的幀間壓縮使用基于塊的經運動補償的預測編碼,之后是殘留誤差的變換編碼。圖2和3示出了用于WMV8編碼器中的預測幀的基于塊的幀間壓縮。具體地,圖2示出了用于預測幀210的運動估計,而圖3示出了用于預測幀的經運動補償的塊的預測殘差的壓縮。例如,在圖2中,WMV8編碼器為預測幀210中的宏塊115計算運動矢量。為計算運動矢量,編碼器在參考幀230的搜索區域235中進行搜索。在搜索區域235中,編碼器將來自預測幀110的宏塊215與各種候選宏塊進行比較,以找出作為良好匹配的候選宏塊。編碼器輸出指定匹配宏塊的運動矢量(經熵編碼的)的信息。該運動矢量相對于一運動損耗量預測值來進行差分編碼。在通過將差分加到運動矢量預測值來重構運動矢量之后,解碼器使用該運動矢量,利用來自參考幀230的信息來為宏塊215計算預測宏塊,參考幀130是在編碼器和解碼器處可用的先前重構的幀。預測很少是完美的,因此編碼器通常對預測宏塊和宏塊215本身之間的像素差塊(也稱為誤差或殘差塊)進行編碼。圖3示出了WMV8編碼器中的誤差塊235的計算和編碼的示例。誤差塊335是預測的塊315和原始的當前塊325之差。編碼器向誤差塊335應用DCT340,得到8X8的系數塊345。編碼器然后量化(350)該DCT系數,得到8X8的經量化的DCT系數塊355。編碼器將8X8的塊355掃描(360)成一維數組365,使得系數一般從最低頻率到最高頻率排序。編碼器使用行程長度編碼370的變體對掃描的系數進行熵編碼。編碼器從一個或多個行程/等級/最后表375中選擇熵碼,并輸出該熵碼。圖4示出了用于幀間編碼塊的對應解碼過程400的示例。在圖4的概述中,解碼器使用可變長度解碼410,利用一個或多個行程/級別/最后表415和行程長度解碼420,對表示預測殘差的經熵編碼的信息進行解碼(410、420)。解碼器將儲存經熵編碼的信息的一維數組425反掃描(430)成二維塊435。解碼器對該數據進行反量化和反DCT(共同在440處),得到重構的誤差塊445。在獨立的運動補償路徑中,解碼器對從參考幀的偏移使用運動矢量信息455計算預測塊465。解碼器將預測塊465與重構的誤差塊445組合470,以形成重構塊475。編碼器也執行反量化、反DCT、運動補償和組合以重構幀以便用作參考幀。III.有損壓縮和量化上節提到了作為一種用于有損壓縮的機制的量化,以及也稱為無損壓縮的熵編碼。無損壓縮通過從信息中移除冗余來降低信息的比特率,而在保真度中沒有任何減小。例如,全部都完全是相同的紅色著色的一系列io個連貫的像素可被表示為用于該特定的紅色著色的代碼,并且數量10被表示為連貫像素的"行程長度",且該系列可以通過從用于紅色著色的代碼以及所指示的具有該紅色著色的連貫像素的數量(10)進行解壓來完美地重構。無損壓縮技術在沒有質量代價的前提下降低比特率,但是只能將比特率降低到某一程度。比特率的減小受到輸入數據的統計特性中的內在可變性數量的限制,該可變性被稱為源熵。相反,采用有損壓縮,質量在某種程度上受損,但是可用的比特率減小更為顯著。例如,各自是略微不同的紅色著色的一系列io個像素可以被近似為具有完全相同的特定近似紅色色彩的10個像素。有損壓縮技術可用于比無損壓縮技術更顯著地降低比特率,但是某些比特率的降低是通過降低質量來實現的,并且損失的質量不能被完全恢復。有損壓縮通常結合無損壓縮來使用一在其中有損壓縮建立信息的近似而無損壓縮技術被用來表示該近似的系統設計中。例如,各自是略微不同的紅色著色的該一系列IO個像素可被表示為用于一個特定的紅色著色的代碼,并且數量10被表示為連貫像素的行程長度。一般而言,編碼器改變量化以在質量和比特率之間進行折衷。較粗略的量化導致更大的質量降低但是允許更大的比特率減小。在解壓時,原始系列將被重構為具有相同的近似的紅色色彩的io個像素。根據一個可能的定義,量化是用于通常用于有損壓縮的近似不可逆映射函數的術語,其中有一組指定的可能輸出值,并且該組可能的輸出值中的每一成員具有導致對該特定輸出值的選擇的一組相關聯的輸入值。已經開發了各種量化技術,包括標量或矢量、均勻或非均勻、以及自適應或非自適應量化。A.標量量化器根據一種可能的定義,標量量化器是輸入值;c到經量化的值2l)c](有時稱為重構值)的近似函數映射x》2[x]。圖5示出了用于標量量化器的"階梯"I/O函數500。水平軸是用于實數輸入變量;c的數字線,而垂直軸指示了相應的量化值2[x]。數字線按諸如閾值510等閾值劃分。一對相鄰閾值之間的給定范圍中的每一:c值被分配相同的量化值2[x]。例如,范圍520中的每一x值被分配相同的量化值530。(在閾值處,兩個可能的量化值之一被分配給輸入x,取決于系統)。總體上,量化值^M展示了一離散的階梯模式。映射沿著數字線繼續的距離取決于系統,通常在有限個數的閾值之后結束。閾值在數字線上的放置可以是均勻間隔(如圖5所示)或非均勻間隔的。標量量化器可被分解成兩個截然不同的級。第一級是分類器級,其中分類器函數映射X今」M將輸入X映射到通常為整數值的量化索引J[X]。本質上,分類器對輸入數字行或數據集分段。圖6A示出了用于標量量化器的通用分類器600和閾值。如在圖5中一樣,用于實數變量;c的數字線按照諸如閾值610等閾值來分段。諸如范圍620等給定范圍中的每一x值被分配相同的量化值g[x]。圖6B示出了用于標量量化器的分類器650和閾值的數值示例。在第二級中,重構器函數映射&》/閱將每一量化索引a映射到重構值P[W。本質上,重構器設置具有相對于輸入數字線的各段的特定高度的階(或選擇數據集值的一個子集)以便重構由分類器確定的每一區域。重構器函數映射例如可使用査找表來實現。總體上,分類器涉及如下重構器(l)在常見的使用中,術語"量化"通常用于描述在編碼期間執行的分類器級。術語"反量化"類似地用于描述無論在編碼還是解碼期間執行的重構器級。通過使用這一量化器而引入的失真可以用基于差的失真度量"0c-2M)來計算。通常,這一失真度量具有《;c-2M)隨著;c-^M偏離零而增加的性質;并且通常每一重構值位于對應的分類區域的范圍之內,使得由函數方程2[x]=x形成的直線將穿過階梯圖(如圖5所示)的每一階,并且因此g[2M]通常等于2M。一般而言,如果對于給定的輸出比特率,一量化器與其它量化器相比導致較低的平均失真值,則該量化器被認為在碼率-失真方面是較好的。更正式地,如果對于源隨機變量%,失真度量的期望值(即,平均或統計均值)<formula>formulaseeoriginaldocumentpage10</formula>對于」[;n的相等或更低的熵h較低,則一量化器被認為較好。最常用的失真度量是平方誤差失真度量,對于該度量《lx-;;l)=l;c-別2。當使用平方誤差失真度量時,失真度量的期望值(^)被稱為均方誤差。B,死區+均勻閾值量化器非均勻量化器具有對所有分類器區域非均勻地間隔的閾值。根據一種可能的定義,死區加均勻閾值量化器["dz+utq"]是具有對除了包含零輸入值的區域(稱為死區["DZ"])之外的所有分類器區域都具有均勻間隔的閾值的量化器。在一般的意義上,DZ+UTQ是非均勻量化器,因為DZ的大小不同于其它分類器區域的大小。DZ+UTQ具有可基于兩個參數來表達的分類器索引映射規則x+^M。圖7示出了用于DZ+UTQ的階梯I/O函數700,而圖8A示出了用于DZ+UTQ的通用分類器800和閾值。大于0的參數s指示用于除了DZ之外的所有階的步長。在數學上,z^Q,對所有^等于"大于或等于O的參數z指示DZ大小與其它階的大小之比。在數學上,&=z'\在圖8A中,z為2,因此DZ的寬度是其它分類區的兩倍。用于DZ+UTQ的索引映射規則x—j[x]可被表達為<formula>formulaseeoriginaldocumentpage11</formula>(2),其中L'」表示小于或等于自變量的最小整數,并且其中sign(;c)是定義如下的函數:<formula>formulaseeoriginaldocumentpage11</formula>(3).圖8B示出了其中s-l且z=2的用于DZ+UTQ的分類器850和閾值的數值示例。圖5、6A和6B示出了其中z=1的特殊情況的DZ+UTQ。UTQ形式的量化器對于各種統計源都具有良好的性能。特別地,DZ+UTQ形式對于被稱為拉普拉斯源的統計隨機變量源是最優的。在某些系統設計(未示出)中,可能需要附加的考慮來完全表征DZ+UTQ分類規則。出于實踐原因,可能需要將可從分類函數J[;c]所得的值的范圍限于某一合理的有限范圍。該限制被稱為限幅。例如,在某些這樣的系統中,分類規則可以更精確地被定義為<formula>formulaseeoriginaldocumentpage11</formula>(4),其中g是對」M的絕對值的限制。可以使用不同的重構規則來對每一量化索引確定重構值。僅集中于實現互操作性的標準和產品規范通常指定重構值而不必指定分類規則。換言之,某些規范可定義函數映射&》/W而不定義函數映射x今」[x]。這允許被構建為遵守該標準/規范的解碼器正確地重構信息。相反,編碼器通常被給予以它們希望的任何方式改變分類器的自由,而同時仍遵守該標準/規范。已經開發了用于調整量化閾值的眾多系統。許多標準和產品出于簡明的目的指定了對應于典型的中點重構規則(例如,對于典型的簡單分類規則)的重構值。然而,對于分類,閾值實際上可被調整以使某些輸入值被映射到更常見(且因此有更低比特率)的索引,這使得重構值更接近最優。在許多系統中,量化的范圍是按照量化步長大小來測量的。較粗略的量化使用更大的量化步長,這對應于更寬的輸入值范圍。較精細的量化使用較小的量化步長。通常,出于信令和重構的目的,量化步長被參數化為最小量化步長的倍數。c.量化偽像如上所述,有損壓縮往往會導致質量的下降。例如,一系列10個略微不同的值的樣本可以使用量化而被近似為具有完全相同的特定近似值的10個樣本。這種量化會降低編碼該一系列io個樣本的比特率,但是以損失原始的IO個樣本中的細節為代價。在某些情況下,量化產生往往有更偽像性外觀且與簡單的精細細節損失相比在視覺上更分散注意的視覺偽像。例如,平滑的、未紋理化的內容易受輪廓偽像一出現在兩個不同量化輸出值的區域之間的偽像一的影晌,因為人類視覺系統對于平滑內容中的微小變化(尤其是亮度差)很敏感。使用以上示例,考慮其中該系列10個樣本的亮度值從第一個樣本到第十個樣本逐步且一致地改變的情況。量化可以將前五個樣本值近似為一個值,而將后五個樣本值近似為另一值。盡管這種量化可能不會由于掩蔽效應而造成紋理化區域中的視覺偽像,但是在平滑區域中,它會在重構圖像中造成兩組5個樣本之間的可見線或階。IV.VC-1中的差分量化在差分量化中,編碼器對于圖片的不同部分改變量化步長(此處在某些實現中也稱為量化參數或QP)。通常,這涉及在宏塊級或其它子圖像級上改變QP。編碼器做出關于如何改變QP的判決,并且將這些判決適當地用信號通知給解碼器。例如,VC-1編碼器可任選地選擇差分量化來進行壓縮。編碼器在圖像級上的句法級發送比特流元素(DQUANT)以指示QP是否可在各個圖像中的宏塊之中變化。編碼器發送圖像級比特流元素PQINDEX以指示圖像QP。如果DQUANT=0,則對該圖像中的所有宏塊使用PQINDEX所指示的QP。如果DQUANT-1或2,則同一圖像中的不同宏塊可使用不同的QP。VC-1編碼器可以使用一種以上方法來進行差分量化。在一種方法中,對一圖像僅使用兩個不同的QP。這被稱為雙級(bi-levd)差分量化。例如,對圖像邊緣處的宏塊使用一個QP,而對圖像其余部分中的宏塊使用另一QP。這對于在圖像邊緣處節省比特是有用的,在邊緣處,精細細節對于保持總體視覺質量較不重要。或者,對每一宏塊用信號表示1比特的值指示對該宏塊使用兩個可用QP值中的哪一個。在被稱為多級差分量化的另一種方法中,可對圖像中的各個宏塊使用更大數量的不同QP。編碼器在DQUANT為非零時發送圖像級比特流元素VOPDQUANT。VOPDQUANT由可能包括DQPROFILE的其它元素組成,DQPROFILE指示圖像的哪些部分可使用除了圖像QP之外的QP。當DQPROFILE指示任意的、不同的宏塊可以使用除了圖像QP之外的QP時,存在比特流元素DQBILEVEL。如果DQBILEVEL=1,則每一宏塊使用兩個QP之一(雙級量化)。如果DQBILEVEL=0,則每一宏塊可使用任何QP(多級量化)。比特流元素MQDIFF在宏塊級發送以用信號表示對于雙級量化的宏塊的l比特選擇器。對于多級量化,MQDIFF指示圖像QP和宏塊QP之間的差分,或者對于宏塊的經轉移編碼的絕對QP。.V.其它標準和產品眾多國際標準指定了用于壓縮的視頻信息的視頻解碼器和格式的各方面。這些標準直接或隱含地也指定了某些編碼器細節,但是未指定其它編碼器細節。某些標準著重于靜止圖像壓縮/解壓,而其它標準著重于音頻壓縮/解壓。眾多公司已經生產了用于音頻、靜止圖像和視頻的編碼器和解碼器。各種其它種類的信號(例如,高光譜圖像、圖形、文本、財務信息等)通常也使用壓縮技術來表示和儲存或傳輸。各種視頻標準允許對不同圖像類型使用不同量化步長,并且允許出于碼率和質量控制來改變量化步長。各標準通常未完全指定量化器設計。大多數標準允許編碼器分類規則;c+^M和/或解碼器重構規則A:>"[M中的某些變化。對DZ比z=2或更大的使用已經蘊含在多種編碼設計中。例如,某些標準中對預測區域的重構值定范圍隱含了對z22的使用。這些示例形式的標準中的重構值被適當地間隔以使用z=2的02+171(5分類。基于^=1(或至少z〈2)的設計已經在若干標準中用于量化。在這些情況下,重構值被圍繞零相等地間隔并且離開O。給定視頻壓縮對于數字視頻的關鍵重要性,視頻壓縮是充分開發的領域并不令人驚奇。然而,不論早先的視頻壓縮技術的好處如何,它們都沒有以下技術和工具的優點。概述本申請描述了用于自適應地調整量化以解決DC漂移偽像的技術和工具。例如,視頻編碼器對于視頻圖像的平滑區域調整量化以減少因來自量化的DC系數值的漂移而導致的輪廓偽像。這能夠以較小的比特率成本來提高感知質提供本概述以便用簡化的形式來介紹將在以下詳細描述中進一步描述的一些概念。本概述并不旨在標識出所要求保護的主題的關鍵特征或必要特征,也不旨在用于限制所要求保護的主題的范圍。在一方面,一種視頻編碼器標識視頻圖像中包含DC漂移塊的一個或多個部分,并對該圖像調整量化(例如,通過對包含DC漂移塊的宏塊減小量化步長)來減少在重構圖像時的輪廓偽像。編碼器可以通過標識圖像中的一個或多個梯度斜率區域(例如,通過分析紋理圖)并分析梯度斜率區域中的DC系數上的量化效應來標識圖像中包含DC漂移塊的(諸)部分。編碼器可以按給定的量化步長檢查具有相關聯的DC漂移偽像的DC系數值列表。編碼器可以檢查DC漂移塊的相鄰塊以尋找DC漂移偽像。編碼器可以使用DC系數或平均樣本值來標識DC漂移塊。量化可以是雙級或多級差分量化,并且可使用均勻或非均勻量化器。編碼器可以對圖像的高紋理部分增加量化。在另一方面,一種視頻編碼器檢測具有在以第一量化步長(例如,圖像量化步長)量化和反量化之后改變值的DC系數的一個或多個塊。編碼器對包括具有在以第一量化步長量化和反量化之后改變值的DC系數的至少一個塊的至少一個宏塊選擇第二量化步長。編碼器在對該至少一個宏塊的量化中使用第二量化步長(小于第一量化步長)。第二量化步長可以小于用于圖像中的平滑區域的量化步長。在另一方面,一種視頻編碼器檢測視頻圖像中包括一個或多個DC漂移塊的梯度斜率區域。每一DC漂移塊具有在以第一量化步長量化和反量化之后改變值的DC系數。編碼器對包括具有改變值的DC系數的至少一個DC漂移塊的至少一個圖像部分選擇第二量化步長(小于第一量化步長)。編碼器在對這些圖像部分的量化中使用第二量化步長。編碼器可以對高紋理圖像部分選擇大于第一量化步長的量化步長。當參考附圖閱讀以下詳細描述時,上述和其它目的、特征和優點將變得更明顯。附圖簡述圖1是示出8x8的樣本塊的基于塊的幀內壓縮的圖示。圖2是示出視頻編碼器中的運動估計的圖示。圖3是示出視頻編碼器中的8X8的預測殘差塊的基于塊的壓縮的圖示。圖4是示出視頻解碼器中的8X8的預測殘差塊的基于塊的解壓的圖示。圖5是示出用于標量量化器的階梯I/O函數的曲線圖。圖6A和6B是示出用于標量量化器的分類器和閾值的曲線圖。圖7是示出用于DZ+UTQ的階梯I/O函數的曲線圖。圖8A和8B是示出用于DZ+UTQ的分類器和閾值的曲線圖。圖9是可結合其實現所描述的若干實施例的合適的計算環境的框圖。圖10是可結合其實現所描述的若干實施例的通用視頻編碼器系統的框圖。圖11是在所描述的若干實施例中使用的宏塊格式的圖示。圖12是自適應視頻編碼方法的流程圖。圖13是示出使用塊的亮度和色度數據的像素梯度計算的圖示。圖14是對圖13的塊的多個像素梯度的直方圖。圖15是示例塊值表征框架的圖。圖16是示出用于基于紋理信息來應用差分量化的通用技術的流程圖。圖17是示出用于使用時間分析來做出紋理DQ判定的技術的流程圖。圖18是示出用于使用百分比閾值和隔離平滑塊濾波來做出紋理DQ判定的技術的流程圖。圖19是示出用于對高紋理圖像選擇性地調整紋理水平閾值的技術的流程圖。圖20是示出用于確定自適應紋理水平閾值的示例偽代碼的代碼圖。圖21是示出梯度斜率區域的兩個示例的圖示。圖22A是示出具有梯度斜率區域、紋理化區域、銳邊區域和平坦區域的示例幀的圖示。圖22B是示出圖22A的梯度斜率區域中的輪廓偽像的圖示。圖22C示出了圖22B的輪廓偽像的宏塊級細節。圖23是示出通用的基于區域的梯度斜率檢測技術的流程圖。圖24是根據一個實現的示例梯度斜率檢測器的框圖。圖25是描繪具有可能會導致異常梯度斜率方向的膜顆粒的梯度斜率區域的4-l降釆樣的圖示。圖26是用于16x16的羅盤算子KH和i^的等式圖。圖27是示出用于使用圖26的羅盤算子來計算區域的梯度方向的示例偽代碼的代碼圖。圖28是示出用于對梯度斜率區域執行一致性檢驗的技術的流程圖。圖29是描繪了桶投票技術中的桶的圖示。圖30是示出用于選擇宏塊QP來幫助保存一個或多個非零AC系數的示例技術的流程圖。圖31是示出在量化和反量化之后在梯度斜率區域中的三個相鄰塊的DC漂移的圖示。圖32是示出用于調整量化以減少或避免DC漂移區域中的輪廓偽像的引入的通用技術的流程圖。圖33是示出用于調節DC漂移區域中量化以減少或避免量化偽像的引入的組合技術的流程圖。詳細描述本申請涉及用于高效的視頻壓縮的技術和工具。在各個所描述的實施例中,一種視頻編碼器結合了用于編碼視頻的技術,以及用于包括不同層或級的比特流格式或句法的對應的信令技術。所描述的技術和工具中的某一些可被應用于隔行或逐行幀。對此處所描述的實現的各種替換是可能的。例如,參考流程圖所描述的技術可以通過改變流程圖中所示的級的排序,通過重復或省略某些級等來改變。例如,在初始級中的分析(例如,獲得關于圖像的紋理信息或在檢測平滑區域時執行紋理分析)可在稍后的級(例如,對于圖像做出編碼判決或在檢測平滑區域時執行時間分析)開始之前完成,或者對不同級的操作可以在逐塊、逐宏塊或其它逐區域的基礎上交錯。作為另一示例,盡管某些實現此處是參考特定宏塊格式描述的,但是也可使用其它格式。各種技術和工具可組合或單獨使用。不同的實施例實現所描述的技術和工具的一個或多個。此處所描述的某些技術和工具可以在視頻編碼器中使用,或在不特別限于視頻編碼的某一其它系統中使用。I.計算環境圖9示出了其中可實現所描述的若干實施例的合適計算環境900的一個通用示例。計算環境卯O并非旨在對使用范圍或功能提出任何限制,因為這些技術和工具可以在完全不同的通用或專用計算環境中實現。參考圖9,計算環境900包括至少一個處理單元910和存儲器920。在圖9中,這一最基本配置930包括在虛線內。處理單元910執行計算機可執行指令,且可以是真實或虛擬處理器。在多處理系統中,多個處理單元執行計算機可執行指令以提高處理能力。存儲器920可以是易失性存儲器(例如,寄存器、高速緩存、RAM)、非易失性存儲器(例如,ROM、EEPROM、閃存等)或兩者的某一組合。存儲器920儲存用此處所描述的一個或多個技術或工具實現視頻編碼器的軟件980。計算環境可具有額外的特征。例如,計算環境900包括存儲940、一個或多個輸入設備950、一個或多個輸出設備960以及一個或多個通信連接970。諸如總線、控制器或網絡等互連機制(未示出)將計算環境900的組件互連。通常,操作系統軟件(未示出)為在計算環境900中執行的其它軟件提供了操作環境,并協調計算環境900的組件的活動。存儲940可以是可移動或不可移動的,且包括磁盤、磁帶或磁帶盒、CD-ROM、DVD或可用于儲存信息并可在計算環境900內訪問的任何其它介質。存儲940儲存用于實現視頻編碼器的軟件980的指令。輸入設備950可以是諸如鍵盤、鼠標、筆或跟蹤球等觸摸輸入設備、語音輸入設備、掃描設備或可向計算環境900提供輸入的另一設備。對于音頻或視頻編碼,輸入設備950可以是聲卡、顯卡、TV調諧卡、或接受模擬或數字形式的音頻或視頻輸入的類似的設備、或將音頻或視頻樣值讀入計算環境900的CD-ROM或CD-RW。輸出設備960可以是顯示器、打印機、揚聲器、CD刻錄機、或從計算環境900提供輸出的另一設備。通信連接970允許通過通信介質到另一計算實體的通信。通信介質傳達諸如已調制數據信號形式的計算機可執行指令、音頻或視頻輸入或輸出、或其它數據等信息。己調制數據信號是其一個或多個特征以在信號中編碼信息的方式設置或改變的信號。作為示例而非局限,通信介質包括以電、光、RF、紅外、聲學或其它載波實現的有線或無線技術。各種技術和工具可以在計算機可讀介質的一般上下文中描述。計算機可讀介質可以是可在計算環境內訪問的任何可用介質。作為示例而非局限,對于計算環境900,計算機可讀介質包括存儲器920、存儲940、通信介質以及上述任一個的組合。該技術和工具可在諸如程序模塊中所包括的在目標真實或虛擬處理器上的計算環境中執行的計算機可執行指令的一般上下文中描述。一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、程序、庫、對象、類、組件、數據結構等。程序模塊的功能可以如各實施例中所需的組合或在程序模塊之間分離。用于程序模塊的計算機可執行指令可以在本地或分布式計算環境中執行。為了呈現,詳細描述使用了如"判定"和"分析"等術語來描述計算環境中的計算機操作。這些術語是由計算機執行的操作的高級抽象,且不應與人類所執行的動作混淆。對應于這些術語的實際的計算機操作取決于實現而不同。IL通用視頻編碼器圖10是可結合其實現所描述的某些實施例的通用視頻編碼器1000的框圖。編碼器1000接收包括當前圖像1005的視頻圖像序列,并產生壓縮的視頻信息1095作為對存儲、緩沖區或通信連接的輸出。輸出比特流的格式可以是Windows媒體視頻或VC-1格式、MPEG-x格式(例如,MPEG-1、MPEG-2或MPEG-4)、H.26x格式(例如,H.261、H.262、H.263或H.264)或其它格式。編碼器1000處理視頻圖像。術語圖像一般指的是源、已編碼的或己重構的圖像數據。對于逐行視頻,圖像是逐行視頻幀。對于隔行視頻,圖像可以指的是隔行視頻幀、幀的上半幀、或幀的下半幀,取決于上下文。編碼器1000是基于塊的,并且對幀使用4:2:0的宏塊格式。如圖11所示,宏塊1100包括四個8X8的亮度塊(Y1到Y4)以及兩個8X8的色度塊(U和V),這些色度塊與四個亮度塊位于同處,但是水平和垂直分辨率都是一半,遵循常規的4:2:0的宏塊格式。對于半幀,可使用相同或不同的宏塊組織和格式。8X8的塊還可在不同的級上細分,例如在頻率變換和熵編碼級。編碼器1000可以對除8x8的塊和16x16的宏塊之外的不同大小或配置的樣本集執行運算。或者,編碼器1000是基于對象的,或使用不同的宏塊或塊格式。返回到圖IO,編碼器系統1000壓縮預測圖像和幀內編碼的關鍵圖像。為演示起見,圖IO示出了關鍵圖像通過編碼器系統1000的路徑以及用于預測圖像的路徑。編碼器系統1000的許多組件用于同時壓縮關鍵圖像和預測圖像兩者。由這些組件執行的確切操作可以取決于所壓縮的信息類型而變化。預測圖像(例如,逐行P幀或B幀、隔行P半幀或B半幀、或隔行P幀或B幀)按照來自一個或多個其它圖像(通常被稱為參考圖像或錨)的預測(或差)來表示。預測殘差是所預測的和原始圖像之差。相反,關鍵圖像(例如,逐行I幀、隔行I半幀或隔行I幀)不參考其它圖像來壓縮。如果當前圖像1005是預測圖像,則運動估計器1010估計當前圖像1005的宏塊或其它樣本集相對于一個或多個參考圖像(例如,緩存在圖像存儲1020中的重構的前一圖像1025)的運動。如果當前圖像1005是雙向預測圖像,則運動估計器1010估計當前圖像1005中相對于多達四個重構的參考圖像(例如,對于隔行B半幀)的運動。通常,運動估計器估計B圖像中相對于一個或多個在時間上先前的參考圖像以及一個或多個在時間上未來的參考圖像的運動,但是B圖像不需要從不同的時間方向來預測。編碼器系統1000可對多個參考圖像使用單獨的存儲1020和1022。運動估計器1010可按照全樣本、K樣本、^樣本或其它增量來估計運動,并可在逐圖像的基礎或其它基礎上切換運動估計的精度。運動估計器1010(和補償器1030)也可在每一幀或其它基礎上在參考圖像樣本內插的類型之間切換(例如,在雙三次內插和雙線性內插之間)。運動估計的精度可以在水平和垂直上相同或不同。運動估計器1010輸出運動信息1015,諸如差分運動矢量信息作為輔助信息。編碼器1000通過例如為運動矢量計算一個或多個預測值,計算運動矢量和預測值之間的差分,以及對差分進行熵編碼,來對運動信息1015進行編碼。為重構運動矢量,運動補償器1030將預測值與差分運動矢量信息組合。運動補償器1030將重構的運動矢量應用于重構的圖像1025,以形成經運動補償的當前圖像1035。然而,預測很少是完美的,且經運動補償的當前圖像1035和原始的當前圖像1005之差是預測殘差1045。在稍后的圖像重構期間,將預測殘差1045加到經運動補償的當前圖像1035,以獲得更接近于原始的當前圖像1005的經重構的圖像。然而,在有損壓縮中,某些信息仍從原始當前圖像1005中丟失。或者,運動估計器和運動補償器應用另一類型的運動估計/補償。頻率變換器1060將空間域視頻信息轉換成頻域(即,頻譜)數據。對于基于塊的視頻圖像,頻率變換器1060向樣本數據或預測殘差數據的塊應用DCT、DCT的變體或其它塊變換,從而產生頻率變換系數塊。或者,頻率變換器1060應用諸如傅立葉變換等另一常規頻率變換或使用小波或子帶分析。頻率變換器1060可應用8X8、8X4、4X8、4X4或其它大小的頻率變換。量化器1070然后量化頻譜數據系數塊。量化器向頻譜數據應用均勻的標量量化,其步長在逐圖像的基礎或其它基礎(例如,逐宏塊的基礎)上變化。或者,量化器向頻譜數據系數應用另一類型的量化,例如非均勻的、矢量或非自適應量化,或直接在不使用頻率變換的編碼器系統中量化空間域數據。以下詳細描述某些實現中涉及量化的技術和工具。除自適應量化之外,編碼器iooo可使用幀丟棄、自適應濾波或其它技術用于碼率控制。編碼器IOOO可對跳過宏塊使用特殊信令,該跳過宏塊是某一特定類型的信息(例如,沒有關于宏塊的差分運動矢量以及沒有殘差信息)的宏塊。當需要重構的當前圖像用于后續的運動估計/補償時,反量化器1076在量化的頻譜數據系數上執行反量化。反頻率變換器1066然后執行頻率變換器1060的逆運算,從而產生重構的預測殘差(對于預測圖像)或重構的關鍵圖像。如果當前圖像1005是關鍵圖像,則重構的關鍵圖像用作重構的當前圖像(未示出)。如果當前圖像1005是預測圖像,則重構的預測殘差被加到經運動補償的當前圖像1035,以形成重構的當前圖像。圖像存儲1020、1922之一或兩者緩存重構的當前圖像,以在經運動補償的預測中使用。在某些實施例中,編碼器向重構的幀應用分塊濾波器,以自適應地平滑圖像中的不連續性和其它偽像。熵編碼器1080壓縮量化器1070的輸出以及某些輔助信息(例如,運動信息1015、量化步長(QP))。典型的熵編碼技術包括算術編碼、差分編碼、哈夫曼編碼、行程長度編碼、LZ編碼、字典式編碼以及上述的組合。熵編碼器1080通常對不同種類的信息(例如,DC系數、AC系數、不同種類的輔助信息)使用不同的編碼技術,并可從特定編碼技術內的多個代碼表中進行選擇。熵編碼器1080向多路復用器("MUX")1090提供壓縮的視頻信息1095。MUX1090可包括緩沖區,并且一緩沖區等級指示符可被反饋給控制器。在MUX1090之前或之后,壓縮的視頻信息1095可被信道編碼用于通過網絡發送。信道編碼可向壓縮的視頻信息1095應用檢錯和糾錯數據。控制器(未示出)接收來自諸如運動估計器1010、頻率變換器1060、量化器1070、反量化器1076、熵編碼器1080和緩沖區1090等各個模塊的輸入。控制器評估編碼期間的中間結果,例如估計失真并執行其它碼率-失真分析。控制器與諸如運動估計器1010、頻率變換器1060、量化器1070和熵編碼器1080一起工作以設置并改變編碼期間的編碼參數。當編碼器評估編碼期間的不同編碼參數選擇時,編碼器可迭代地執行某些級(例如,量化和反量化)以評估不同的參數設置。編碼器可以在前進到下一級之前設置一個級處的參數。或者,編碼器可以對不同的編碼參數進行聯合評估。要評估的編碼參數判決的樹以及相應編碼的定時取決于實現。編碼器1000內的模塊之間所示的關系指示了編碼器中的一般信息流;為簡明起見,未示出其它關系。具體地,圖10—般不示出指示用于視頻序列、圖像、宏塊、塊等的編碼器設置、模式、表等輔助信息。這一輔助信息一旦被最終化,通常在該輔助信息的熵編碼之后在輸出比特流中發送。視頻編碼器的具體實施例通常使用通用編碼器1000的變體或補充版本。取決于所需的實現和壓縮類型,編碼器的模塊可被添加、省略、分成多個模塊、與其它模塊組合、和/或用相似的模塊來替代。例如,控制器可被拆分成與編碼器的不同模塊相關聯的多個控制器模塊。在替換實施例中,具有不同模塊和/或其它模塊配置的編碼器執行一個或多個所描述的技術。III.使用知覺模型的視頻內容的表征視頻內容可以使用知覺模型來表征。這可以幫助編碼器對不同種類的視頻內容做出適當的編碼判決。編碼器可在編碼之前分析圖像以提供對該圖像的不同部分(例如,塊、宏塊等)中的內容的表征。例如,視頻圖像中諸如藍天等相對平滑的部分可被表征為對于引入失真是較不可接受的,因為在平滑區域中某些種類的質量降級(例如,量化偽像)更容易被人類感知到。相反,在紋理區域中,失真一般較不會引起注意(因此較可接受)。參考圖12,諸如以上參考圖IO描述的視頻編碼器在表征視頻圖像(例如,表征為平滑區域、邊緣區域、紋理區域等)的各部分(例如,宏塊的塊、宏塊或其它區域)的過程1200中實現自適應編碼技術,并且根據該表征來自適應一個或多個編碼技術。許多所描述的技術提供了圖像內的自適應編碼,諸如在塊、宏塊或其它區域上。這些技術使用信息來對圖像的不同部分分類并相應地編碼它們。更具體地,視頻編碼器基于其知覺特性來表征圖像的各部分以對內容進行分類。在1210處,視頻編碼器表征視頻圖像的一個或多個部分。例如,編碼器基于塊內的強度變化來表征視頻圖像的塊。在一個實現中,編碼器對于塊中的像素或塊的經降采樣的版本計算一像素及其相鄰像素之間的差的和。該差值的和測量了一像素及其周圍像素之間的強度變化。例如,周圍像素包括與一像素相鄰或近乎相鄰的兩個或更多其它像素,諸如在一像素的上方或下方、左邊或右邊、或對角。一像素的強度與其周圍像素的強度之差基于亮度和/或色度數據中的差來計算。換言之,差是用亮度樣本和/或色度樣本來計算的。一平均計算的差值被分配給該像素(例如,像素梯度)。對塊中的各像素(例如,塊梯度)或對其某一二次采樣集計算差值。評估分配給塊中的像素的差值以確定對該塊的表征或分類(例如,平滑、邊緣或紋理;紋理或非紋理;平滑或非平滑;等等),這可被表達為炎澄。在一個示例中,評估對于塊中的像素的像素梯度以確定對該塊梯度的中間差值(例如,塊中值)。由此,塊內的像素之間的強度差提供了對塊、宏塊或其它視頻圖像區域的強度變化的測量。不需要塊中值來確定塊值。強度變化或塊表征也可基于分配給塊中的像素的差值的平均值(例如,塊平均值)。塊中值或平均值可以用于對塊進行分類和/或可用作對更細粒度的控制函數的輸入。該表征或控制函數自適應地改變編碼的一個或多個方面。或者,代替計算強度變化來表征塊,編碼器使用另一度量。在1220處,編碼器基于表征來自適應地編碼視頻圖像。在一個實現中,用于輪廓偽像的移除或減少的編碼技術是基于塊表征來執行的。例如,對某些平滑區域執行梯度斜率檢測、DC漂移檢測、AC系數保存以及自適應差分量化,并且紋理化區域被更強地量化以節省比特率。盡管圖12示出了對于圖像的多個部分表征級1210在自適應編碼級1220之前,但這些級也可在圖像中在逐塊的基礎上迭代進行或者可以在某一其它基礎上排序。在1230處,編碼器用信號表示經自適應地編碼的比特流。當編碼器使用差分量化來基于塊表征編碼時,例如,視頻編碼器使用用于向視頻解碼器發信號表示差分量化的信令方案來編碼壓縮的比特流中的信息。在1240處,相應的視頻解碼器讀取自適應地編碼的比特流,包括對視頻圖像已編碼數據。例如,視頻解碼器讀取用信號表示的差分量化信息。在1250處,解碼器解碼壓縮的比特流,例如根據用信號表示的差分量化信息來對塊解量化。A.示例的基于塊的表征圖13是示出用于使用亮度和/或色度數據來表征塊的基于塊的操作的圖示。亮度塊"Y"(1302)是4:2:0宏塊格式的宏塊的8x8的塊。盡管并非所需,但在該示例中,在計算梯度塊1308時也使用了像素塊的相應色度塊1304、1306。盡管并非所需,但如在本示例中所示的,亮度塊1302在水平和垂直上按照因子2來降采樣1312(例如,通過對樣本對進行簡單的求平均)以創建匹配色度塊的4x4維度的亮度塊1310。如在經降采樣的亮度塊1310中所示的,將像素1314的亮度樣本的強度值與在經降采樣的亮度塊1310中靠近它的四個像素的樣本進行比較,并且計算像素1314的樣本與其周圍的垂直和水平像素的樣本之差的平均和。在該示例中,像素1314位于位置Y'(r,c)處。與其周圍像素比較的該像素1314的亮度強度值的差的平均和為L(r,c)=[IY,(r,c)—Y,(r,c-l)|+|Y,(r,c)-Y,(r-l,c)|+|Y,(r,c)一Y,(r,c+l)|+|Y,(r,c)-Y(r+l,C;H]/4(5)如圖所示,Y,(r,c)是經降采樣的塊Y'中行r列c處的像素1314的亮度分量。b(r,c)提供了像素1314的亮度強度如何有別于塊Y'內的其鄰居的指示。該亮度強度差測量是像素梯度的一個示例。可任選地,色度數據1304、1306可代替亮度數據被單獨考慮,或者可與亮度數據一起考慮來確定強度差。對于像素1314的亮度強度值和色度強度值的差的平均和可被表示為周圍像素的樣本的強度值中的差的平均值,如在以下等式中所示Gr(r,c)={[IY,(r,c)-Y,(r,c-l)|+|Y,(r,c)-Y,(r-l,c)|+『(r,c)-Y,(r,c+l)|+|Y,(r,c)-Y,(r+1,c)|]+[|U(r,c)-U(r,c-l)|+|U(r,c)-U(r-l,c)|+|U(r,c)-U(r,c+l)|+|U(r,c)-U(r十l,c)|]+[|V(r,c)-V(r,c-l)|+|V(r,c)-V(r-l,c)|+|V(r,c)-V(r,c+l)|+|V(r,c)—V(r+1,c)|]}/12(6)Gj(r,c)是對于經降采樣的塊中位于(r,c)處的像素的像素梯度,并且該像素梯度提供了關于像素1314的亮度和色度強度如何有別于其周圍像素鄰居的指示。在此示例中,像素梯度值G(r,c)基于直接垂直或水平的像素,但是未考慮鄰域中的其它像素。構想了在其它變體中在創建像素梯度時也可考慮其它像素數據。例如,作為所提供的安排的一部分或其替代,可考慮對角像素。或者,可考慮較長一段路程(例如,2或3個像素)上的強度差。GKr,c)提供了關于單個像素的亮度和色度強度如何有別于其鄰居的指示。為了表征整個塊的強度變化,對塊內的多個或所有像素執行相同的分析。在一個這樣的示例中,創建像素梯度塊1308,并且從中導出塊梯度。如所指出的,計算像素梯度或塊梯度可以包括單獨的亮度比較、單獨的色度比較、或亮度比較和色度比較兩者。如有需要,可改變以上用于找出Gi(r,c)的等式以解決遺漏的塊邊界值。例如,在塊外部的樣本在自適應等式GKr,c)以解決邊界值時可被外插或假定為與塊內的其它相鄰樣本相同。或者,可以減少該等式的分母且在比較中忽略某些方向上的周圍樣本,例如在這些周圍樣本位于塊外的情況下。如圖所示,像素梯度塊1308可以提供關于塊中的所有像素的像素梯度數據。或者,像素梯度塊1308可以包括關于塊中少于所有像素的像素梯度數據。圖14是圖13的塊1308中的多個像素梯度的直方圖。更具體而言,直方圖1400提供了關于塊可如何被表征或求值的可視化。在該示例中,存在30以下的8個像素梯度值,以及30以上的8個像素梯度值。因此,對于該塊梯度的中值是30。(對于偶數的候選值,中值可以被計算為兩個中間候選值的平均,或被計算為兩個中間候選值中的一個或另一個。)中值可用于將塊表征為平滑、紋理或邊緣。當然,一旦獲得了像素梯度或像素梯度塊,就可使用其它度量來表征塊。例如,塊可以根據像素梯度值的平均值來表征。一旦分配了塊值,它就可在表征方案(例如,平滑或非平滑;平滑、紋理、邊緣;等等)中使用或在更細粒度的控制函數中使用。塊值可用于確定在自適應編碼策略中如何處理塊。塊值可通過對多個像素梯度排序并從經排序的值中選擇中間梯度值來選擇。例如,塊內的一組像素梯度,諸如{10,14,28,36,38},具有所分配的等于該組中的中間像素梯度,即28的塊值。在另一示例中,塊值基于該組中的平均梯度,即對于前述數值示例為25.2來確定。當然,該組可以從完整的塊梯度或其子集中獲得。c.對表征信息的示例使用圖15是繼續了圖13和14的示例的示例塊表征框架的圖。如圖所示,具有范圍從0直到30(包括30)的塊值的塊將被表征為平滑塊。具有大于30但小于或等于60的范圍內的塊值的塊將被表征為紋理塊,而具有大于60的塊值的塊將被表征為邊緣塊。或者,編碼器使用例如包括關于塊或視頻圖像的其它部分的其它和/或附加表征的另一表征框架。對于不同的梯度和度量,該框架可在比例和/或維數上變化。-編碼器可在做出編碼判決時使用塊或視頻圖像的其它部分的表征。表2涉及如參考圖15所描述的塊表征的一個示例性自適應編碼方案的特征。如圖所示,不同地表征的塊在一個或多個自適應特征方面被不同地對待。<table>tableseeoriginaldocumentpage26</column></row><table>表2:自適應編碼特征表2所示的各種自適應特征貫穿本文討論,并且將在下文中進一步討論。或者,編碼器對于塊表征使用另一自適應特征判定映射。此外,此處所描述的某些特征不需要考慮視頻內容的表征。IV.基于紋理水平的差分量化在差分量化中,編碼器對于圖片的不同部分改變量化步長(此處在某些實現中也稱為量化參數或QP)。通常,這涉及在宏塊級或其它子圖像級上改變QP。編碼器做出關于如何改變QP的判決,并且可將這些判決適當地用信號通知給解碼器。早先的解碼器使用了雙級差分量化(在兩個QP之間變化)和多級差分量化(在三個或更多QP之間變化)。例如,在一個雙級差分量化方法中,對圖像邊緣處的宏塊使用一個QP,而對圖像其余部分中的宏塊使用另一QP。這對于在圖像邊緣處節省比特是有用的,在邊緣處,精細細節對于保持總體視覺質量較不重要。在多級差分量化方法中,可對圖像中的各個宏塊使用更大數量的不同QP。例如,編碼器可對宏塊選擇一QP并用信號表示用于當前圖像的QP和用于宏塊的QP之間的差分。對量化偽像的知覺敏感性與空間和時間域中視頻的紋理水平高度相關。高紋理水平通常導致可能會隱藏質量降級和量化偽像的掩蔽效應。然而,在具有較低紋理水平的區域(例如,平滑區域)中,降級和量化偽像更可見。盡管早先的編碼器對于視頻圖像的某些部分(例如,圖像邊緣)做出了量化調整,但是此處所描述的更全面的基于內容的差分量化策略在許多情形中提供了改進的碼率-失真性能。因此,許多所描述的技術和工具使用基于紋理的差分量化(此處稱為l^"謬Dg)來基于各種紋理水平分配比特以實現更好的感知質量。在紋理DQ中,基于紋理信息,并且在某些情況下基于諸如時間分析信息等其它信息,選擇不同QP來編碼視頻。編碼器分析紋理信息(以及可能的其它信息)并向適當的區域(攻^潘Dg^^D,諸如圖像中的8x8的塊或宏塊應用紋理DQ。許多所描述的技術和工具集中于乎滑區域作為潛在紋理DQ區域。平滑區域包括平坦區域(恒定或幾乎恒定色彩的區域)以及梯度斜率區域(以恒定或幾乎恒定的速率在區域上變化的色彩的區域)。平滑區域即使在被小噪聲區域、膜顆粒或其它色彩變化中斷時也可被認為是平滑的。圖16是示出用于基于紋理信息來應用差分量化的通用技術1600的流程圖。諸如圖10的編碼器1000等編碼器或其它工具執行技術1600。在1610處,編碼器獲得關于當前圖像的紋理信息(例如,指示不同區域是平滑、邊緣還是紋理區域的表征或塊值)。在1620處,編碼器找出當前圖像中的一個或多個紋理DQ區域(例如,其中可能存在輪廓偽像的平滑區域)。在1630處,編碼器向(諸)紋理DQ區域應用紋理DQ并編碼該圖像。例如,平滑區域用比高紋理區域小的QP來編碼。如果有更多圖像要編碼,則編碼器在1640處取下一圖像,并適當地向下一圖像選擇性地應用紋理DQ。編碼器將關于視頻圖像的已編碼數據輸出到例如存儲、通信連接或緩沖區。可使用不同的紋理DQ區域檢測技術來確定一區域是否應作為平滑區域來對待。例如,編碼器可使用不同的紋理度量和/或不同的紋理閾值(并且可自適應地調整閾值)來確定一特定區域是否應被認為是紋理DQ區域。可使用自適應量化值映射來分配比特以得到更好的感知視頻質量。差分量化判決也可基于時間分析(例如,查看將來的圖像以隨時間的推移基于區域的特性來做出判決)。可對幀內圖像和預測圖像兩者做出差分量化判決。對于預測的圖像,可控制差分地量化的圖像之間的P和B圖像差分量化區間。此外,通過觀察當存在主導高紋理區域時的圖像紋理,可放松平滑區域紋理閾值以用較小的QP來編碼相對平滑的區域(與主導高紋理區域相比)。類似于以上第III節中參考圖12-15描述的那些技術的技術可用于對當前圖像生成或—^^。例如,如在第III節中所描述的,編碼器將關于圖像的紋理水平的梯度計算為該圖像的Y、U和V通道中的一階倒數(差)。當宏塊格式是4:2:0時,為加速計算過程,編碼器可按照2:1的因子水平和垂直地對Y通道進行降采樣。編碼器對水平和垂直方向中的每一像素的Y、U和V的梯度求和。對于全分辨率的8x8的塊,編碼器計算經降采樣的圖像中的相應4x4的塊中的梯度的和的均值以用作塊梯度值。計算梯度均值與計算如第III節中所描述的中值相比具有較低的計算復雜度。或者,編碼器以某一其它方式獲得關于圖像的紋理信息。例如,編碼器選擇不同的梯度方向來計算梯度、僅對亮度通道計算梯度等等。然而,獲得或計算紋理信息,其然后可用于做出紋理DQ判決。紋理圖指示了圖像的不同部分的紋理水平。例如,紋理圖可用于標識圖像中的平滑區域(例如,塊、宏塊、邊緣或其它區域)和紋理化區域。所描述的差分量化技術可以基于紋理圖中的信息來對圖像的適當部分執行。或者,編碼器使用紋理信息而不首先創建紋理圖。A.時間分析除了來自當前視頻圖像的紋理信息之外,可使用時間分析來做出準確的差分量化判決。使用時間分析的一個理由是對平滑區域使用較小QP的影響在該平滑區域在幾個圖像上都保持平滑的情況下,尤其是當其它圖像在運動補償中引用該平滑區域的時候將變得更大。相反,使用較小QP的一個好處在用將來圖像中的高紋理或邊緣塊替換平滑塊的情況下將失去。因此,編碼器在找到當前圖像中的平滑區域之后査看將來圖像,并且基于將來圖像中的區域改變的平滑度如何來做出差分量化判決。編碼器還可查看先前的圖像,例如顯示次序在當前視頻圖像之前但在運動補償中引用了當前視頻圖像的B圖像。圖17示出了用于使用時間分析來做出紋理DQ判決的示例技術1700。諸如圖10的編碼器1000等編碼器或其它工具執行技術1700。在1710處,編碼器對視頻序列中的當前圖像中的當前塊執行紋理分析。例如,編碼器査看該塊的梯度信息。編碼器可將該梯度信息與用于該塊的梯度閾值進行比較,并將該塊分類為平滑或非平滑(例如,紋理、邊緣),其中梯度閾值是固定的或對視頻序列的當前圖像或其它部分動態地設置。或者,編碼器對當前圖像中的某一其它部分執行紋理分析。在1720處,編碼器執行時間分析。編碼器可以自動執行該時間分析,或者僅當當前塊被分類為平滑塊時執行該分析。例如,編碼器確定當前圖像中的平滑塊是否在將來圖像中保持平滑。如果是,則當前圖像中的平滑區域稍后用較小的QP來編碼。或者,編碼器確定當前圖像中的平滑塊是否在先前的圖像或者先前和將來的圖像兩者中也是平滑的。編碼器所分析的先前和/或將來圖像的數目可以取決于實現而變化。如果平滑區域在將來圖像(例如,下一圖像或某一其它時間上接近的圖像)中被一紋理化區域替換,則當前圖像中的該平滑區域可能用較大的QP來編碼,因為使用較小QP的優點可能并不那么持久。在一個實現中,在做出差分量化判決時,時間上更靠近的圖像與更遠的圖像相比被加權更多。編碼器所查看的先前和/或將來圖像的加權和數目可以取決于實現而變化。為簡化計算,編碼器可找到單個值以比較當前塊和將來圖像中的相應塊。例如,由于亮度值在平滑塊中是相當一致的,因此計算塊的亮度值的均值以測量將來圖像中的相應塊的相似性。在以下示例等式中,將來圖像中的相應塊的將來平滑度的"強度"S()通過當前塊和將來塊中的相應塊的平均亮度值、兩個將來圖像中的相應塊的平均亮"度值等等之間的加權絕對差的和來計算。柳=C(")*J("-+1)*|(卿+0-W+''-1)|(7)其中n是時間上"超前"Sffe像的總數,C(n)是歸一化因子,其被定義為2/(n*(n+l)),而A/(0是時刻f處圖像中的塊(或相應塊)的亮度值的均值。編碼器還可測量過去的平滑度來代替將來的平滑度或作為其補充。或者,編碼器在平滑度的時間分析中使用另一加權系統和/或平滑度度量。再次參考圖17,在1730處,編碼器使用紋理分析和時間分析的結果來確定是否將該塊分類為紋理DQ塊。例如,編碼器對平滑塊(但非其它塊)計算平滑度強度^S"W,并將該平滑度強度^W與時間平滑度閾值進行比較。該時間平滑度閾值可以是固定或動態地設置的。在圖17中,如果編碼器發現當前塊是平滑塊并且先前和/或將來圖像中的相應塊也是平滑的,則編碼器在1740處將當前塊加到紋理DQ塊的計數。編碼器可使用紋理DQ塊的計數來確定是否對該圖像執行紋理DQ。或者,編碼器以某一其它方式使用時間分析來做出紋理DQ判決。如果有更多的塊要分析,則編碼器在1750處取下一塊并重復圖17所示的過程。這繼續直到編碼器評估了當前視頻圖像的各塊。此時,編碼器在編碼判決中使用平滑塊計數或時間分析的其它結果。盡管圖17示出了在逐塊的基礎上執行時間分析,但是替換地,編碼器在逐宏塊的基礎或某一其它逐區域基礎上執行時間分析。B.紋理DQ閾值和隔離平滑塊濾波不論編碼器是否使用時間分析,編碼器在決定何時應用紋理DQ時都可使用若干其它機制。編碼器可使用一個或多個流行的閾值(例如,圖像中的平滑塊的百分比)來做出關于是否執行DQ、以及如果是則用于紋理DQ區域的QP應有多精細的判決。例如,如果圖像中的平滑塊的數目或百分比在一閾值之上,則編碼器可選擇一較粗略的步長來避免花費太多比特來用小QP編碼平滑內容。編碼器還可具有較低的閾值來確定平滑塊的數目或百分比是否足夠以在圖像中完全使用紋理DQ。降低比特率的另一種方法是在某些平滑塊位于主導的紋理化區域中時將這些平滑塊作為紋理塊來對待。這可被稱為隔離平滑塊濾波(盡管平滑塊不必完全"隔離"以用此方式來濾波)。例如,紋理化塊所圍繞的平滑塊不必用比紋理化塊小的QP來編碼,因為平滑塊中的量化偽像可能被周圍的紋理化內容所掩蔽。結果,編碼器可選擇不對隔離平滑塊執行紋理DQ。編碼器還可在計算圖像中的平滑塊的數目或百分比時不考慮隔離平滑塊。圖18示出了用于使用閾值和隔離平滑塊濾波來做出紋理DQ判決的示例技術1800。諸如圖10的編碼器1000等編碼器或其它工具執行技術1800。在1810處,編碼器找出當前圖像中的平滑塊。例如,編碼器如參考圖17所描述地執行紋理分析和時間分析。或者,編碼器以某一其它方式找出當前圖像中的平滑塊。在1820處,編碼器執行隔離平滑塊濾波。例如,編碼器移除當前圖像中被非平滑塊圍繞的單個平滑塊。編碼器可使用不同的判決模型來執行隔離平滑塊濾波。例如,編碼器可選擇僅在一平滑塊的所有相鄰塊都是紋理化塊時才將該平滑塊作為紋理化塊來對待。或者,編碼器可選擇在一平滑塊的特定數目的相鄰塊是紋理化塊時將該平滑塊作為紋理化塊來對待。或者,編碼器移除較大組(例如,2或3)中的隔離平滑塊,和/或使用對于塊是否被隔離的某一其它測試。在1830處,編碼器對照一低閾值(例如,圖像中的總塊數的1-2%)來檢查圖像中的平滑塊的百分比。如果平滑塊的百分比落在該低閾值之下,則編碼器確定對該圖像將不使用紋理DQ(1840)。如果平滑塊的百分比在該低閾值之上,則編碼器在1850處對照一高閾值檢查該百分比。該較高的閾值用于為平滑塊選取QP。如果該百分比高于該高閾值,則編碼器執行紋理DQ,但是對平滑塊選擇較粗略的QP(I860)來降低比特率。否則,編碼器對平滑塊選擇較精細的QP(1870)。如果有更多圖像要分析(1880),則編碼器可對其它圖像重復該過程。閾值的數目和閾值百分比值可以取決于實現而變化。或者,編碼器執行隔離平滑塊濾波而不使用紋理DQ閾值,或使用紋理DQ閾值而不執行隔離平滑塊濾波。或者,編碼器執行紋理DQ而不執行隔離平滑塊濾波,也不使用DQ閾值。C.自適應紋理水平閾值編碼器可使用固定紋理水平或平滑度閾值來確定給定塊是否應被認為是紋理DQ塊(例如,平滑塊)。考慮DQ信令的比特率成本(例如,在"全宏塊"雙級DQ信令情形中為每宏塊一比特)和以較小的QP量化圖像的某些部分的比特率成本,閾值擔當對紋理DQ的成本的檢驗。例如,編碼器獲得關于塊的塊值(使用參考圖13和14所描述的技術或某一其它技術)并將該塊值與一固定紋理水平/平滑度閾值(例如,參考圖15所描述的閾值)進行比較。編碼器還可自適應地改變紋理水平/平滑度閾值。例如,由于平滑塊的可感知性可能在具有大量高紋理內容的圖像中改變,因此用于將塊分類為平滑塊的紋理水平閾值在中等紋理或高紋理圖像中可被放松。這是自適應紋理水平閾值的一個示例。編碼器可允許在一閾值范圍內選擇若干不同的閾值。在一個實現中,用于平滑塊的自適應紋理水平閾值可以在塊值14和塊值30之間變化。可對不同的紋理水平閾值使用不同的差分量化映射。自適應紋理水平閾值可用于向較高紋理幀中的較平滑區域分配比特以改進較平滑區域中的質量。圖19示出了用于對高紋理圖像選擇性地調整紋理水平閾值的技術19。諸如圖10的編碼器1000等編碼器或其它工具執行技術1900。編碼器通過檢測圖像中主導高紋理內容的存在來確定是否要調整紋理水平閾值。在一個實現中,對高紋理內容的檢測是通過計算紋理直方圖中大小為10的滑動窗中的紋理"能量"來實現的。參考圖19,編碼器在1910處以自適應紋理水平閾值技術1900獲得圖像的紋理信息(例如,紋理水平直方圖)。例如,編碼器獲得如上所述的紋理圖并從該信息中創建紋理水平直方圖。在1920處,編碼器檢查該圖像是否是高紋理圖像。如果該圖像是高紋理圖像,則編碼器在1930處調整用于該圖像的紋理水平閾值。如果該圖像不是高紋理圖像,則編碼器處理該圖像而不調整紋理水平閾值(1940)。編碼器然后可分析并選擇用于其它圖像的紋理水平閾值(1950)。或者,編碼器對圖像中不同水平的高紋理內容應用不同紋理水平閾值的滑動比例。例如,為檢査圖像中主導高紋理內容的范圍,編碼器為該圖像計算紋理直方圖。編碼器應用紋理直方圖中的滑動窗以計算紋理能量并確定峰值或主導高紋理帶。等式(8)示出了供編碼器用于在該窗中計算紋理能量的一種方式。該滑動窗從最小紋理水平閾值gO(默認為30)開始滑動,并且編碼器計算gO處的窗值『(g)。該滑動窗在為該窗計算了紋理能量之后向右移動1,并且編碼器計算在新的gO值處開始的下一窗值『(g)。該過程繼續,直到編碼器到達直方圖中所示的紋理水平的最大值。設F(g)為每一像素的紋理水平的直方圖。設E(g)為該紋理水平的紋理能量,其中五(g"F(g)+g。編碼器如下計算滑動窗的紋理能量<formula>formulaseeoriginaldocumentpage33</formula>(8)如果最大滑動窗能量『(g)超過總圖像能量的某一特定百分比閾值,則使用對于該最大滑動窗能量『(g)的g0來調整用于平滑區域的閾值。圖20示出了用于從g0確定新的自適應平滑區域閾值的偽代碼2000。如果g0大于100,則自適應閾值被設為30。編碼器還檢查g0是否小于30,如果是,則將自適應閾值設為14。否則,如果30《^〈100,則自適應閾值被設為來自表g—iFlatThTable的值。為幫助維持視頻質量,對除了場景改變關鍵圖像之外的所有圖像,將新的自適應閾值與上一個自適應閾值的最大差設限為+/-4。自適應平滑閾值不應超過用于標識紋理化塊的閾值一例如,在圖20中,最高自適應閾值為30。或者,編碼器以某一其它方式(例如,采用不同的紋理強度或能量度量、不使用滑動窗、使用不同地配置的滑動窗、使用表或其它數據結構中的不同閾值、不對自適應閾值之差設限、以某一其它方式對自適應閾值之差設限等等)來自適應地調整紋理水平閾值。D.I圖像和P圖像差分量化所描述的差分量化技術和工具可單獨或組合地用于幀內圖像和預測圖像。術語/凰像^^量眾(I圖像DQ)指的是向I圖像應用差分量化,而術語尸凰像_#分量眾(P圖像DQ)指的是向P圖像應用差分量化。使用I圖像DQ得到更高質量的I圖像,并且對于依賴于這些I圖像的預測圖像可以更長時間地維持質量改進。P圖像DQ可以進一步在幀內和幀間塊中改進P圖像質量,但是這些P圖像的質量也依賴于從中預測它們的圖像的質量。類似地,P圖像DQ對稍后預測的圖像的質量的影響將依賴于稍后預測的圖像與從中預測它們的圖像的相似度。E.差分量化區間I圖像DQ和P圖像DQ都使用一種或多種此處所描述的技術來決定是否對不同紋理水平的塊應用不同的QP。為平衡質量和比特使用,可使用P圖像DQ區間來控制花費在P圖像DQ上的比特量。例如,編碼器選擇對每"個P圖像中的一個使用P圖像DQ,其中"kl,但是對差分地量化的P圖像之間的區間中的圖像跳過P圖像DQ。編碼器將比特花費在差分量化上以改進某些P圖像的感知質量,并且這些質量改進延續到其它預測圖像中。同時,DQ區間有助于約束編碼器花費在預測圖像的差分量化上的總比特數。或者,編碼器選擇另一區間。例如,編碼器可選擇對每一I圖像僅對一個P圖像使用P圖像DQ,或選擇某一其它區間。區間可以是固定或自適應的。例如,編碼器可以基于所編碼的內容的類型來自適應地調整P圖像DQ區間。V.梯度斜率檢測在引入到視頻壓縮中的各種視覺偽像中,輪廓是因量化引起的一種具體偽像。輪廓偽像被人類眼睛感知為在諸如天空、水等本應是連續的、非常平滑的區域中的結構化的、梯度不連續性。這一不連續性可能非常令人分心,并且可能導致人類觀察者即使在圖像的其它部分是以極少的視覺失真編碼的情況下也得出整個圖像有較壞的失真的結論。梯度斜率區域可以引起輪廓偽像。根據一種定義,如果一區域是平滑或相對平滑的,但是像素值在該區域內逐漸改變,則該區域被認為是賴^^斜^^"乂處。由此,盡管梯度斜率區域和平坦區域都被認為是平滑區域,但梯度斜率區域與平坦區域不同。根據一種定義,平坦區域是由遍布整個平坦區域恒定或相對恒定的像素值來表征的。梯度斜率區域通常缺少強邊緣和大范圍的紋理細節。圖21示出了梯度斜率區域的兩個示例。每一區域中的梯度斜率方向由箭頭來表示。在梯度斜率區域2100中,亮度值從該區域的頂部到底部逐漸增加。梯度斜率區域2100中的斜率的方向在該區域的每一部分中都是相同的。在梯度斜率區域2110中,亮度值從該區域的中心到邊緣逐漸增加。梯度斜率的方向在梯度斜率區域2110內變化。然而,在小鄰域中,每一點處的梯度斜率方向在該鄰域中的其它點處的梯度斜率方向的小角^內,包括該中心點的鄰域除外。如圖21所示,梯度斜率區域包括其中梯度斜率方向在整個區域中恒定的區域,以及其中梯度斜率方向在鄰域中具有小變化的區域。圖22A是示出具有梯度斜率區域2210、紋理化區域2220、銳邊區域2230和平坦區域2240的示例圖像2200的圖示。圖22B是示出梯度斜率區域2210中的量化結果的圖示。現在可見(例如,在宏塊2250內)帶狀效應是輪廓偽像。圖22C示出了宏塊2250的細節。宏塊2250中的上半部分亮度樣本的變換系數的量化導致起源于DC值68的均勻值。宏塊2250中的下半部分亮度樣本的變換系數的量化導致起源于DC值70的均勻值。由此,亮度樣本的變換系數的量化造成了宏塊2250中上半部分8x8的塊和下半部分8x8的塊之間的可見輪廓偽像。許多現有的視頻編碼器使用了應用于整個視頻圖像的技術以試圖減少圖像中的輪廓偽像。這些技術可導致花費過多的比特,尤其是在包含極少或沒有輪廓偽像的區域中。因此,若干所描述的技術和工具允許編碼器檢測可能發生輪廓偽像的梯度斜率區域。當檢測到梯度斜率區域時,編碼器可以做出減少或避免在梯度斜率區域中引入輪廓偽像的編碼判決(例如,對QP的調整)。通過這樣做,編碼器可以更高效地分配比特并達到更好的視覺質量。為檢測梯度斜率區域,編碼器可實現以下技術中的一種或多種1.具有集中于減少或移除所檢測的區域中的輪廓偽像的引入的編碼判決的地圖斜率區域檢測。2.減少計算成本和/或盡管在存在諸如膜顆粒等異常的情況下也允許準確的梯度斜率區域檢測的基于區域的梯度估計和降釆樣。3.檢測局部鄰域中的逐步梯度改變的梯度一致性檢驗。4.做出關于圖像中的梯度斜率區域的存在的二分判決的桶投票。5.幫助編碼器做出適當的編碼判決的梯度斜率掩碼(例如,在宏塊級)和梯度方向圖的生成。圖23示出了通用的基于區域的梯度斜率檢測技術2300。諸如圖10的編碼器1000等編碼器或其它工具執行技術2300。在某些情況下,基于區域的梯度斜率檢測技術2300允許通過消除對圖像中的每一像素找到梯度斜率方向的需求來允許對梯度斜率內容的更快檢測。例如,圖像被劃分成相同大小的非重疊矩形區域。區域的大小可以取決于實現而變化。在一個實現中,區域是16x16的宏塊(4個8x8的塊)。較佳地,區域是允許宏塊對齊的大小。在2310處,編碼器檢查當前區域是否是平滑區域。例如,編碼器使用其中如果8x8的塊被分配的塊梯度值小于30則該塊被表征為平滑的圖像的紋理圖,或者編碼器使用利用在第III或IV節中描述的另一技術的對當前區域是否為平滑的檢驗。當一區域包括多個塊時,如果包含在該區域中的所有塊都是平滑的(或者替換地,如果某一最小數量塊是平滑的),則該區域被認為是平滑區域。不同的實現可使用不同的準則來確定一特定區域或塊是否為平滑的。例如,用于確定一區域是否平滑的準則在圖像被降采樣的情況下可以不同。如果一區域不是平滑的,則處理下一區域(2230)。對于平滑區域,編碼器在2330處找出梯度方向。例如,編碼器使用諸如參考圖26和27所描述的技術來找出梯度方向。或者,編碼器用某一其它技術來找出梯度方向。在2340處,編碼器使用依賴于用于對該區域找出梯度方向的技術和度量的閾值和/或判決制定邏輯來對該區域做出梯度斜率判決。如果有更多區域要處理,則編碼器處理下一區域(2320)。在一個實現中,在對圖像中的不同區域計算了初始梯度方向之后,編碼器通過在圖像中應用滑動窗來生成指示不同區域中是否存在梯度斜率的二進制掩碼。該二進制掩碼中的信息允許編碼器做出準確的梯度斜率判決。圖24是諸如圖10所示的視頻編碼器中的示例梯度斜率區域檢測器(GSR檢測器)2400的框圖。GSR檢測器2400取來自當前圖像2405的像素數據作為輸入。取決于圖像大小和可能的其它因素,GSR檢測器2400確定是否在降采樣模塊2410中執行降采樣。示例降采樣技術如下所述。梯度計算器2420取(可能經降采樣的)像素數據和紋理圖2425作為輸入,并計算平滑區域的梯度。例如,梯度計算器使用諸如參考圖26和27所描述的技術或使用某一其它技術。梯度計算中的一個示例區域大小是16x16,但是區域的大小可以取決于實現而變化。取決于是否應用降采樣以及應用了多少降采樣,對其計算梯度的區域可以表示原始圖像2405中不同數量的區域。梯度計算器2420輸出指示平滑區域的梯度方向的映射表或其它數據結構。一致性檢驗器2430取對平滑區域所計算的梯度,并例如如下所述地檢驗這些梯度的角一致性。一致性檢驗器24產生指示所計算的梯度的一致性信息的一致性映射表或其它數據結構。判決模塊2440使用附加判決規則(在一致性檢驗之后)來確定平滑區域是否應被認為是梯度斜率區域。示例判決規則和準則如下所述。判決模塊2440考慮指示一致性信息的一致性映射表或其它數據結構,并且還考慮所計算的梯度方向或其它信息。判決模塊2440輸出關于與梯度計算中使用的區域大小相同或不同大小的區域的映射表或其它數據結構中的判決信息。對每一區域的判決被提供給掩碼生成器2450,后者產生指示用于圖像中的各區域的梯度斜率判決的梯度斜率掩碼和/或二進制梯度斜率掩碼2495。例如,掩碼2495包括對每一梯度斜率區域等于"1"的比特,以及對其它區域等于"0"的比特。接受所計算的梯度作為輸入,考慮了降采樣和掩碼判決,掩碼生成器2450可產生指示原始圖像的不同區域的最終梯度斜率的另一掩碼2495。當GSR檢測器2400在梯度計算之前執行降采樣時,掩碼生成器2450可以將經降采樣的區域的梯度斜率分配給原始圖像的相應區域。GSR檢測器2400的組件在圖24中被示為分開的模塊,但是這些組件的功能可取決于實現被重新排列、組合或拆分成不同的模塊。此外,梯度斜率檢測器2400的組件在其它實現中可被省略。例如,不需要降采樣。GSR檢測器不需要取紋理圖作為輸入,并且可改為從某一其它源獲得關于一區域是否平滑的指示。GSR檢測器不需要使用一致性檢驗器。盡管GSR檢測器將做出關于一區域是否為梯度斜率區域的某種判決,但是如何做出判決的細節(包括判決模塊中的判決規則)可以取決于實現而變化。梯度斜率判決不需要被包括在二進制掩碼中,并且可以某一其它方式傳遞給編碼器的其它部分。A.具有降采樣的基于區域的梯度方向估計降采樣可在找出區域的梯度方向之前使用以降低計算成本。在一種實現中,如果原始圖像寬度大于1280且高度大于720,則對原始圖像進行4-l降采樣。例如,在圖像寬度為1920像素且圖像高度為1080像素的1080p安排中,解碼器產生寬度為480像素且高度為270像素的經降采樣的圖像。通常,經降采樣的圖像被劃分成相同大小的非重疊矩形區域。例如,在降采樣之后,每一16x16的區域對應于原始的、全分辨率圖像的4個宏塊(16個塊)。如果經降采樣的圖像中的區域所對應的至少12個塊是平滑的,則該區域被認為是平滑區域。區域大小取決于實現,并且梯度估計中的區域和原始圖像中的區域之間的關系取決于降采樣比率而變化。降采樣也可用于在盡管存在諸如膜顆粒等異常的情況下也能改進梯度斜率區域檢測的準確度。例如,考慮如圖25所示的具有DC塊值的一部分圖像2500。圖像部分2500的大部分具有一致的梯度斜率方向,如由從該圖像部分的頂部到底部逐漸增加的DC值所示的。然而,白樣本值表示受到膜顆粒影響的DC值,這造成了全分辨率下的異常梯度斜率方向。采用水平和垂直的簡單2_1降采樣,使用深色邊框的樣本值來計算梯度斜率方向。由于經降采樣的值維持一致的梯度斜率,因此膜顆粒不影響梯度斜率的檢測。降采樣可用于其它圖像分辨率,并且也可使用其它降采樣比率。B.計算梯度斜率方向在一個實現中,為對平滑區域計算梯度斜率方向,向該區域應用兩個16x16的羅盤算子尺w和i^(在圖26中定義)。這產生對于該區域的兩個梯度&、gy,一個對應于水平方向,一個對應于垂直方向。對于16xl6的區域,該羅盤算子對該區域的某些值給予正權重,而對該區域的其它值給予負權重。或者,該羅盤算子以某一其它方式計算梯度。從兩個梯度中導出梯度方向的角表示,表示為e,并將其映射到[O,255]中的整數。圖27中的偽代碼2700示出了用于使用圖26的羅盤算子來對區域計算梯度方向的示例例程(^表示逐元素的乘積)。如果該區域是紋理化區域或邊緣區域,則該例程返回-2。如果該區域是平滑但是平坦的(由關于該區域的梯度gjf和gr的低絕對值指示),則該例程返回-1。否則,該例程計算梯度斜率為垂直梯度gy在水平梯度g^上的反正切,其中使用偏移量以在同一反正切值的梯度斜率之間區分(例如,正的反正切值是指示右上斜率還是左下斜率),并將斜率值的范圍表示為正數。或者,以某一其它方式計算梯度。例如,編碼器使用不同的羅盤算子、對斜率區域的不同閾值、計算斜率的不同邏輯、和/或對斜率信息的不同表示。C.鄰域梯度一致性檢驗編碼器可以對區域執行梯度一致性檢驗以幫助做出關于一區域是否應被認為是梯度斜率區域的準確判決。梯度一致性檢驗有助于避免梯度斜率內容檢測中的"假警報"。在一個實現中,梯度斜率一致性檢驗涉及使用3x3的滑動窗(三個區域乘三個區域)來確定梯度斜率一致性。圖28示出了用于對梯度斜率區域執行一致性檢驗的技術。諸如圖10的編碼器1000等編碼器或其它工具執行技術2800。在2810處,編碼器將滑動窗定位在圖像中的當前區域處。在2820處,編碼器檢驗滑動窗中的區域的梯度方向。然后,在2830處,編碼器對當前區域做出一致性判決。例如,給定(可能經降采樣的)圖像中所檢測的平滑區域的梯度方向,使用包含3x3的相鄰區域的滑動窗來執行梯度一致性檢驗。該窗以光柵掃描順序移動,從而將該窗定位在圖像中的一區域上(例如,通過使窗中心位于該區域上、執行一致性檢驗、然后將該窗在圖像中從左向右移動)。對于給定窗值,一致性檢驗要求該窗內的所有9個區域的最大和最小賴^^方場(參見例如圖27)之差小于32(等價于當斜率由從0到255的數字來表示時的45度)。如果滿足該條件,則對于3x3的區域集的移動窗值為1;否則其為0。或者,編碼器使用一不同的機制來檢驗斜率方向的一致性,例如,使用不同大小的滑動窗、對最大斜率一最小斜率的不同斜率范圍閾值、諸如關于斜率一致性的方差等不同的度量、和/或不同的檢驗模式,或對每一區域而非對區域集計算滑動窗值。一致性檢驗對斜率信息的不同表示變化。編碼器然后可處理下一區域集(2840)。作為輸出,編碼器產生指示判決信息的掩碼或其它數據結構。例如,編碼器產生通過定位滑動窗并對圖像中的區域集執行一致性檢驗,并向每一區域集分配判決l(一致斜率)或0來獲得的二進制一致性掩碼(此處稱為cww/We"cyM"fl^)。可任選地,編碼器對判決信息執行進一步的處理。在某些實現中,編碼器對一致性掩碼執行形態運算以幫助細化關于圖像的梯度一致性判決。兩種可能的形態運算是虔^和,嚴(Z)z7afe)。例如,^紐運算對co肌'飾"^M^中的每一比特執行,之后是,嚴運算。在虔紐運算中,如果在四個最接近的像素(此處為co,'飾^yMc^:中的值)中,有一個以上最初被標記為0,則最初被標記為1的比特被標記為0。在^^^運算中,如果在四個最接近的像素中有一個以上最初被標記為1,則最初被標記為O的比特被標記為1。或者,編碼器生成掩碼而不使用形態運算或判決信息的其它后處理。D.判決規則和桶投票即使是在執行了一致性檢驗之后,平滑區域的發生率也可能相當低,或者平滑區域可能被隔離,以致于其不足以被特別地編碼。例如,即使在應用了形態運算之后,仍可能有co朋^e"cyAfa^中所表示的被足夠隔離以致于不需要差分量化的梯度斜率區域。在某些實現中,編碼器使用判決規則(包括例如桶投票)來幫助決定是否應向圖像中的梯度斜率區域應用DQ。在圖24的GSR檢測器2400中,判決模塊2440做出這些判決。在一個實現中,編碼器基于co朋&e"c;M^A做出關于當前圖像是否包含顯著梯度斜率的一個或多個二進制判決。掩碼cow^^o^/a^:被劃分成相同大小的25個矩形區域(稱為裙(^cfef)),其中每一行有5個桶,每一列有5個桶。("桶"區域因此大于用于判決的區域和用于梯度計算的區域。)對每一桶中的1計數。設S"cfeGA/Z):7是包含在位置(z',力處的桶中的1的個數,其中0SO'S4。水平和垂直桶投影一分別是桶的每一列中的1的個數和桶的每一行中的1的個數一也根據以下關系來計算(9)在該實現中,如果滿足以下條件中的任一個,則圖像被認為包含顯著的梯度斜率1.co似/We"c;;Afo^:中至少6Q/()的像素(不管桶分布如何)被標記為1,或者2.在一個或多個桶中,至少75%的像素被標記為1,或者3.在一個或多個桶投影中,至少20%的像素被標記為1。例如,對于大小為960x1440的經降采樣的圖像的16x16個區域用大小為20x30的掩碼(每一值用于經降采樣的圖像的3x3的區域集)來表示,這些區域進而被劃分成25個桶,每一個桶對應于一致性掩碼的24個區域。每一桶包括來自cora/Wewcy7Wa^:的24個比特,總共有25x24=600個比特。編碼器對每一桶中的1的個數計數,其分布如圖29所示。編碼器檢査1的總數是否大于所有比特的6%。在這一情況下,l的總數(如圖29所示)是83,這大于全部比特的6%。因此,這一情況中的編碼器將由于以上對條件1的滿足而跳過桶投影。如果1的總數低于條件1的閾值,則編碼器將檢查任何桶中的75%的比特是否為1(條件2),且如有必要,檢査水平和垂直桶投影(條件3)來確定被指示為梯度斜率區域的區域是否使得應生成梯度斜率掩碼和判決掩碼,諸如以下所述的宏塊級梯度斜率掩碼。或者,編碼器使用其它判決規則來處理掩碼co似/We"c;;M^A:或其它表示中的一致性信息。例如,條件l、2和3中所示的百分比閾值可以取決于實現而變化。或者,省略一個或多個條件,或者對條件進行重新排序、用其它條件(例如,桶投影的不同方向等)來替換或補充。除了檢驗一致性信息之外,編碼器在決定是否應向圖像中的梯度斜率區域應用DQ以及應用多少DQ時還可考慮梯度值和/或其它信息。作為另一替換,編碼器可以將這些判決規則一起省略,且在生成梯度斜率掩碼時僅使用co朋/We^yMa^。E.宏塊級梯度斜率掩碼生成為了提供可用于稍后編碼器的判決制定形式的梯度斜率信息,編碼器將信息置于映射表、掩碼或其它數據結構中。該信息可包括梯度斜率區域存在/缺失信息,以及梯度斜率區域的實際梯度方向值。對于梯度斜率存在/缺失信息,如果檢測到梯度斜率區域,則編碼器產生梯度斜率掩碼。例如,編碼器通過將區域級掩碼(諸如co似/We"c;^/fl^)轉換回原始圖像的宏塊級并考慮可能的降采樣,來產生宏塊級梯度斜率掩碼(此處稱為AffiS7o/eMa^:)。注意,cww/WewcjM/a^:中的每一值對應于原始圖像中的9個宏塊,或者如果圖像被4-1降釆樣則對應于36個宏塊。對于cwmWewcyAfa^:中值為1的每一比特,編碼器在AffiS/o;e71^^:中將相應宏塊標記為1,不平滑的宏塊除外。檢驗平滑度再次有助于避免梯度斜率檢測中的假警報。例如,在一個實現中,編碼器使用紋理圖來獲得關于宏塊中的塊的紋理信息,并且僅當宏塊內的所有四個塊都是平滑的時候該宏塊才被認為是平滑的。或者,編碼器提供某一其它形式的梯度判決信息和/或對宏塊平滑度使用某一其它判決。對于梯度方向信息,通過將每一區域的梯度方向分配給所有其相應的平滑宏塊來生成梯度方向圖。通過這樣做,編碼器解決了由于梯度計算之前的降釆樣而引起的原始圖像的宏塊和梯度區域之間的可能的大小差。所生成的梯度斜率掩碼和梯度方向圖然后在編碼器中用于做出更好的編碼判決。一般而言,由梯度斜率區域檢測器生成的結果可由編碼器用于做出其它編碼判決。例如,編碼器可基于所生成的梯度斜率掩碼和/或梯度方向圖來做出量化判決。一些可能的編碼器判決如下所述。VI.調整量化以保存非零AC系數通常,由編碼器中的碼率控制單元向圖像分配圖像級量化參數。使用相同的圖像級QP,用于表示高度紋理化的宏塊的比特的數量通常要比用于表示低紋理化宏塊的比特的數量要大得多(多達10到50倍)。然而,由于人類視覺系統對于繁忙的、高度紋理化的區域中的失真要比平滑的、低紋理化區域中的失真更不敏感,對低紋理化宏塊使用較小QP而對高度紋理化的宏塊使用較大QP是有意義的。這導致常用的根據人類視覺重要性來分類宏塊(通常使用塊或塊內梯度強度的方差)并分配與某一感知加權成比例的目標個數的比特的策略。用于要修改的每一宏塊的量化參數通過根據加權來修改圖像級量化器來選擇。實驗表明,在非常低變化的平滑區域中,塊通常被量化為僅在DC系數中有能量(沒有剩余非零AC系數),即使是在合理的低QP下也是如此。令人驚奇的是,當極度平滑區域中的相鄰塊中的DC值在各塊之間僅改變1時,所感知到的成塊的輪廓偽像要比使用絕對值方面小的這一差所預期的嚴重得多。此類偽像在本應是良好編碼的圖像內部的相對小區域中的出現會導致對整個圖像的總體感知質量被降低。傳統的基于碼率-失真和基于感知的宏塊QP選擇技術沒有很好地處理這一情形。采用碼率-失真優化,由于絕對值上小的失真,平滑塊將被認為是良好編碼的,并且因此不對這些塊花費進一步的比特。另一方面,典型的基于感知的方法將宏塊分類到感知類中,并且通過根據宏塊的感知類對圖像級量化參數加上或減去預定義的偏移量來向每一宏塊分配一量化參數。除非該預定義偏移量非常具侵略性(例如,將用于平滑區域的QP減少為1),否則這些方法不能保證具有小變化的平滑塊不會被量化為單個非零DC系數,且所有AC系數被量化為0。但是設置一非常侵略性的偏移量會增加花費在宏塊上的比特,而這些宏塊可能不需要這些比特來改進感知質量,從而低效地提高了比特率并且與由編碼器對碼率控制所選擇的圖像級量化參數沖突。因此,以下描述的若干技術和工具選擇性地且明智地分配圖像內的比特,使得向平滑區域分配足夠的比特以減少或去除成塊或輪廓偽像的引入。例如,編碼器對I圖像內的每一宏塊計算QP并選擇一量化參數以向平滑塊分配足夠的比特,由此減少了I圖像中感知到的成塊偽像。對于具有一個或多個平滑塊的每一宏塊,選擇一QP,使得對該宏塊的每一塊有至少^個非零量化的AC系數,其中W是大于或等于1的整數。通常,所保存的AC系數是用于變換的最低頻率AC基函數的系數,這表征了塊上水平和/或垂直地改變的漸進值。這往往有助于每一塊的感知到的視覺質量,尤其是對于具有低變化的平滑區域。在一個實現中,編碼器選擇不超過圖像QP的最大QP,該QP如所需地保存了AC系數。可以存在未保存非零AC系數的情形(例如,非常平坦的塊)。然而,一般而言,以此方式,編碼器不會在以較小QP花費比特上過度侵略,并且減少或避免了與圖像QP的沖突。采用合理的W值,所選的QP不會對大多數宏塊改變;它對于大多數宏塊與圖像QP相同,并且僅幾個平滑塊受到影響。合理的W值是1、2、3或4。所選QP更有可能對具有低紋理的宏塊改變。在一個實現中,W=1或2改進了感知的質量,而圖像比特率沒有太多增加。圖30示出用于選擇宏塊QP來幫助保存一個或多個非零AC系數的示例技術3000。諸如圖10的編碼器1000等編碼器或其它工具執行技術3000。在3010處,編碼器找出宏塊的每一亮度塊的第W大的AC系數。例如,如果W=2,則編碼器找出16x16的宏塊的四個8x8的塊的每一個的次大的AC系數。設JC(O)、JC(l)、^C(2)、^C(3)分別是四個亮度塊0、1、2和3的第W大的系數。對于宏塊中的不同塊組織,第W大的系數可以來自宏塊中的更多或更少塊。在3020處編碼器找出這些第W大系數值中的最小值。對于四個塊的第大系數,v4Cmin=min04C(0),JC(l),^C(2),^C(3))。對于其它塊數,不同地計算JCmin。在3030處,編碼器對宏塊設置QP,使得JCmi。位于該QP的死區閾值之外。死區閾值是用于在使用QP的值來量化時將AC系數量化為0的"截止"閾值。死區閾值通常是對給定QP預定的,并且與該QP成比例。死區閾值是在0和第一個重構點之間的某一點處選擇的。當編碼器使用均勻量化器或非均勻量化器時,第一個重構點取決于QP值以及是使用了均勻還是非均勻量化。在一個實現中,第一個重構點是量化系數水平=1的重構值,這對于均勻量化為2申QP,而對于非均勻量化為3*(^。對于均勻量化,截止閾值因此落在0和2*(^>之間。對于非均勻量化,截止閾值因此落在0和3+QP之間。例如,死區閾值Z(QP)對均勻量化被選為Z(QP)=6*QP/5,而對于非均勻量化被選為Z(QP)=2*QP。或者,可使用其它截止閾值。如果Abs(」C)<Z(QP),則AC系數將被量化為0為對宏塊設置(3030)QP,編碼器可通過從圖像QP開始并遞減QP直到達到用于量化器的最小QP(例如QP=1)或滿足不等式Abs04Cmin)>=Z(QP),將JCmin與用于候選的QP值的Z(QP)進行比較,來對宏塊找出保存至少N個AC系數的QP(QPm)。如果滿足不等式Abs(^Cmin)>=Z(QP),則編碼器將該宏塊的閾值QP設為滿足該不等式的第一個QP(即,最高合格QP)。或者,編碼器使用其它邏輯來計算宏塊的QP,例如從最低QP開始或使用對QP值的二分搜索。使用QP:n來量化宏塊中的所有塊的過程可被稱為^^-夕^T:匕特率量化。在^r,t特率量化技術中,編碼器如上所述對宏塊的每一亮度塊單獨確定產生所需個數的非零AC系數所需的最大QP(不大于圖像QP)(例如,對于塊O、1、2和3分別為QPQ、QP!、QP2、和QP3)。它遵循QPm等于QPQ、QP。QP2和QP3的最小值。為減少比特使用,編碼器可使用QP,代替QPm來量化塊/(其中/=0,1,2,3等等)。在對整個宏塊制定單個QP的編碼器中,編碼器可改為當使用QPm量化該塊時在對每一塊/使用QP,來量化時僅保持那些非零的AC系數,從而僅保持了給定塊中前W個非零AC系數,即使該塊中的AC系數將隨著通過QPm的量化而被保存也是如此。對于圖30所示的量化過程,對每一亮度塊的量化過程可作為一個兩遍過程來執行。在第一遍中,編碼器在DCT系數小于Z(QP,)時將該系數"閾限"為0,否則保持相同的DCT系數。然后,使用QPw以相同的方式來量化"閾限"的DCT系數。或者,編碼器以某一其它方式保存非零AC系數。例如,編碼器可在除了逐宏塊的基礎之外的其它基礎(例如,逐塊的基礎)上選擇QP。編碼器可對I圖像、P圖像或B圖像或其組合保存AC系數。如果在最小可能QP下非零的量化系數的個數小于見則W可以被相應地調整。VII.對DC漂移的差分量化在典型的有損編碼情形中,并非所有量化的DC和AC系數都可在反量化之后精確地恢復。例如,在某些視頻編解碼器中,對于某些QP和DC系數值,DC系數值漂移了1(即,相對于其量化前的值增加或減少了1)。該現象是DC2要移的一個示例。某些DC系數值的表示通過一個或多個較低QP的量化和反量化是無損的,但是在其它較高QP中是有損的。具有其中所有AC系數都被量化為0且DC系數不能被精確恢復的若干塊的區域可能在DC漂移區域中展示出可見的輪廓偽像。這些具有輪廓偽像的區域通常是諸如天空、水或光線等平滑的梯度斜率區域。圖31是示出在量化和反量化之后在梯度斜率區域中的三個相鄰塊的DC漂移的圖示。梯度斜率區域中的三個相鄰的塊3102、3104、3106的DC值在量化之前分別為68、69和70。在量化和反量化之后,塊3104的DC值漂移到70。如圖31所示,這三個相鄰塊的DC值現在是68、70和70。當這些塊在梯度斜率區域中時,量化的DC值可以引起可感知的輪廓偽像。例如,再次參考圖22A-C,梯度斜率區域2210已被量化,導致圖22B中的可見的輪廓偽像。如圖22C所示,對宏塊2250的上半部分塊的DC系數的量化導致從DC值68重構的均勻值,而對下半部分的塊的DC系數的量化導致從DC值70重構的均勻值。因此,以下描述的若干技術和工具由視頻編碼器用于檢測DC漂移區域并調整量化以減少或避免在DC漂移區域中的輪廓偽像的引入。圖32是示出用于調整量化以減少或避免DC漂移區域中的輪廓偽像的引入的通用技術3200的流程圖。諸如圖10的編碼器1000等編碼器或其它工具執行技術3200。在3210處,編碼器檢測漂移區域。對DC漂移區域的搜索可以通過先前的梯度斜率檢測來協助。例如,如下所述,編碼器通過檢測一個或多個梯度斜率區域(或使用先前計算的梯度斜率檢測信息)然后標識梯度斜率區域中的DC漂移塊來檢測DC漂移區域。在3220處,編碼器調整DC漂移區域中的量化。例如,編碼器可使用差分量化(DQ)來編碼DC漂移塊以減少或避免因DC漂移引起的輪廓偽像的引入。編碼器對某些宏塊(具有DC漂移塊的宏塊)減小QP,但對其它塊不改變QP。對具有DC漂移塊的宏塊減小QP有助于對這些宏塊保持DC值無損,由此減少或避免了輪廓偽像的引入。編碼器可使用雙級DQ或多級DQ來解決DC漂移問題,且因此在控制比特使用的同時改進視覺質量。如果有更多圖像要分析,則編碼器處理下一圖像(3230)。或者,編碼器在逐宏塊的基礎上或某一其它基礎上調整對DC漂移區域的A.梯度斜率檢測可使用梯度斜率檢測來標識圖像中的一個或多個梯度斜率區域。梯度斜率區域往往展示出輪廓偽像,尤其是在區域中的塊具有非零DC系數值和在量化之后僅有O的AC系數的時候。一旦找到,可對這些區域檢驗可能會導致輪廓偽像的DC漂移塊。例如,編碼器使用此處所描述的(第V節)技術或某一其它技術來找出梯度斜率區域。如果塊中僅有的非零系數是量化之后的DC系數,則編碼器將這些塊作為要進行DC漂移區域調整的候選塊來對待。或者,編碼器將其它塊認為是要進行DC漂移區域調整的候選塊。B.標識DC漂移塊編碼器將些候選塊標識為DC漂移塊。DC漂移塊的標識取決于用于壓縮這些塊的量化器和QP的細節。例如,某些重構的DC系數在一個QP下將不會從其原始值漂移,但是在較粗略的QP下將漂移。一個編碼器中用于不同QP的DC漂移系數的示例在下表中提供。該表指示DC系數值對不同的QP值展示了DC漂移,其中QP是從參數PQIndex(以及可能的半步參數)中顯式地導出,或從參數PQIndex(以及可能的半步參數)中隱式導出的。未在表中列出的DC值對于示例編碼器中所指示的QP是無損的;用于3以下的QP的DC值(未在表中示出)都是無損的。示例編碼器不對高于表中所示的那些QP執行DC漂移調整。在該示例編碼器中,DC系數的量化對于不同的量化器(例如,均勻、非均勻)是相同的。哪些DC系數值是DC漂移系數在不同的視頻編解碼器中不同。不同的量化器(例如,均勻、非均勻)在DC系數的量化在不同量化器中不同的情況下可導致不同的漂移模式。表3:示例DC漂移系數<table>tableseeoriginaldocumentpage47</column></row><table><table>tableseeoriginaldocumentpage48</column></row><table><table>tableseeoriginaldocumentpage49</column></row><table><table>tableseeoriginaldocumentpage50</column></row><table><table>tableseeoriginaldocumentpage51</column></row><table>具有表3所示的DC漂移系數的示例編碼器一般對紋理化區域使用與用與平滑區域不同的QP。示例編碼器通常使用范圍3-5中的QP來編碼平滑區域。如以上表3所示,對于QP3-5,所有漂移的DC值都比原始DC值大1。其它編碼器可對平滑區域使用與紋理區域不同的qp。為在檢測DC漂移塊時幫助減少或避免輪廓偽像的引入,示例編碼器改變包含dc漂移塊的宏塊的qp以保持dc值在這些宏塊中是無損的。具體地,示例編碼器將包含DC漂移塊的宏塊的QP減少為QP=2。(其它編碼器可對DC漂移區域使用某一其它QP。)一般而言,編碼器可選擇導致宏塊的塊的DC系數的無損處理的最大可用QP。編碼器計算每一塊的平均亮度值以確定梯度斜率區域中的DC漂移塊,因為平均亮度值對應于DC漂移值(在補償了變換中的擴充之后)。平均亮度值允許編碼器估計或預測哪些塊具有dc漂移。或者,編碼器計算真實的dc值并在DC漂移表中查找它們以精確地標識哪些塊將具有漂移。編碼器可以執行附加處理來排除梯度斜率區域中的某些隔離DC漂移塊。在該示例編碼器中,一旦當前塊被標識為位于梯度斜率區域中的DC漂移塊,就檢驗周圍的四個相鄰塊。如果周圍的四個相鄰塊中的任一個是平滑塊且具有低于當前塊的漂移的DC值的DC值,則編碼器對包含當前塊的宏塊使用QP=2來保持dc值無損。或者,編碼器不對相鄰塊進行檢驗,或者檢驗相鄰塊的其它排列以確定是否在用于DC漂移區域的QP中做出改變。c.多級差分量化成本模型雙級DQ和多級DQ通常具有不同的比特率成本。在一個實現中,使用每宏塊l比特來用信號表示圖像QP或"全宏塊"雙級DQ中的替換QP,并且使用每宏塊至少3比特來用信號表示圖像QP或多級DQ中的替換QP。盡管編碼器可使用多級DQ來允許減少包含DC漂移塊的平滑區域中的QP,但編碼器可以在雙級DQ情形中改為選擇對所有平滑區域調整QP(例如,調整為QP-2)并對圖像的其余部分使用較粗略的圖像QP。例如,編碼器可以在多級DQ的信令成本被發現為相對于雙級DQ的成本過于昂貴的情況下這樣做。在一個實現中,使用下表來計算分別從QP-3,4,5和6到QP=2的平滑塊的成本。g」'S腳o麵od:Z)殿尸C。^/={18,22,28,36}.該表在以下雙級DQ成本B(QP)成本計算的示例中使用。5(QP)=宏資腺^/"教+(雙級差分量眾宏炎游^"教_"C蔡移炎游#"成本B(QP)解出了每宏塊的雙級成本信令的成本,并估計了對塊使用QP=2代替3、4、5或6的增加的比特成本。多級DQ成本M(QP)被計算為M(QP)=宏炎游W教*3)+(雙綴差分量眾宏炎游^教-Z)C蔡移層糊*8+("C蔡移湖履*3);成本M(QP)解出了多級DQ的信令成本,假定對某些宏塊量化參數的轉義編碼。如果5(^)〈Af(^),則將使用雙級DQ,并且將對所有平滑塊使用QP二2。否則,將使用多級DQ。或者,編碼器對不同類型或配置的DQ使用其它成本模型。或者,編碼器在檢測到DC漂移塊時對整個圖像減小QP,或使用某一其它技術來改變量化以在檢測到DC漂移塊時減少或避免輪廓偽像的引入。D.圖像QP切換在一個示例編碼器中,多級DQ需要3個比特來用信號表示從圖像QP到圖像QP+6的任何QP。該范圍之外的任何QP將用8比特通過轉義編碼來用信號表示。用于平滑區域的替換QP—般小于圖像QP,且因此需要轉義編碼。切換圖像QP因此可節省對多級DQ的編碼開銷。例如,編碼器可使用上述多級DQ成本模型來選擇圖像QP。例如,對于三級情形(例如,圖像QP、平滑區域QP和DC漂移QP),對圖像QP的不同候選值計算多級DQ成本。編碼器可以選擇具有最小開銷成本的圖像QP。或者,編碼器使用其它準則來切換圖像QP,或者不執行圖像QP切換。E.對髙紋理宏塊的粗略量化如果做出使用多級DQ的判決,則可通過向高紋理宏塊分配比圖像QP高(更粗略)的QP來對這些宏塊使用粗略量化。對圖像使用多級DQ(例如,為了對DC漂移宏塊使用較小QP)的判決意味著沒有用信號表示高于圖像QP的每宏塊粗略QP的附加開銷成本。例如,圖像QP+1可被用作粗略QP以避免量化等級中的可被注意到的差別,或者可使用某一其它QP。在編碼器決定對當前圖像使用多級DQ之后,可使用紋理閾值來確定哪些宏塊將用粗略QP來量化。或者,編碼器使用其它準則來確定某些區域(例如,宏塊)是應使用粗略QP還是不使用粗略QP。F.用于DC漂移量化的示例技術圖33是示出用于調節DC漂移區域中的量化以減少或避免量化偽像的引入的組合技術3300的流程圖。諸如圖10的編碼器1000等編碼器或其它工具執行技術3300。該組合技術是組合了上述若干方面的一個示例。其它技術將不使用參考該示例描述的所有方面,或將以不同的次序或替換方式來執行它們。在3310處,編碼器例如如第V節中所描述的那樣檢測當前圖像中的一個或多個梯度斜率區域。在3320處,編碼器例如使用DC漂移表來檢測梯度斜率區域中的DC漂移塊。編碼器然后決定如何量化圖像。在3330處,編碼器決定是否對該圖像使用雙級DQ。如果是,則編碼器對DC漂移區域(3340)和其它平滑區域使用小于圖像QP的QP。否則,在3350處,編碼器決定是否對該圖像使用多級DQ。如果是,則編碼器對DC漂移區域使用小于圖像QP的QP(3360),可對其它平滑區域使用不同的QP,并且如果存在高紋理宏塊,則對高紋理宏塊使用粗略QP(諸如大于圖像QP的QP)(3370)。如果編碼器沒有選擇雙級或多級DQ,則編碼器減小圖像QP并對DC漂移區域(3380)以及其它區域使用減小的圖像QP。或者,如果雙級DQ和多級DQ的成本都太高,則編碼器對DC漂移區域跳過QP減小。當編碼器選擇了一量化方案時,編碼器在3390處壓縮該圖像,并在還剩余任何圖像要處理時處理下一圖像(3395)。參考各實施例描述和示出了本發明的原理之后,可以認識到,可以在排列和細節上修改各實施例,而不脫離這些原理。應當理解,此處所描述的程序、過程或方法不相關于或不限于任何特定類型的計算環境,除非另外指明。可依照此處所描述的教導來使用各種類型的通用或專用計算環境或執行操作。以軟件示出的實施例的元素可以用硬件來實現,反之亦然。鑒于可應用本發明的原理的許多可能的實施例,要求保護落入所附權利要求書及其等效技術方案的范圍和精神之內的所有這樣的實施例作為本發明。權利要求1.一種在視頻編碼器中的方法,包括對視頻圖像中的多個塊中的每一塊計算多個變換系數;標識所述視頻圖像中包含DC漂移塊的一個或多個部分;對所述視頻圖像調整量化以減少在重構所述視頻圖像時的輪廓偽像;以及輸出所述視頻圖像的已編碼數據。2.如權利要求l所述的方法,其特征在于,所述標識視頻圖像中包含DC漂移塊的一個或多個部分包括-標識所述視頻圖像中的一個或多個梯度斜率區域;以及對所述一個或多個梯度斜率區域中的多個塊中的一個或多個分析DC漂移系數上的量化效應。3.如權利要求2所述的方法,其特征在于,所述視頻編碼器分析紋理圖以標識所述視頻圖像中的一個或多個梯度斜率區域。4.如權利要求1所述的方法,其特征在于,所述對視頻圖像調整量化包括對包含所述DC漂移塊中的一個或多個的一個或多個宏塊減小量化步長。5.如權利要求l所述的方法,其特征在于,所述量化包括雙級差分量化。6.如權利要求l所述的方法,其特征在于,所述量化包括多級差分量化。7.如權利要求l所述的方法,其特征在于,所述標識視頻圖像中包含DC漂移塊的一個或多個部分包括使用所述多個塊的DC系數或所述多個塊的平均樣本值來標識所述DC漂移塊,并且其中,所述量化使用均勻或非均勻量化器。8.如權利要求l所述的方法,其特征在于,所述標識視頻圖像中包含DC漂移塊的一個或多個部分包括以給定的量化步長檢查具有相關聯的DC漂移偽像的DC系數值列表。9.如權利要求l所述的方法,其特征在于,所述標識視頻圖像中包含DC漂移塊的一個或多個部分包括標識所述.DC漂移塊;標識一個或多個梯度斜率區域;以及對所述一個或多個梯度斜率之一中的所述DC漂移塊之一,檢查是否有任何相鄰塊既是平滑的又具有較低或較高的DC系數值。10.如權利要求l所述的方法,其特征在于,所述調整量化還包括對所述視頻圖像的高紋理部分增加量化。11.一種或多種其上儲存有使計算機執行如權利要求1所述的方法的計算機可執行指令的計算機可讀介質。12.—種在具有量化器的視頻編碼器中的方法,包括對視頻圖像中的多個塊中的每一塊計算DC系數;在所述多個塊中,檢測具有在以第一量化步長量化和反量化之后改變值的DC系數的一個或多個塊;對包括具有在以所述第一量化步長量化和反量化之后改變值的DC系數的所述一個或多個塊中的至少一個的至少一個宏塊選擇第二量化步長,其中所述第二量化步長小于所述第一量化步長;在對所述至少一個宏塊的量化中使用所述第二量化步長;以及輸出所述視頻圖像的己編碼數據。13.如權利要求12所述的方法,其特征在于,所述第一量化步長是圖像量化步長。14.如權利要求12所述的方法,其特征在于,所述第一量化步長是小于圖像量化步長的平滑區域量化步長。15.如權利要求12所述的方法,其特征在于,所述第二量化步長是在雙級差分量化期間選擇的。16.如權利要求12所述的方法,其特征在于,所述第二量化步長小于用于所述視頻圖像中的平滑區域的第三量化步長。17.—種或多種其上儲存有使計算機執行如權利要求12所述的方法的計算機可執行指令的計算機可讀介質。18.—種在視頻編碼器中的方法,包括檢測視頻圖像中的梯度斜率區域,所述梯度斜率區域包括一個或多個DC漂移塊,所述一個或多個DC漂移塊中的每一個具有在以第一量化步長量化和反量化之后改變值的DC系數;對包括具有在以所述第一量化步長量化和反量化之后改變值的DC系數的所述一個或多個DC漂移塊中的至少一個的至少一個圖像部分選擇第二量化步長,其中所述第二量化步長小于所述第一量化步長;在對所述至少一個圖像部分的量化中使用所述第二量化步長;以及輸出所述視頻圖像的己編碼數據。19.如權利要求18所述的方法,其特征在于,還包括對所述視頻圖像中的高紋理圖像部分選擇第三量化步長,其中所述第三量化步長大于所述第一量化步長;以及在對所述高紋理圖像部分的量化中使用所述第三量化步長。20.—種或多種其上儲存有使計算機執行如權利要求18所述的方法的計算機可執行指令的計算機可讀介質。全文摘要一種視頻編碼器標識視頻圖像中包含DC漂移塊的一個或多個部分并調整量化(例如,通過選擇較小的量化步長)來減少在重構圖像時的輪廓偽像。該編碼器可通過標識圖像中的一個或多個梯度斜率區域并分析梯度斜率區域中的DC系數上的量化效應來標識該圖像中包含DC漂移塊的(諸)部分。編碼器可對高紋理圖像區域選擇較粗略的量化步長。文檔編號H04N7/24GK101416511SQ200780012030公開日2009年4月22日申請日期2007年4月9日優先權日2006年4月7日發明者C-L·林,P·蘇,X·左申請人:微軟公司