用于视频编码和解码的系统和方法

文档序号:7937563阅读:181来源:国知局

专利名称::用于视频编码和解码的系统和方法
技术领域
:本发明一般地涉及一见频编码和解码的领域。具体而言,本发明涉及增加一见频编码和解码的效率。
背景技术
:本节旨在于提供与在权利要求中记载的本发明有关的背景或者环境。这里的描述可以包括能够探求的概念,但是这些概念未必是先前已经设想或者探求的概念。因此,除非这里另有指明,否则在本节中描述的内容不是在本申请中的说明书和权利要求之前的现有技术、也不因为被包含于本节中而被承认为现有技术。视频编码标准包括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·里奇,王祥林申请人:诺基亚公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1