專利名稱::用于視頻編碼和解碼的系統和方法
技術領域:
:本發明一般地涉及一見頻編碼和解碼的領域。具體而言,本發明涉及增加一見頻編碼和解碼的效率。
背景技術:
:本節旨在于提供與在權利要求中記載的本發明有關的背景或者環境。這里的描述可以包括能夠探求的概念,但是這些概念未必是先前已經設想或者探求的概念。因此,除非這里另有指明,否則在本節中描述的內容不是在本申請中的說明書和權利要求之前的現有技術、也不因為被包含于本節中而被承認為現有技術。視頻編碼標準包括ITU-TH.261、ISO/IECMPEG國1Visual、ITU-TH.262或者ISO/IECMPEG-2Visual、ITU-TH.263、ISO/IECMPEG-4Visual和ITU-TH.264(也稱為ISO/IECMPEG畫4AVC)。此外,與新視頻編碼標準的開發有關的工作目前也在進行中。開發中的一種這樣的標準是可伸縮視頻編碼(SVC)標準,該標準將成為對H.264/AVC的可伸縮擴展。開發中的另一標準是多視頻編碼標準(MVC),該標準也是H.264/AVC的擴展。又一這樣的工作涉及中文視頻編碼標準的開發。在可從http:〃ftp3.itu.ch/av-arch/jvt-site/2006_07—Klagenfurt/JVT-T201.zip獲得的、在奧地利克拉根福市于2006年7月舉行的第20界JVT會議上的JVT-T201"JointDraft7ofSVCAmendment"中描述了SVC的最新草案。在可從http:〃ftp3.itu.ch/av-arch/jvt-site/2006—07—Klagenfurt/JVT-T208.zip獲得的、在奧地利克拉根福市于2006年7月舉行的第20界JVT會議上的JVT-T208"JointMultiviewVideoModel(JMVM)l.O,,中描述了MVC的最新草案。在此通過引用并入這兩個文檔的全部內容。在可伸縮視頻編碼(SVC)中,可以將視頻信號編碼到基本層和以分層的方式構造的一個或者多個增強層中。增強層增強時間分辨率(即,幀速率)、空間分辨率或者由另一層或者另一層的一部分表示的視頻內容的質量。各層與它的從屬層一起是按照某一空間分辨率、時間分辨率和質量級別對視頻信號的一種表示。可伸縮層與它的從屬層一起被稱為"可伸縮層表示"。可以提取和解碼可伸縮比特流中與可伸縮層表示對應的部分以產生按照某一保真度對原始信號的表示。在一些情況下,可以在某一位置之后或者在任意位置處截短(truncate)增強層中的數據,其中各截短位置可以包括附加數據,該數據表示逐漸增強的視覺質量。這樣的可伸縮性被稱為細粒度(顆粒度)的可伸縮性(FGS)。與FGS對照,由不能截短的那些增強層提供的可伸縮性稱為粗粒度(顆粒度)的可伸縮性(CGS)。CGS共同地包括傳統質量(SNR)可伸縮性和空間可伸縮性。聯合視頻組(JVT)已經致力于開發一種作為對H.264/高級視頻編碼(AVC)標準的擴展的SVC標準。SVC使用與H.264/AVC相同的機制來提供時間可伸縮性。在AVC中,通過使用與子序列相關的補充增強信息(SEI)消息來實現用信號通知時間可伸縮性信息。SVC使用層間預測機制,其中可以根據除了當前重建的層或者下一更低層之外的層來預測某些信息。可以層間預測的信息包括紋理內(intratexture)、運動和殘差數據。層間運動預測包括對塊編碼模式、報頭信息等的預測,其中來自更低層的運動信息可以用于更高層的預測。在內編碼(intracoding)的情況下,以周圍宏塊或者以更低層的共處的宏塊為根據的預測是可能的。這些預測技術沒有使用運動信息,因此被稱為內預測技術。另外,來自更低層的殘差^t據也可以用于當前層的預測。用于SVC編碼器的輸出和SVC解碼器的輸入的基本單元是網絡抽象層(NAL)單元。編碼器生成的連串NAL單元^皮稱為NAL單元流。為了通過面向分組的網絡發送或者為了存儲到結構化文件中,NAL單元通常封裝到分組或者類似結構中。在沒有提供成幀結構的發送或者存儲環境中,已經在H.264/AVC標準的附錄B中規定了一種與基于開始碼的比特流結構類似的字節流格式。字節流格式通過在各NAL單元前面附加開始碼來將NAL單元相互分離。與這種分層的編碼方法相關聯的一個問題在于對小的離散層的創建(就比特速率而言)導致很差的編碼效率,因為存在于基本層中的信息往往在增強層中被部分地重復并因此被編碼兩次。另一方面,由于離散層的大小控制可以如何準確地實現期望的比特速率或者質量,所以如果使用大的增強層,則不能以很大顆粒度控制比特速率或者質量。此"粗粒度的可伸縮性(CGS)"可能為一些應用提供程度不足的控制。為了平衡這兩個問題,已經提出中等粒度的可伸縮性(MGS)的概念。MGS涉及與CGS相同的編碼器和解碼器結構,但是在中間階段中,根據速率-失真測量將"質量級別,,分配給各CGS增強層分片。當將比特流截短成期望的比特速率時,首先丟棄來自最高質量級別的CGS分片并且依此類推直至實現目標比特速率。重要的是注意分配給給定質量級別的CGS層的數量可能在序列內并不恒定而是可以隨著幀而變化。例如,{1A,1B,1C}、{2A,2B,2C)、{3A,3B,3C)可以代表九個分片。數字指示幀編號,而字母指示CGS層。第一幀的基本質量是(1A),第一幀的中間質量由UA,1B)形成,而第一幀的最高質量由OA,1B,iq形成。整個三幀序列的基本層表示將由{1A,2A,3A)構成。常規上,第一CGS層將由{1B,2B,3B)構成。就MGS而言,第一質量層可以包含(1B,1C,3B},這代表來自第一幀的兩個CGS增強、沒有來自第二幀的CGS增強和來自第三幀的一個CGS增強。其結果是序列中的CGS層的平均數量不限于整數值而是可以根據"質量層,,的構造而變化,并且由于使用CGS編碼結構,所以編碼效率損失相對地少。ii
發明內容本發明的一個方面涉及一種用于對圖像進行編碼的方法,該方法包括將系數矢量劃分成多個子矢量;指示多個子矢量中的子矢量在系數矢量內的位置;并且使用可變長度編碼器對子矢量的系數值進行編碼。在一個實施例中,子矢量的位置由系數矢量內的開始和結束位置指示。在另一實施例中,子矢量的位置由系數矢量內的開始位置和子矢量的長度指示。在一個實施例中,該方法還包括基于子矢量的長度從可變長度編碼器組中選擇用于子矢量的可變長度編碼器。選擇編碼器可以包括確定子矢量的長度是大于還是小于預定閾值。在一個實施例中,該方法還包括基于子矢量的長度來分配用以代表子矢量的系數的可變長度碼字。在一個實施例中,該方法還包括基于子矢量在系數矢量內的位置從可變長度編碼器組中選擇用于子矢量的可變長度編碼器。在一個實施例中,該方法還包括對與子矢量對應的塊的"尾端一,,(trailingones)語法要素進行編碼。在一個實施例中,該方法還包括對用于宏塊的編碼塊模式進行編碼,該編碼塊模式代表與宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。在一個實施例中,該方法還包括對指示進行編碼,該指示代表用于宏塊的編碼塊模式是否源自于用于先前編碼的宏塊的編碼塊模式,該編碼塊模式代表與宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。在一個實施例中,截短針對一個矢量長度而設計的VLC碼字矩陣以便與更小子矢量一起使用。將通過截短會被丟棄的最短的N個碼字"插入,,到VLC碼字矩陣中,從而為與子矢量一起使用而保留的VLC碼字不再比丟棄的VLC碼字長。可以等效地使用"映射矩陣"來實現這一點。在一個實施例中,將"連續指示符"編碼到比特流中,該指示符指示是否應當使用來自前一宏塊的CBP作為用于當前宏塊的CBP。當這樣指示時,可以省略對用于當前宏塊的CBP進行編碼。備選地,可以向"連續指示符"分配來自于CBP值的可能集合中的一個值并且使用可變長度碼對該指示符進行編碼。在一個實施例中,基于子矢量長度和/或位置來調節用來對塊中的"全游程,,(totalrun)進行編碼的VLC表。例如,可以將VLC表索引遞增一個值,該值與子矢量長度與次最高矢量長度之差成比例。在一個實施例中,各宏塊包括值與子矢量中的尾端一數量對應的尾端一指示符。備選地,各宏塊包括值與子矢量中的非零系數數量對應的尾端一指示符。在本發明的另一方面中,一種設備包括接收器,用于接收源視頻信號;以及編碼器,被配置成處理視頻信號,該編碼器被配置成將系數矢量劃分成多個子矢量。編碼器還被配置成指示多個子矢量中的子矢量在系數矢量內的位置并且使用可變長度編碼器對子矢量的系數值進行編碼。在本發明的另一方面中,一種設備包括處理器和以通信方式連接到處理器的存儲器單元。該存儲器單元包括用于將系數矢量劃分成多個子矢量的計算機碼;用于指示多個子矢量中的子矢量在系數矢量內的位置的計算機碼;以及用于使用可變長度編碼器對子矢量的系數值進行編碼的計算機碼。在另一方面中,本發明包括一種在計算機可讀介質上實施的計算機程序。該計算機程序被配置成提供一種方法,該方法包括將系數矢量劃分成多個子矢量;指示多個子矢量中的子矢量在系數矢量內的位置;并且使用可變長度編碼器對子矢量的系數值進行編碼。在本發明的另一方面中,一種用于對編碼圖像進行解碼的方法包括接收子矢量在代表圖像塊的系數矢量內的位置;接收用于子矢量的系數集;基于接收的系數集和子矢量的位置來形成系數矢量;并且對塊進行解碼。在本發明的另一方面中,一種設備包括接收器,用于接收源視頻信號;以及解碼器,被配置成處理視頻信號。該解碼器被配置成接收子矢量在代表圖像塊的系數矢量內的位置、接收用于子矢量的系數集、基于接收的系數集和子矢量的位置來形成系數矢量;并且對塊進行解碼。在本發明的另一方面中,一種設備包括處理器和以通信方式連接到處理器的存儲器單元。該存儲器單元包括用于接收子矢量在代表圖像塊的系數矢量內的位置的計算機碼;用于接收用于子矢量的系數集的計算機碼;用于基于接收的系數集和子矢量的位置來形成系數矢量的計算機碼;以及用于對塊進行解碼的計算機碼。在另一方面中,本發明包括一種在計算機可讀介質上實施的計算機程序。該計算機程序被配置成提供一種方法,該方法包括接收子矢量在代表圖像塊的系數矢量內的位置;接收用于子矢量的系數集;基于接收的系數集和子矢量的位置來形成系數矢量;并且對塊進行解碼。從在與其中相似單元在下述若干圖中通篇具有相似標號的附圖結合時的下文具體描述中,本發明各種實施例的這些和其他優點及特征與其操作方式和組織一起將變得清楚。圖1是本發明可以實施于其中的系統的概括圖;圖2是能夠在實施本發明時使用的移動設備的透視圖;圖3是圖2的移動設備的電路的示意圖;圖4是根據本發明一個實施例的網絡抽象層(NAL)單元流的示例圖示;圖5是根據本發明一個實施例的NAL單元的示例圖示;以及圖6是根據本發明一個實施例的圖5的NAL單元中的宏塊的示例圖示。具體實施例方式本發明的實施例涉及當在MGS或者CGS框架中分割系數時對系數的熵編碼。可以通過將系數分割到單獨的質量層中來提高在這樣的框架中的編碼效率。4x4塊可以寫作矢量形式,例如[1204-2001010000000]。有可能將塊分成由前四個和后十二個系數構成的兩個矢量("4-12拆分"),寫為兩個矢量之和[1204-2000000000000]+。因此,現有的MGS技術不僅能夠選擇哪些CGS分片將提供最好的速率-失真增加而且能夠選擇分片內的哪些系數將提供最好的速率-失真增加。然而,當將系數塊拆分成兩個或者更多矢量時,用零填充各拆分塊。如果將塊拆分成兩個矢量時,則這獲得數量為原始矢量的兩倍的系數數量。如果將塊一分為三,則系數數量為三倍,并且依此類推。例如,[1204-200101000000O]可以一分為二[1204-2000000000000]+。將這兩個矢量稱為V1和V2,并且將矢量VI中的第n個系數稱為n。如果對于幀中的各塊使用相同的拆分,則對于n>=4而言系數為零的概率在VI中為1,數學表示為對于n〉=4而言p(Vl,n=0),并且類似地對于n<4而言p(V2,n=0)。諸如上下文自適應可變長度編碼(CAVLC)之類的可變長度編碼器不能充分適應這些概率,因此使用CAVLC對"填充"的零的編碼極其昂貴。本發明的實施例解決這些擔心。圖1示出了用于與本發明的實施例一起使用的通用多媒體通信系統。如圖1中所示,數據源100按照模擬格式、未壓縮數字格式或者壓縮數字格式或者這些格式的任何組合來提供源信號。編碼器110將源信號編碼成編碼媒體比特流。編碼器IIO可以能夠對一個以上的媒體類型如音頻和視頻進行編碼,或者可能需要一個以上的編碼器110對源信號的不同媒體類型進行編碼。編碼器110也可以獲得合成產生的輸入,比如圖形和文字,或者它可以能夠產生合15成媒體的編碼比特流。下文僅考慮對一個媒體類型的一個編碼媒體比特流的處理以簡化描述。然而應當注意實時廣播服務通常包括數個流(通常為至少一個音頻、視頻和文字字幕流)。還應當注意該系統可以包括許多編碼器,但是下文僅考慮一個編碼器110以簡化描述而不失一般性。將編碼媒體比特流傳送到儲存器120。儲存器120可以包括用以存儲編碼媒體比特流的任意類海量存儲器。儲存儲器120中的編碼媒體比特流的格式可以是基本自包含的比特流格式,或者一個或者多個編碼媒體比特流可以被封裝到容器文件中。一些系統"直播"操作、即省略儲存而將編碼媒體比特流從編碼器110直接地傳送到發送器130。編碼媒體比特流然后隨需傳送到也稱為服務器的發送器130。傳輸中所使用的格式可以是基本自備的比特流格式、分組流格式,或者一個或者多個編碼媒體比特流可以被封裝到容器文件中。編碼器110、儲存器120和發送器130可以駐留于同一物理設備中,或者它們可以包含于分離的設備中。編碼器IIO和發送器130可以操作現場實時內容,在該情況下通常不永久地存儲而是實際上在內容編碼器110中和/或在發送器130中短時期地緩存編碼媒體比特流以消除處理延遲、傳送延遲和編碼媒體比特速率的變化。發送器130使用通信協議棧來發送編碼媒體比特流。該棧可以包括但不限于實時傳送協議(RTP)、用戶數據報協議(UDP)和互聯網協議(IP)。當通信協議棧是面向分組的時,發送器130將編碼媒體比特流封裝成分組。例如,當使用RTP時,發送器130根據RTP凈荷格式將編碼媒體比特流編碼成RTP分組。通常,各媒體類型具有專用RTP凈荷格式。同樣應當注意該系統可以包含一個以上的發送器130,但是為求簡化,以下描述僅考慮一個發送器130。發送器130可以或者可以不通過通信網絡連才妄到網關140。網關140可以執行不同類型的功能,比如將根據一個通信協議棧的分組流變換成根據另一通信協議棧的分組流、合并和分拆數據流以及根據下行鏈路和/或接收器能力來操控數據流(比如根據主導下行鏈路網絡條件來控制轉發的流的比特速率)。網關140的例子包括多點會議控制單元(MCU)、在電路交換的與分組交換的視頻電話之間的網關、蜂窩一鍵通(PoC)服務器、在數字視頻廣播-手持(DVB-H)系統中的IP封裝器或者將廣播傳輸本地轉發到歸屬無線網絡的機頂盒。當使用RTP時,網關140被稱為RTP混合器并且充當RTP連接的端點。該系統包括通常能夠接收發送的信號、將該信號解調和解封裝成編碼媒體比特流的一個或者多個接收器150。編碼媒體比特流通常由解碼器160進一步處理,該解碼器160的輸出是一個或者多個未壓縮的媒體流。應當注意可以從位于實質上任一類網絡內的遠程設備接收待解碼的比特流。此外,可以從本地硬件或者軟件接收比特流。最后,表現器170例如可以用揚聲器或者顯示器再現未壓縮的媒體流。接收器150、解碼器160和表現器170可以駐留于同一物理設備中,或者它們可以包含于分離的設備中。就比特速率、解碼復雜度和畫面大小而言的可伸縮性是異構和易錯環境所期望的性質。期望這一性質以便對抗比如對比特速率、顯示分辨率、網絡吞吐量和接收設備中的計算能力的約束這樣的限制。應當理解,雖然這里所含的文字和例子可以具體地描述編碼過程,但是本領域技術人員將容易理解相同的概念和原理也適用于對應的解碼過程,反之亦然。應當注意可以從位于實質上任一類網絡內的遠程設備接收待解碼的比特流。此外,可以從本地硬件或者軟件接收比特流。本發明的通信設備可以使用各種傳輸技術來通信,這些技術包括但不限于碼分多址(CDMA)、全球移動通信系統(GSM)、通用移動電信系統(UMTS)、時分多址(TDMA)、頻分多址(FDMA)、傳輸控制協議/互聯網協議(TCP/IP)、短消息收發服務(SMS)、多媒體消息收發服務(MMS)、電子郵件、即時消息收發服務(IMS)、藍牙、IEEE802.il等。通信設備可以使用各種媒體來通信,這些媒體包括但不限于無線電、紅外線、激光、纜線連接等。圖2和圖3示出了本發明可以實施于其中的一種有代表性的移動設備12。然而應當理解本發明本意并非限于一個特定類型的移動設備12或者其他電子設備。圖2和圖3的移動設備12包括殼30、形式為液晶顯示器的顯示器32、鍵區34、麥克風36、耳機38、電池40、紅外線端口42、天線44、根據本發明一個實施例的形式為UICC的智能卡46、讀卡器48、無線電接口電路52、編碼解碼器電路54、控制器56和存儲器58。個體電路和元件都是在本領域中、例如在Nokia移動設備范圍中眾所周知的類型。現在參照圖4,圖示了示例性NAL單元流400。如上所言,NAL單元流400包括由編碼器生成的連串NAL單元410。流中的各NAL單元由在各NAL單元前面的開始碼(或者前綴)分隔。圖5用示例性NAL單元410的各種組成更詳細地圖示了NAL單元410。NAL單元410包括NAL前綴412和NAL報頭414、繼而跟隨著一個或者多個宏塊420。每個宏塊420包括與幀對應的數據、幀的一部分、增強層或者增強層的一部分。圖6圖示了根據本發明一個實施例的宏塊420。圖6中圖示的宏塊420被示出具有某些組成。本領域技術人員將理解宏塊420可以按照需要或者按照期望而包括附加的組成。宏塊420的組成包括編碼塊模式部分422、尾端一指示符424和系數塊426,本領域技術人員對其每一個分別都非常理解。尾端一指示符424—般具有與系數矢量或者子矢量中的尾端一數量對應的值。根據本發明的實施例,希望將系數矢量拆分成數個不同矢量之和,并且使用類似CAVLC的熵編碼器在宏塊中對各矢量個別地編碼。在一個實施例中,將系數矢量劃分成兩個或者更多子矢量。子矢量對應于填補的零被去除的上述兩個系數矢量。因此,在一個例子中,在原始系數矢量為[1204-200101OOOOOOO]的上例中,系數矢量可以劃分成兩個子矢量[1204-2]和。為了有助于解碼,分片的報頭可以具有反映系數矢量內各子矢量的大小和位置的指示符。在一個實施例中,各子矢量的大小和位置可以由該子矢量的開始和結束位置指示。例如,指示開始和結束位置(0,3)和(4,15)可以造成矢量[1204-2001010000000]分別劃分成子矢量[1204-2]和。當一個子矢量的開始總是緊跟先前子矢量的結束時,可以省略對開始或者結束位置的編碼。在另一實施例中,子矢量的大小和位置可以由該子矢量的開始位置和長度來表示。因此,對開始位置和長度(O,4)進行編碼將指示子矢量[1204-2],而開始位置和長度(4,12)將指示子矢量[OO101000000O]。當一個子矢量的開始總是緊跟先前子矢量的結束時,可以省略開始位置,從而子矢量長度將編碼為{4,12}。常規的CAVLC編碼器可以用于這些情況中的每一種情況。在本發明的另一實施例中,可以獨立地選擇用來對各子矢量進行編碼的CAVLC編碼器。例如,一個特定的CAVCL編碼器可能對于一種大小的子矢量比對于另一大小的子矢量更有效率。因此,可以基于子矢量的長度從CAVLC編碼器組中選擇CAVLC編碼器。例如,H.264/AVC具有兩種CAVLC方案一種用于16值矢量而另一種用于4值矢量。可以設置閾值使得使用4值CAVLC編碼器對特定長度或者低于特定長度的任何矢量進行編碼,而使用16值CAVLC編碼器對該閾值以上的任何矢量進行編碼。例如可以經由查找表或者諸如閾值運算之類的數學函數來實現在CAVLC編碼器與子矢量長度之間的映射。可以對該映射進行硬編碼使得對于在編碼器和解碼器中的特定子矢量而言,它是易于確定的并且是相同的。備選地,對編碼器的映射或者選擇可以指定到比特流中并且由此中繼到解碼器。在本發明的另一實施例中,可以基于子矢量的長度來修改尾端一指示符424。在一個實施例中,取決于待編碼的矢量的長度來動態地修改尾端一指示符424,從而它僅規定非零計數。當這一修改生效時,假設尾端一的數量為零,并且可以使用不同VLC碼字表。19例如,如果矢量長度小于5或者大于10,則尾端一指示符424可以規定尾端一的數量和非零系數的數量二者,并且可以使用常規的H.264/AVCCALVC解碼。另一方面,如果矢量長度的范圍為5到10,則可以根據比如下表這樣的碼字表來修改尾端一指示符424:VLC碼字<table>tableseeoriginaldocumentpage20</column></row><table>在一個實施例中,可以限定尾端一指示符424的值的上限。例如,取決于子矢量的長度和/或非零系數的數量,尾端一指示符424的最大值可以在零與三之間變化。例如,對于長度為6的子矢量,尾端一指示符424的值可以限定成上限為1、因此可以具有值0或者1。在本發明的另一實施例中,"映射函數"用來基于子矢量長度來重新映射用于尾端一指示符424的H.264/AVCCAVLC碼字。根據H.264/AVCCAVLC,用于尾端一指示符424的VLC碼字長度基于塊中的尾端一的數量和非零值的總數量二者。例如,對于大小為16而上下文為零的矢量,VLC碼字長度由以下矩陣給定'l"91011133D1414i51316161§W(3"8910UU13141415151S161616003789101113131414151516i6160005678910"13141415151616_其中豎直指標是尾端一的數量,而水平指標是非零值的總數量。如果子矢量具有長;復2,則維度受約束,因為子矢量僅能具有0、l或者2個尾端一和僅0、l或者2個非零值<formula>formulaseeoriginaldocumentpage21</formula>然而,簡單地截短VLC矩陣在使用更長長度的碼字的同時有效地禁止了一些更短長度的碼字。例如,上述矩陣保留VLC長度6和8而排除長度5。這造成編碼效率損失。可優選將更短的被排除的VLC長度"插入"到矩陣中,從而如果插入N個更短碼字,則去除N個最長碼字。例如,在插入值5之后,上述矩陣變成<formula>formulaseeoriginaldocumentpage21</formula>這一操作的一個特征在于截短的矩陣中沒有VLC碼字比通過截短來去除的任何VLC碼字更長。另一特征在于保留截短的矩陣中的VLC碼字的相對長度,從而原始矩陣中沒有比第二VLC碼字更長的一個VLC碼字在截短的矩陣中將仍然沒有比第二VLC碼字更長。對更短長度的碼字的這一"插入"可以等效地寫作映射函數。首先,碼字寫為有序矢量。延續針對矢量大小為16而上下文為0的H.264/AVCCAVLC的例子,長度將是[l2356667788889999...]。"映射矩陣"然后指示在VLC長度矩陣中的各位置應當使用哪些碼字指標<formula>formulaseeoriginaldocumentpage21</formula>因此對于矩陣中的左上的元素,應當使用指標為o、即長度為1的VLC碼字。對于矩陣中左上第二個的元素,應當使用指標為4、即長度為6的VLC碼字。因此根據VLC矢量和"映射矩陣"來重建原始VLC長度矩陣是可能的。如果子矢量現在限于例如長度為3,則簡單地截短和填充映射在S卩tb"土唂X;主么擊,W:.<formula>formulaseeoriginaldocumentpage22</formula>最后,用對應的VLC碼字長度替換"映射矩陣"中的值來給出<formula>formulaseeoriginaldocumentpage22</formula>如上所言,這一"映射函數"是一種執行"插入"操作以保證在使用子矢量時沒有浪費長度短的VLC碼字的等效方式。這一方法避免了對于存儲與各子矢量長度對應的許多不同VLC表的需要,并且因此即使這些表對于各情況而言未必最優但仍然可以提供復雜度益處。較早提及的閾值化特征可以與這一實施例結合使用。例如,與矢量長度4對應的一個"映射矩陣"可以用于上至并且包括長度4的子矢量,而與矢量長度16對應的第二"映射矩陣"可以用于比長度4更長的子矢量。在又一實施例中,可以"終止"VLC碼字。例如,如果有長度為7的一個VLC碼字和長度為8的另一VLC碼字、但是沒有長度為9或者更長的VLC碼字,那么長度為8的VLC碼字可以縮短成長度7,因為不再需要前綴比特。在本發明的另一實施例中,用于編碼塊模式部分422的VLC根據子矢量的長度和/或矢量的起始位置而變化。就這一點而言,一個VLC可以用于始于位置零的矢量,而另一VLC用于其他矢量。例如在上述子矢量[1204-2]和的情況下,第一子矢量的開始位置為零,而第二子矢量的開始位置為4。常規H.264/AVCCBPVLC可以用于第一矢量,而另一VLC用于第二矢量。或者,例如在上述[1204-2]和的情況下,第一子矢量的長度為4,而第二子矢量的長度為12。常規H.264/AVCCBPVLC可以基于第二矢量的長度來用于第二矢量,而另一VLC用于第一矢量。在另一實施例中,為始于非零位置的子矢量提供指示符,比如編碼塊才莫式部分422中的前綴標志。H.264/AVCCBPVLC(可選移位)與指示任何塊是否包含非零值的前綴標志一起使用。例如,如果標志設置成一,則可以使用常規H.264/AVCCBP過程來遞減CBP并且將其編碼到比特流中。在另一實施例中,由于常規H.264/AVCCBPVLC基于上下文,其中上下文由非零值存在于鄰近塊中來確定,所以可以修改上下文使得非零確定不僅基于鄰近塊的相同矢量中的系數而且基于更早矢量。可以基于子矢量的長度和/或子矢量開始位置來啟用或者禁用這一特征。例如,考慮覆蓋系數位置4到15的矢量[OO101000000O]并且使用常規H.264/AVCCBP編碼,將忽略在鄰近塊的系數0到3中非零值的存在(在另一分片中對這些系數進行編碼而在當前分片中用零填補這些系數)。可以通過不僅考慮在系數4到15中非零值的存在而且考慮包含矢量[1204-2]的分片的系數0到3來實現編碼效率增益。舉例而言,如果在相同塊的鄰近矢量中有很大數量的非零值,則CBP應當朝著非零值偏置。在又一實施例中,CPB值可以由如下連續性標志作為前綴,該連續性標志指示CBP是否與用于先前編碼的宏塊的CBP相同。因此,如果連續性標志設置成零,則照常對CPB進行編碼。如果連續性標志設置成一,則使用來自先前宏塊的CBP。基于比如子矢量的開始位置和/或子矢量的長度、分片類型、層或者質量ID、基本層ID以及來自鄰近宏塊的上下文信息這樣的標準,可以在比特流中包括和/或從比特流中省略這一連續性標志。連續性標志也可以與CBP本身組合而不是編碼為單獨標志,從而在可能的CBP值的集合中的一個特定值指示應當重用來自先前宏塊的CBP。這也可以適用于基于上下文的二進制算術編碼(CABAC),其中在為對當前宏塊CBP的編碼確定上下文時至少部分地使用先前宏塊的CBP值。在另一實施例中,基于子矢量的長度來調節當在H.264/AVCCAVLC中對"全游程"進行編碼時使用的VLC表。常規上,在對"全游程"進行編碼時使用的VLC碼字基于塊內的掃描位置以及塊中的全游程而為二維陣列。根據這一實施例,向陣列添加反映子矢量長度的第三維度。在又一實施例中,當針對子矢量對"全游程"進行編碼時使用H.264/AVCCAVLC的VLC碼字表,但是基于子矢量的長度來調節VLC表指標。例如,如果子矢量具有長度3,則可以使用與矢量長度4對應的H.264/AVCVLC碼字表,其中VLC表指標遞增一。例如,如果子矢量具有長度2,則可以使用與矢量長度4對應的H.264/AVCVLC碼字表,其中VLC表指標遞增二。因此,該增量是基于涉及次最高H.264/AVC矢量長度(4或者16)和子矢量大小的數學表達式。例如,當子矢量長度(SubbandSize)小于或者等于4時可以使用數學表達式min(VLCTable+4-SubbandSize,2)。將限定VLC表指標的上限,以使它不超過H.264/AVC中的最大允許值。可以在CABAC編碼中以類似的方式使用本發明的這一方面。例如,當為對有效性指示符或者級別指示符的編碼形成CABAC上下文時,可以針對長度小于或者等于4的子矢量基于(4-SubbandSize)將常規CABAC上下文移位某一數量。與CAVLC情況一樣,將限定上下文移位的上限以便在H.264/AVC施加的最小和最大限制內。在另一實施例中,可以對準與對應于共同系數矢量的宏塊相關聯的各種模式。因此,用于給定系數矢量的所有子矢量宏塊具有相同模式。在系數矢量為[1204-2001010000000]的上例中,用于子矢量[1204-2]的宏塊和用于子矢量[O0101000000O]的宏塊具有對準的模式。可以在編碼器設計中規定或者備選地可以在比特流中指示這一對準。在這樣的實施例中,針對除了與第一子矢量(始于系數位置o的矢量)對應的宏塊之外的所有宏塊,可以取決于對準條件來略過對諸如變換大小標志、BL略過標志等語法要素的編碼。24盡管已經公開了本發明的具體實施例,但是將理解在所附權利要求書的真實精神和范圍內各種不同修改和組合是可能的并被設想。因此本意并非限于這里呈現的準確概要和公開內容。在方法步驟的一般背景中描述這里描述的本發明的各種實施例,這些方法步驟可以在一個實施例中由如下程序產品來實施,該程序產品包括在聯網環境中由計算機執行的計算機可執行指令,比如程序碼。一般而言,程序模塊包括執行特定任務或者實施特定抽象數據類型的例程、程序、對象、組件、數據結構等。計算機可執行指令、相關聯的數據結構和程序模塊代表用于執行這里公開的方法步驟的程序碼的例子。這樣的可執行指令或者相關聯的數據結構的特定序列代表用于實施這樣的步驟中所述功能的對應動作的例子。可以使用任何常用編程語言如07。++或者匯編語言以軟件直接地實施本發明的各種實施例。可以用標準編程技術實現本發明的軟件和web實施,這些編程技術具有基于規則的邏輯以及用以實現各種數據庫搜索步驟、相關步驟、比較步驟和判決步驟的其他邏輯。也應當注意在這里和在權利要求中使用的字眼"組件"和"模塊"旨在于涵蓋使用一行或者多行軟件碼的實施、和/或硬件實施和/或用于接收人工輸入的設備。盡管權利要求書中的限制在未使用措詞"裝置"的情況下不應解釋為構成"裝置加功能"限制,但是在前例中描述的個別和特定結構應當理解為構成用于執行所附權利要求書中描述的特定功能的裝置的代表性結構。此外,措詞"步驟"在先前描述中的使用不應用來將權利要求書中的任何特定限制解釋為構成"步驟加功能"限制。在這里描述或者以別的方式提及包括授權專利、專利申請和非專利出版物的個別參考文獻這一程度上,本意并非而且也不應當將這樣的參考文獻解釋為限制所附權利要求書的范圍。已經出于圖示和描述的目的而呈現對本發明實施例的前文描述。本意并非窮舉本發明或者使本發明限于公開的精確形式,并且修改和變化根據上述教導是可能的或者可以從對本發明的實施中加以獲悉。選擇和描述實施例以便說明本發明的原理及其實際應用以使本領域技術人員在各種實施例中和以與設想的特定實施例適應的各種修改來利用本發明。權利要求1.一種用于對圖像進行編碼的方法,包括將系數矢量劃分成多個子矢量;指示所述多個子矢量中的一個子矢量在所述系數矢量內的位置;以及使用可變長度編碼器對所述子矢量的系數值進行編碼。2.根據權利要求1所述的方法,其中所述子矢量的位置由所述系數矢量內的開始和結束位置指示。3.根據權利要求1所述的方法,其中所述子矢量的位置由所述系數矢量內的開始位置和所述子矢量的長度指示。4.根據權利要求1所述的方法,還包括基于所述子矢量的長度從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。5.根據權利要求4所迷的方法,其中選擇編碼器包括確定所述子矢量的長度是大于還是小于預定閾值。6.根據權利要求4所述的方法,還包括基于所述子矢量長度來分配用以代表所述子矢量的系數的可變長度碼字。7.根據權利要求1所述的方法,還包括基于所述子矢量在所述系數矢量內的位置從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。8.根據權利要求1所述的方法,還包括對與子矢量對應的塊的"尾端一"語法要素進行編碼。9.根據權利要求1所述的方法,還包括對用于宏塊的編碼塊模式進行編碼,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。10.根據權利要求1所述的方法,還包括對指示進行編碼,所迷指示代表用于宏塊的編碼塊模式是否源自于用于先前編碼宏塊的編碼塊模式,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。11.一種設備,包括接收器,用于接收源視頻信號;以及編碼器,被配置成處理所述視頻信號,所述編碼器被配置成將系數矢量劃分成多個子矢量;所述編碼器還被配置成指示所述多個子矢量中的一個子矢量在所述系數矢量內的位置;以及所述編碼器還被配置成使用可變長度編碼器對所述子矢量的系數值進行編碼。12.根據權利要求11所述的設備,其中所述子矢量的位置由所述系數矢量內的開始和結束位置指示。13.根據權利要求11所述的設備,其中所述子矢量的位置由所述系數矢量內的開始位置和所述子矢量的長度指示。14.根據權利要求11所述的設備,其中所述編碼器還被配置成基于所述子矢量的長度從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。15.根據權利要求14所述的設備,其中所述編碼器還被配置成確定所述子矢量的長度是大于還是小于預定閾值。16.根據權利要求14所述的設備,其中所述編碼器還被配置成基于所述子矢量長度來分配用以代表所述子矢量的系數的可變長度碼字。17.根據權利要求11所述的設備,其中所述編碼器還被配置成基于所述子矢量在所述系數矢量內的位置從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。18.根據權利要求11所述的設備,其中所述編碼器還被配置成對與子矢量對應的塊的"尾端一"語法要素進行編碼。19.根據權利要求11所述的設備,其中所述編碼器還被配置成對用于宏塊的編碼塊模式進行編碼,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。20.—種設備,包括處理器;以及存儲器單元,以通信方式連接到所述處理器并且包括用于將系數矢量劃分成多個子矢量的計算機碼;用于指示所述多個子矢量中的一個子矢量在所述系數矢量內的位置的計算機碼;以及用于使用可變長度編碼器對所述子矢量的系數值進行編碼的計算機碼。21.—種具有計算機可執行組件的計算機可讀存儲介質,包括被配置成將系數矢量劃分成多個子矢量的計算機碼;被配置成指示所述多個子矢量中的一個子矢量在所述系數矢量內的位置的計算機碼;以及被配置成使用可變長度編碼器對所述子矢量的系數值進行編碼的計算機碼。22.根據權利要求21所述的計算機可讀存儲介質,其中所述子矢量的位置由所述系數矢量內的開始和結束位置指示。23.根據權利要求21所述的計算機可讀存儲介質,還包括被配置成基于所述子矢量的長度從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器的計算機碼。24.根據權利要求21所述的計算機可讀存儲介質,還包括被配置成基于所述子矢量的長度來分配用以代表所述子矢量的系數的可變長度碼字的計算機碼。25.根據權利要求21所述的計算機可讀存儲介質,還包括被配置成對用于宏塊的編碼塊模式進行編碼的計算機碼,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。26.—種用于對編碼圖像進行解碼的方法,包括接收一個子矢量在代表圖像塊的系數矢量內的位置;接收用于所述子矢量的系數集;基于所述接收的系數集和所述子矢量的位置來形成所述系數矢量;以及對所述塊進行解碼。27.根據權利要求26所述的方法,其中所述子矢量的位置由所述系數矢量內的開始和結束位置指示。28.根據權利要求26所述的方法,其中所述子矢量的位置由所述系數矢量內的開始位置和所述子矢量的長度指示。29.根據權利要求26所述的方法,還包括基于所述子矢量的長度從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。30.根據權利要求29所述的方法,其中選擇編碼器包括確定所述子矢量的長度是大于還是小于預定閾值。31.根據權利要求29所述的方法,還包括基于所述子矢量長度對用以代表所述子矢量的系數的可變長度碼字進行解碼。32.根據權利要求26所述的方法,還包括基于所述子矢量在所述系數矢量內的位置從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。33.根據權利要求26所述的方法,還包括對與子矢量對應的所述塊的"尾端一"語法要素進行解碼。34.根據權利要求26所述的方法,還包括對用于宏塊的編碼塊模式進行解碼,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。35.根據權利要求26所述的方法,還包括接收指示,所述指示代表用于宏塊的編碼塊模式是否源自于用于先前編碼宏塊的編碼塊模式,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。36.—種設備,包括接收器,用于接收源視頻信號;以及解碼器,被配置成處理所述視頻信號,所述解碼器被配置成接收子矢量在代表圖像塊的系數矢量內的位置;所述解碼器還被配置成接收用于所述子矢量的系數集;所述解碼器還被配置成基于所述接收的系數集和所述子矢量的位置來形成所述系數矢量;以及所述解碼器還被配置成對所述塊進行解碼。37.根據權利要求36所述的設備,其中所述子矢量的位置由所述系數矢量內的開始和結束位置指示。38.根據權利要求36所述的設備,其中所述子矢量的位置由所述系數矢量內的開始位置和所述子矢量的長度指示。39.根據權利要求36所述的設備,其中所述解碼器還被配置成基于所述子矢量的長度從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。40.根據權利要求39所述的設備,其中所述解碼器還被配置成確定所述子矢量的長度是大于還是小于預定閾值。41.根據權利要求39所述的設備,其中所述解碼器還被配置成基于所述子矢量長度對用以代表所述子矢量的系數的可變長度碼字進行解碼。42.根據權利要求36所述的設備,其中所述解碼器還被配置成基于所述子矢量在所述系數矢量內的位置從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器。43.根據權利要求36所述的設備,其中所述解碼器還被配置成對與子矢量對應的所述塊的"尾端一"語法要素進行解碼。44.根據權利要求36所述的設備,其中所述解碼器還被配置成對用于宏塊的編碼塊模式進行解碼,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。45.根據權利要求36所述的設備,其中所述解碼器還被配置成接收指示,所述指示代表用于宏塊的編碼塊模式是否源自于用于先前編碼宏塊的編碼塊模式,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。46.—種設備,包括處理器;以及存儲器單元,以通信方式連接到所述處理器并且包括用于接收一個子矢量在代表圖像塊的系數矢量內的位置的計算機碼;用于接收用于所述子矢量的系數集的計算機碼;用于基于所述接收的系數集和所述子矢量的位置來形成所述系數矢量的計算機碼;以及用于對所述塊進行解碼的計算機碼。47.—種具有計算機可執行組件的計算機可讀存儲介質,包括被配置成接收一個子矢量在代表圖像塊的系數矢量內的位置的計算機碼;被配置成接收用于所述子矢量的系數集的計算機碼;被配置成基于所述接收的系數集和所述子矢量的位置來形成所述系數矢量的計算機碼;以及被配置成對所述塊進行解碼的計算機碼。48.根據權利要求47所述的計算機可讀存儲介質,其中所述子矢量的位置由所述系數矢量內的開始和結束位置指示。49.根據權利要求47所述的計算機可讀存儲介質,還包括被配置成基于所述子矢量的長度從可變長度編碼器組中選擇用于所述子矢量的可變長度編碼器的計算機碼。50.根據權利要求47所述的計算機可讀存儲介質,還包括被配置成基于所述子矢量長度對用以代表所述子矢量的系數的長度碼字進行解碼的計算機碼。51.根據權利要求47所述的計算機可讀存儲介質,還包括被配置成對用于宏塊的編碼塊模式進行解碼的計算機碼,所述編碼塊模式代表與所述宏塊的多個塊對應的系數矢量的多個子矢量是否具有任何非零系數值。全文摘要一種視頻編碼方法包括將系數矢量劃分成兩個或者更多子矢量,各子矢量具有比系數矢量的長度更小或者與系數矢量的長度相等的長度;指示各子矢量的大小和各子矢量在系數矢量內的位置;并且形成與各子矢量對應的塊。文檔編號H04N7/26GK101658042SQ200880012287公開日2010年2月24日申請日期2008年3月12日優先權日2007年3月13日發明者J·里奇,王祥林申請人:諾基亞公司