重新排序的变换系数的多级表示的制作方法

文档序号:7734075阅读:167来源:国知局
专利名称:重新排序的变换系数的多级表示的制作方法
重新排序的变换系数的多级表示背景在编码诸如视频帧或静止图像等图片时,编码器通常将虚拟数据拆分成多块样 本值。编码器执行诸如离散系数变换(DCT)等频率变换来将该块样本值转换成一块变换 系数。按惯例在一个块的左上方示出的变换系数一般称为DC系数,并且其他系数一般 称为AC系数。对于样本值的大多数块,频率变换往往将非零变换系数值组织到左上方, 那里是该块变换系数的较低频率部分。在频率变换之后,编码器量化变换系数值。量化一般减少DC和AC系数的可能 值的数量。这一般将量化值的分辨率以及保真度降低到原始系数值,但它使后续熵编码 更加高效。在较高频率系数具有被量化成零的低振幅时,量化往往还“移除”较高频率 系数(一般被组织在该块的右下侧)。

图1示出量化之后的变换系数的8X8的块(100)的一个示例。在该示例性块 (100)中,该块左上角中的值25是DC系数,而另63个值是AC系数。虽然该块(100) 中的最高振幅系数是左上角的低频系数,但沿着右侧,该块包括较高频率的一簇非零系 数值。在量化了变换系数后,编码器对经量化的变换系数进行熵编码。一种对一块变 换系数进行编码的常见方法通过使用“ζ字形”扫描次序(200)对该块进行重新排序来开 始,如图2所示。在该方法中,编码器根据该扫描次序(200)将来自二维阵列的变换系 数的值映射成一维串。扫描次序200在块(100)的带有DC系数的左上角开始,遍历该 块(100)的位置1和2处的AC系数,遍历位置3、4和5处的AC系数,以此类推。该 扫描根据扫描次序(200)来在该块(100)上跨对角线地继续,在该块(100)的具有最高频 率AC系数的右下角位置63处结束。因为量化操作通常将较低值、较高频系数的显著一 部分量化成零,同时保留较高值、较低频系数的非零值,所以ζ字形扫描重新排序通常造 成剩余非零变换系数中的大多数都靠近一维串的开头且大量零值在该串的结尾。图2示出将扫描次序(200)应用于该块(100)变换系数所得到的示例性一维串 (250)。在该示例中,一维串(250)以与该块(100)的DC系数相对应的值25开始。扫 描次序随后读取值12,此后是两个0,值-52,以此类推。符号“EOB”表示“块结 束”并指示该块中的所有其余值都是0。编码器随后使用行程长度编码或行程级别编码来对系数值的该一维向量进行熵 编码。在行程级别编码中,编码器遍历该一维向量,将连续零值的每一行程编码成行程 计数并将每一非零值编码成一个级别。对于简单编码,编码器向行程计数和级别值分配 如Huffman码的可变长度码。简单编码的一个问题是行程计数可以从0到64变化,只对于行程计数就需要65 个代码的字母表。如果编码器将行程计数与后续非零级别值联合编码(以利用行程计数 和级别值之间的相关),则行程计数-级别字母表的大小更大,这增加了熵编码的复杂度 (例如,由于码表大小和查找操作)。将转义码用于较不频繁的组合帮助控制码表大小, 但可降低编码效率。
在编码器对各行程级别组合使用同一可能的代码值而不管哪些AC系数被编码的 情况下,行程级别编码发生另一问题。如果对于较高频率AC系数而言,遇到长行程的 零值的机会增加,则对各行程级别组合使用同一可能代码值有损效率。最后,在一些情况下,使用图2所示的Z字形扫描次序(200)进行重新排序可损 害编码效率。一般而言,一个块内的邻居系数值是相关的——如果变换系数值是零,则 其邻居更可能是零,并且如果该变换系数值为非零,则其邻居更可能为非零。在一些情 况下,使用ζ字形扫描次序(200)的重新排序在一维向量中将各邻居系数位置(例如,位 置15和27)分开。例如,虽然图1中的该块(100)中的非零系数出现在两个簇中,但图 2的一维串(250)中的非零系数值被一个或多个“0”值的序列打断4次。鉴于编码和解码对于数字视频的关键重要性,编码和解码是充分开发的领域并 不令人惊奇。然而,不论先前的视频编码和解码技术的好处如何,它们都没有以下技术 和工具的优点。概述总体而言,“详细描述”呈现了用于编码和解码各块频率系数的技术和工具。 例如,这些技术和工具通过改进各块频率系数的压缩来改进编码器的性能。通过在一维 串中将频率系数的非零值编组在一起来增加压缩效率,并随后根据多级嵌套集合表示来 对这些系数值进行熵编码。在一个实施例中,诸如编码工具等工具选择多个扫描次序之一并应用所选扫描 次序来对一个块的频率系数进行重新排序。该工具使用经重新排序的频率系数的多级嵌 套集合表示来对该经重新排序的频率系数进行熵编码。这包括在概括表示中将经重新排 序的频率系数中的一个或多个的第一集合表示为多分辨率表示的第一级处的第一符号, 并且对该第一符号和多分辨率表示的第一级处的第二符号进行熵编码。在一些情况下, 该工具还在概括表示中将第一集合的经重新排序的频率系数中的一个或多个的第一子集 表示为嵌套集合表示的第二级处的第一子符号,并且该工具对该第一子符号进行熵编 码。在另一实施例中,诸如解码工具等工具通过对来自位流的视频信息进行熵解码 来重构经熵编码的视频。该工具对频率系数的多级嵌套集合表示的第一级处的第一符号 和第二符号进行解码。第一符号表示频率系数中的一个或多个的第一集合,并且第二符 号表示频率系数中的一个或多个的第二集合。接着,该工具对多级嵌套集合表示的第二 级处的第一子符号进行解码。该子符号表示第一集合的频率系数中的一个或多个的第一 子集。该工具随后确定频率系数的扫描次序,根据该扫描次序对这些系数进行重新排 序,并使用这些系数来重构视频。在一些实现中,编码工具使用Huffman编码来进行熵编码,并且解码工具使用 对应的Huffman解码。在其他实现中,编码工具使用行程级别编码或行程长度编码的另 一变型,并且解码工具使用对应解码。在一些实现中,编码和解码工具从多个预定扫描 次序中为一个块来选择扫描次序。在其他实现中,如果预定扫描次序中没有一个产生变 换系数的合适压缩,则编码工具确定新扫描次序。参考附图阅读以下详细描述,将更清楚本发明的前述和其他目标、特征和优 点。提供本概述是为了以简化形式介绍将在以下详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所 要求保护的主题的范围。附图简述图1是示出示例性的一块经量化变换系数的图表。图2包括示出现有技术ζ字形扫描次序的图表,并且还示出将该ζ字形扫描次序 应用于来自图1的该块变换系数的结果。图3是其中可实现所描述的若干实施例的合适的计算环境的框图。图4是可用于选择扫描次序并使用各块的多级嵌套集合表示对图片进行编码的 一般化编码工具的框图。图5A-C是示出用于选择扫描次序并使用多级嵌套集合表示对图片进行编码的不 同的一般化技术的流程图。图6是示出选择扫描次序并使用多级嵌套集合表示对图片进行编码的示例性技 术的流程图。图7和8包括示出示例扫描次序的图表,并且还示出将相应扫描次序应用于来自 图1的该块变换系数的结果。图9A和9B是示出扫描次序选择的信令的伪码列表。图10是示出使用多级嵌套集合表示对一个块的一组频率系数进行编码的示例性 技术的流程图。图11A、IlB和IlC是示例多级嵌套集合表示的示图。图12A是示出将图IlA的多级嵌套集合表示应用于图7中示出的经重新排序的 系数值的向量的示图。图12B是示出将图IlA的多级嵌套集合表示应用于图8中示出的经重新排序的 系数值的向量的示图。图13A和13B分别是示出图12A和12B的多级嵌套集合表示的示例Hufftnan码
的示图。图14是用于对一图片的各块的经重新排序的多级嵌套集合表示进行解码的一般 化解码系统的框图。图15是示出用于对一个块的经重新排序的多级嵌套集合表示进行解码的一般化 技术的流程图。图16是示出用于对一个块的经重新排序的多级嵌套集合表示进行解码的示例性 技术的流程图。详细描述以下详细描述呈现了用于通过根据扫描次序对一组频率系数进行重新排序来对 它们进行编码以将这些频率系数的值转换成这些值的一维串的工具和技术。各值的该串 是根据熵编码方法来使用多级嵌套集合表示进行编码的。以下详细描述还表示用于对一 组频率系数进行解码的对应工具和技术。本文所描述的技术和工具中的某一些解决了背景中所指出的一个或多个问题。 通常,所给出的技术/工具并不解决所有这些问题。相反,鉴于编码时间、编码资源、 解码时间、解码资源和/或质量的约束和折衷,所给出的技术/工具改进了特定实现或情页 形的编码和/或性能。I.计算环境图3示出了其中可实现若干所描述的实施例的合适的计算环境(300)的一般化示 例。计算环境(300)并非旨在对使用范围或功能提出任何限制,因为这些技术和工具可 以在完全不同的通用或专用计算环境中实现。参考图3,计算环境(300)包括至少一个处理单元(310)和存储器(320)。在图 3中,这一最基本的配置(330)被包括在虚线内。处理单元(310)执行计算机可执行指 令,并且可以是真实或虚拟处理器。在多处理系统中,多个处理单元执行计算机可执行 指令以提高处理能力。存储器(320)可以是易失性存储器(例如,寄存器、高速缓存、 RAM)、非易失性存储器(例如,ROM、EEPROM、闪存等)或两者的某种组合。存储 器(320)存储使用所描述的用于对经重新排序的频率系数的嵌套集合表示进行编码和/或 解码的技术和工具中的一个或多个来实现编码器的软件(380)。计算环境可具有其他特征。例如,计算环境(300)包括存储(340)、一个或多 个输入设备(350)、一个或多个输出设备(360)以及一个或多个通信连接(370)。诸如总 线、控制器或网络等互连机制将计算环境(300)的各组件互连。通常,操作系统软件(未 示出)为在计算环境(300)中执行的其他软件提供了操作环境,并协调计算环境(300)的 各组件的活动。存储(340)可以是可移动或不可移动的,并包括磁盘、磁带或磁带盒、 CD-ROM、DVD或可用于储存信息并可在计算环境(300)内访问的任何其他介质。存储 (340)储存用于实现视频编码器和/或解码器的软件(380)的指令。输入设备(350)可以是诸如键盘、鼠标、笔或跟踪球等触摸输入设备,语音输 入设备,扫描设备或向计算环境(300)提供输入的另一设备。对于音频或视频编码,输 入设备(350)可以是声卡、显卡、TV调谐卡、或接受模拟或数字形式的音频或视频输入 的类似设备、或将音频或视频样本读入计算环境(300)的CD-ROM或CD-RW。输出设 备(360)可以是显示器、打印机、CD刻录机或提供来自计算环境(300)的输出的另一设 备。通信连接(370)允许通过通信介质与另一计算实体进行通信。通信介质传达 诸如已调制数据信号形式的计算机可执行指令、音频或视频输入或输出、或其他数据等 信息。已调制数据信号是其一个或多个特征以在信号中编码信息的方式设置或改变的信 号。作为示例而非局限,通信介质包括以电、光、RF、红外、声学或其他载波实现的有 线或无线技术。各种技术和工具可以在计算机可读介质的一般上下文中描述。计算机可读介质 可以是可在计算环境内访问的任何可用介质。作为示例而非局限,对于计算环境(300), 计算机可读介质可包括存储器(320)、存储(340)、通信介质和以上任一种的组合。该技术和工具可在诸如程序模块中所包括的在目标真实或虚拟处理器上的计算 环境中执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特 定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程 序模块的功能可以如各实施例中所需的组合或在程序模块之间分离。用于程序模块的计 算机可执行指令可以在本地或分布式计算环境中执行。
为了呈现起见,本详细描述使用了如“确定”和“重构”等术语来描述计算环 境中的计算机操作。这些术语是由计算机执行的操作的高级抽象,且不应与人类所执行 的动作混淆。对应于这些术语的实际的计算机操作取决于实现而不同。II.用于经重新排序的频率系数的嵌套集合表示的一般化编码工具图4示出其中可以实现本发明的各实施例的一般化编码工具(400)的框图。该 工具(400)依次接收输入图片(405)。术语“图片” 一般指的是源、已编码的或已重构 的图像数据。对于逐行视频,图片是逐行视频帧。对于隔行视频,取决于上下文,图片 可以指的是隔行视频帧、帧的上半帧、或帧的下半帧。输入图片(405)可以是整个视频 帧或静止图片,或输入图片可以只是视频帧的一部分或静止图片的一部分。或者,输入 图片(405)可只包括经降采样图片的一个色彩分量,例如YCbCr图片的亮度分量。为简明起见,图4未示出编码工具(400)的与运动估计、运动补偿、以及其他运 动处理相关的模块。在一些实现中,除处理样本值的各块来进行图片内压缩之外,该工 具(400)使用图4中示出的各模块来处理样本值的各块的运动补偿残差。对于给定残差 块,该工具执行该残差块的频率系数值的频率变换、量化、扫描重新排序以及熵编码。在图4中,对于图片内压缩,拆分器(410)将输入图片(405)拆分成一系列块, 每一个块都包含多个样本值。对于8X8的块,每一个块包括被安排成8行和8列的64 个样本值。或者,各块可以是4X4、4X8、8X4、16X 16或某一其他大小。频率变换器(415)将各块变换系数转换成频域(即,频谱、变换)数据。频率 变换器(415)将DCT、DCT的变型、或其他频率变换应用于各块样本值,从而产生各块 频率变换系数。频率变换器(415)可应用8X8、8X4、4X8、4X4或其他大小的频率变 换。量化器(420)随后量化各块变换系数。量化器(420)将非均勻的标量量化应用于 频谱数据,其中量化步长在逐图片的基础上、在逐块的基础上、或其他基础上变化。量 化器(420)还可以将另一类型的量化应用于数据系数,例如这些系数中的至少一些的均 勻或自适应量化,或在不使用频率变换的编码器系统中直接量化空间域数据。系数扫描仪/重新排序器(425)扫描经量化的系数并在一维串中根据扫描次序对 它们进行重新排序。熵编码器(430)对该一维串中的系数进行编码。例如,熵编码器 (430)使用自适应Huffman编码来对变换系数进行编码。或者,熵编码器可以使用行程长 度编码、行程级别编码、或某一其他熵编码方法来对变换系数进行编码。熵编码器(430) 将经熵编码的系数值(435)输出到缓冲区(440)。在一些实施例中,该工具(400)使用系数扫描仪(425)可用的多个扫描次序中的 任一个。例如,该工具(400)在图2中的扫描次序(200)、图7中的扫描次序(700)、图 8中的扫描次序(800)、以及一个或多个其他扫描次序之间切换。该工具(400)在逐块的 基础上、逐宏块的基础上、逐片的基础上、逐图片的基础上或在某一其他基础上来在可 用扫描次序之间进行选择。该多个可用扫描次序可包括在编码工具和对应解码工具两者 处设置的一个或多个预定义扫描次序。在使用预定义扫描次序之一时,编码工具(400) 使用标识所选扫描次序的代码和其他位流元素来用信号通知扫描次序选择。该多个可用 扫描次序还可包括由编码工具(400)在编码期间特别定义并用信号通知给对应解码工具 以在解码时使用的一个或多个扫描次序。在自身用信号通知了扫描次序后,在编码工具(400)稍后使用该扫描次序时,该工具(400)可以用信号通知标识该扫描次序的代码或其 他位流元素,其中解码器存储了该扫描次序。尽管ζ字形扫描次序(200)为某些变换系数块提供非零值的合适聚类,但通过选 择性地使用其他扫描次序,该编码工具(400)通常可以提高熵编码效率。该工具(400) 可以使用开环方法或闭环方法来选择扫描次序。缓冲区(400)存储经熵编码的系数值 (435),并且缓冲区充满度因而提供熵编码所提供的压缩效率的某种度量。这一度量可 以基于经压缩系数的总大小或某一其他度量。系数扫描仪(425)可以应用不同的扫描次 序,其中该工具(400)对结果进行评估。在闭环方法中,该工具(400)应用可用的每一 扫描次序并且选择造成最高效地压缩的经熵编码的系数值(435)的一个次序。在一些实 现中,如果预定义扫描次序中没有一个提供可接受的性能(例如,根据可被预编程或由 用户定义的阈值),该工具(400)确定新扫描次序并在输出位流中用信号通知它。或者, 扫描次序可由用户指定。III.用于经重新排序的频率系数的嵌套集合表示的一般编码技术图5A示出一种对一块频率系数进行编码的一般化技术(500)的流程图。诸如参 考图4描述的工具(400)等编码工具或其他工具执行该技术(500)。图5A中示出的技术 (500)包括对扫描次序的自适应选择和使用默认多级嵌套集合表示的熵编码。该工具选择多个扫描次序之一(505)。该扫描次序可以根据按实际结果的压缩效 率或估计的压缩效率来进行选择(505)。另外,该扫描次序可以是多个预定扫描次序之 一,或该扫描次序可以由该工具(400)在编码过程期间构造。该工具随后将所选扫描次序应用于该块的多个频率系数(510)。这一步骤将多个 频率系数重新排序成这些系数的一维串。优选地,根据该扫描次序的重新排序造成非零 频率系数值在这些系数的一维串内的聚类,例如在该一维串的开头。最后,该工具使用经重新排序的频率系数的默认多级嵌套集合表示来对该经重 新排序的频率系数进行熵编码(515)。图11A、IlB和IlC示出了示例多级嵌套集合表 示。可以使用诸如自适应Huffman编码、行程长度编码等熵编码方法或某一其他方法来 将频率系数编码在嵌套集合表示内。该工具在逐块的基础上或某一其他基础上重复该技术(500)。例如,该工具在逐 帧的基础上选择扫描次序,为整个帧选择扫描次序并随后在进行熵编码之前对该帧中的 各块的系数进行重新排序。图5B示出对多个频率系数的块进行编码的替换一般化技术(520)的流程图。诸 如参考图4描述的工具(400)等编码工具或其他工具执行该技术(520)。与图5A的技 术(500)相比,图5B中示出的技术(520)包括使用默认扫描模式来进行的重新排序和不 同多级嵌套集合表示之间的自适应选择。在该技术(520)中,已经由该工具执行先前分 析、通过用户定义、或通过某一其他确定因素确定了扫描次序。该工具将该扫描次序应 用于该块的各频率系数(525)。这将多个频率系数重新排序成这些系数的一维串。该工具随后选择多个多级嵌套集合表示之一(530)。嵌套集合表示可以基于编 码效率、用户定义、或某一其他因素来选择。图IlA示出64个变换系数在一维向量中 的一个示例多级嵌套集合表示,根据该表示每一集合被分成两个子集,每一子集包括一 个或多个变换系数。图IlB示出替换多级嵌套集合表示,根据该表示每一集合被拆分成两个、三个、或四个子集,每一子集包括一个或多个变换系数。图IlC示出具有三层的 第三多级嵌套集合表示一在一层处,每一集合(或子集)被拆分成四个子集(或变换系 数)。其他嵌套集合表示用不同的方式来分割这64个系数,例如将顶层0到64拆分成位 置0到3的第一集合和位置4到63的第二集合,将第二集合拆分成第一和第二子集,以 此类推。可为图片的特定扫描次序或类型来预测频率系数的特定群集模式,并且可以指 定特定嵌套集合表示来利用这些模式并进一步提高编码效率。特定类型的熵编码可以对 更积极地将系数的集合拆分成更多子集的特定嵌套集合表示更有效。该工具随后根据诸 如自适应Huffman编码、行程长度编码等方法或某一其他熵编码方法使用所选嵌套集合 表示对经重新排序的多个频率系数进行熵编码(535)。该工具在逐块的基础上或某一其他基础上重复该技术(520)。例如,该工具在逐 帧的基础上选择多级嵌套集合表示,为整个帧选择嵌套集合表示并随后在使用所选嵌套 集合表示进行熵编码之前对该帧中的各块的系数进行重新排序。图5C示出对频率系数的块进行编码的替换一般化技术(540)的流程图。诸如参 考图4描述的工具(400)等编码工具或其他工具执行该技术(540)。这一技术(540) —般 将参考图5A和5B描述的技术(500、520)进行组合。在该技术(540)中,该工具选择多个扫描次序之一(545)并随后将所选扫描次序 应用于该块的多个频率系数(550)。接着,该工具选择多个嵌套集合部分之一(555)并根 据诸如行程长度编码、自适应Huffman编码等熵编码方法或某一其他方法使用所选嵌套 集合部分来对经重新排序的多个频率系数进行熵编码(560)。该工具在逐块的基础上或某 一其他基础上重复该技术(540)。例如,该工具在逐帧的基础上选择扫描次序和多级嵌套 集合表示,为整个帧选择扫描次序和嵌套集合表示并随后在使用所选嵌套集合表示进行 熵编码之前使用所选扫描次序对该帧中的各块的系数进行重新排序。IV.用于经重新排序的频率系数的嵌套集合表示的示例性编码技术图6示出对图片的各块频率系数进行编码的示例性技术(600)的流程图。诸如 参考图4描述的工具(400)等编码工具或某一其他编码工具执行该技术(600)。在该技术(600)中,该工具选择预定扫描次序来进行评估(605)。一般而言,该 工具可以使用多个预定扫描次序中的任一个。在特定实现中,存在默认扫描次序并且是 所选择的第一个扫描次序。编码工具的默认扫描次序可以在编码工具的源代码中定义或 作为编码工具设置,或用户可以在启动编码时定义特定图片或序列的默认扫描次序。或 者,默认扫描次序不存在,并且改为随机选择多个预定扫描次序之一。该工具应用所选预定扫描次序来对各块的频率系数进行重新排序(610)。对于给 定块,应用预定扫描次序一般包括根据该扫描次序遍历频率系数的二维块,并将这些系 数重新排序成频率系数的一维串。在该工具将扫描次序分别应用于各块的频率系数之后(610),该工具检查系数重 新排序是否充分(615)。例如,这一检查(615)包括确定将扫描次序应用于各块的多个频 率系数(610)是否将二维块的非零频率值充分群集到这些系数的一维串的前部。这一检 查(615)可以基于该工具的预定阈值、用户选择的阈值、或某一其他判定。扫描次序判定是在对帧进行编码时执行的,以便使用同一所选扫描次序对该帧 中的所有块进行编码。或者,扫描次序判定可以在序列的开头处执行,使得使用同一通用扫描次序对图片序列进行编码,或扫描次序可以在逐块的基础上或某一其他基础上确 定。何时选择扫描次序可以根据用户定义的准则或根据诸如编码在编码工具的源代码中 的指令等其他准则来选择。如果系数被充分地重新排序,则该工具接着确定图片的各块的经重新排序的频 率系数的多级嵌套集合表示(620)。在一些实现中,只有一个嵌套集合表示对该工具可 用。该嵌套集合表示是在编码工具的源代码中、作为编码工具设置、由用户指令、或由 某一其他准则来预定义的。或者,该工具具有可从中进行选择的多个嵌套集合表示。一 般而言,嵌套集合表示可以基于诸如所使用的熵编码的类型、多个频率系数是否一般被 安排成一致的模式、或哪一嵌套集合表示产生图片的频率系数的一维串的最高效编码等 因素来定义或选择。该工具将所选多级嵌套集合表示应用于经重新排序的频率系数以产生图片的各 块中的每一个块的一系列符号(625),并对这些符号进行熵编码(630)。一般而言,对于 多级嵌套集合表示的给定层,编码工具使用概括该层处的集合(或子集)中的系数值的符 号来表示结果。例如,每一符号指示非零频率系数值在频率系数值的给定集合(或子集) 中的存在或缺席。如果给定集合(或子集)的符号指示频率系数值的给定集合(或子集) 中存在至少一个非零频率系数值,则另一符号可指示频率系数值的给定集合(或子集)的 更低层子集中存在或缺少非零频率系数值。集合和子集的这一递进嵌套可以重复,直至 子集只包含零值或只有一个非零系数为止,在这种情况下,另一符号将指示该位置处的 特定频率系数的非零值。在一些实现中,该工具将自适应Huffman编码应用于经重新排序的频率系数。 或者,该工具可以使用诸如非自适应Huffman编码、行程长度编码、算术编码、LZ编码 等其他熵编码方法或某一其他方法。返回前一步骤,如果系数重新排序(615)因诸如重新排序不满足特定效率阈值 等原因或某一其他原因而不充分,则该工具检查其他预定扫描次序是否可用(635)。如 果一个或多个不同预定扫描次序可用,则该工具重复选择一个或多个预定扫描次序之一 (605)、应用所选扫描次序以根据所选扫描次序对各块的频率系数进行重新排序(610)、 并检查该系数重新排序是否充分(615)。如果该工具检查出另一预定扫描次序不可用(635),则该工具确定产生充分系数 重新排序的新扫描次序并应用该扫描次序来对各块的频率系数进行重新排序(640)。另一 预定扫描次序因诸如用户指定不使用特定扫描次序、该工具只预定了一个扫描次序、或 已遍历所有扫描次序并且它们中没有一个具有充分地重新排序了系数等原因而不可用。 或者,如果另一预定扫描次序不可用,则该工具简单地使用产生最高效系数重新排序的 预定扫描次序,或该工具可以用信号向用户通知错误。V.示例扫描次序和扫描次序选择的信令图2示出诸如在图4示出的编码工具等编码工具(400)可以应用来对频率系数进 行重新排序的一个可能的扫描次序(200)。然而,使用固定ζ字形扫描次序对变换系数的 某些块而言是不高效的。图7和8示出两个替换扫描次序。或者,编码工具和解码工具 使用其他和/或附加扫描次序。图7示出诸如在图4示出的编码工具等编码工具(400)可以应用来对频率系数进行重新排序的一个替换扫描次序(700)。图7中示出的扫描次序(700)可以用于频率系数 的一般分布。在一些实现中,这一扫描次序(700)是一个块的默认扫描次序。图7还示出将该扫描次序(700)应用于图1中示出的频率系数(100)来产生示例 性一维串(750)的结果。系数值25处于该扫描次序(700)的系数位置0处,所以一维串 (750)的第一个值是25。沿该扫描次序(700)继续,在该扫描次序中,所扫描的下一系 数值将在系数位置1处,它对应于频率系数(100)中的值12,所以系数值12在该一维串 (750)中是下一个。这之后是系数位置2处的系数值0,随后是位置3处的值-5。系数 位置4到28具有系数值0,导致该一维串(750)中的25个0值,以此类推。相比于通过 根据图2的现有技术ζ字形模式(200)进行重新排序所产生的一维串(250),根据该扫描 次序(700)产生的该一维串(750)稍微更加高效(在将非零值进行群集方面)。图8示出用于图1所示的特定频率系数(100)的更高效扫描次序(800)。这一扫 描次序(800)可由特定用户来定义。或者,这一扫描次序(800)可以是编码工具可用的 多个可能预定义扫描次序之一并且可被选作对多个频率系数进行最高效重新排序的扫描 次序。或者,扫描次序(800)不是预定扫描次序之一,而是在预定扫描次序中没有一个 对频率系数进行适当的重新排序的情况下由编码工具确定的。图8示出将该扫描次序(800)应用于图1中示出的频率系数(100)来产生示例性 一维串(850)的结果。与应用图7的扫描次序(700)的结果或应用图2的扫描次序(200) 的结果相比,对于该特定扫描次序(800),该一维串(850)显著地更紧致。图9A和9B示出一种用于在编码工具和解码工具在逐帧的基础上在多个扫描次 序选项之间进行选择时用信号通知并接收选择信息的方法。这一方法使用序列层句法元 素和图片层句法元素的组合。图9A示出接收指示编码工具为一序列所定义的扫描次序的序列层句法元素的 解码工具的伪码列表(900)。编码工具执行该信息的对应信令。在一序列头部中, 解码工具接收并解析指示该序列头部之后将有多少扫描次序(从0到15)的句法元素 NumOfNonDefaultScanOrders。对于所定义的非默认扫描次序中的每一个,解码工具接收指示该扫描次序的索 引位置的信息。图9A示出8X8的块的信令。对于8X8的块的扫描次序中的64个位 置中的每一个位置,解码工具接收指示该位置是否具有扫描次序位置的默认值的单个位 Defaultldx。以下列表(对解码工具和编码工具两者都可用)指示扫描次序的默认位置。
DefaultScanOrderIdx[64]={0,1,‘4,5,16, 17, 20, 21,2,3, 6, 7,18,19,22,23, 8, 10, 12, 13, 24,25,28,29,9, 11, 14, 15,26,27, 30,31,32,34,40, 41, 48, 49, 52, 53,33,35,42,43, 50, 51, 54,55,36, 38,44,45,56,
57,60,61,37,39,46,47,58,59,62,63}。这些默认位置与图7中示出的位置相 对应。如果DefaultIdx指示该默认位置被用在用信号通知的扫描次序中,则解码工具在 DefaultScanOrderIdx中查找默认位置。否则,解码工具获得指示在用信号通知的扫描次 序中使用的非默认位置的6个位。 解码工具存储该序列的这一用信号通知的预定义扫描次序以及总是对编码工具 和解码工具可用的零个或更多个其他扫描次序。虽然图9A示出8X8的块的信令,但对 于其他大小的块,编码工具可以用信号通知按扫描次序的块大小。
图9B示出用于在各扫描次序之间进行切换的解码工具的伪码列表(910)。解码 工具例如在解码期间在逐帧的基础上切换扫描次序。编码工具执行扫描次序选择信息的 对应信令,例如在帧头部用信号通知用于一个帧的扫描次序。解码工具接收并解析指示是对该帧使用默认扫描次序(没有对该帧的扫描次序 信息的进一步信令)还是对该帧使用非默认扫描次序的句法元素UseDefaultOrder。默 认扫描次序可以由编码工具和解码工具对所有序列、对被编码/解码的特定序列进行定 义,或由编码工具和解码工具处的一组规则来导出。如果解码工具对该帧使用非默认扫描次序,则解码工具检查是否应当使用针对 该序列来用信号通知的非默认扫描次序(如果有的话)之一。如果是,则解码工具接收 并解析标识针对该序列用信号通知的非默认扫描次序之一的句法元素Orderldx。否则(如果针对该序列没有用信号通知非默认扫描次序或用信号通知了它们但 不应使用),解码工具接收并解析新扫描次序的信息。与图9A—样,图9B示出8X8的 块的信令。对于8X8的块的新扫描次序中的64个位置中的每一个位置,解码工具接收 指示该位置是否具有扫描次序位置的默认值的单个位Defaultldx。如果否,则解码工具获 得指示在该新扫描次序中使用的非默认位置的6个位。或者,编码工具和解码工具使用另一位流句法来在逐宏块的基础上、在逐帧的 基础上、或在某一其他基础上切换扫描次序。VI.使用多级嵌套集合表示的示例编码图10示出使用多级嵌套集合表示来对多个频率系数的经重新排序的块进行编码 的示例性技术(1000)。该技术(1000)可以例如在图6中描述的技术(600)中使用。该 技术(1000)是递归式的。在对一组系数值进行编码时,在一些情况下,该技术(1000)递 归地对该集合内的系数值的一子集或多个子集中的每一个子集进行编码。该技术(1000) 包括退出条件,在该条件下,该技术(1000)返回到入口点或完成对该集合的编码。在该技术(1000)中,编码工具接收通过根据特定扫描次序对一个块的频率系数 值进行重新排序而产生的一维串中的一组系数值。该工具评估该集合的给定级别的一个 或多个系数值(1005)。当首次启动该技术(1000)时,该组多个频率系数一般将在该一维 串中包括所有这多个频率系数。稍后,该技术(1000)可以在作为一维串的子集的较小集 合上执行。出于这一原因,所讨论的集合可包括64个系数值、63个系数值、32个系数 值、16个系数值、1个系数值或某一其他数量的系数值。编码工具检查系数的给定集合是否只包含单个频率系数(1010)。如果该组频率 系数确实只包含单个系数,则该工具对该系数的值进行编码(1015)。例如,该工具对该 单个系数值使用Golomb编码、Huffinan编码、或另一形式的可变长度编码。如果以其 他方式暗示了该单个系数的值的幅度(例如,在对于某些类型的熵编码,该系数是-ι或 1时),则该工具用信号通知指示该单个系数的符号的标志。该工具随后返回(子集的) 入口点或完成对该频率系数的特定集合的编码(1020)。如果给定集合在该集合中包含多个频率系数,则该工具分析该集合并为该集合 编码一个或多个代码(1025)。取决于所使用的熵编码的类型,该代码指示非零频率系 数在该集合中的存在或缺席并且还可以指示该集合中的哪些子集包括任何非零值频率系 数。如果该集合不包括任何非零频率系数,则该工具编码指示该集合不包括任何非零频率系数的符号。然而,如果该集合包括至少一个非零频率系数,则该工具编码指示一个 或多个非零频率系数在该集合中的存在的一个或多个符号。该代码还指示给定集合应当 被拆分成η个子集,并且给出关于非零频率系数值在这η个子集中的每一个中的存在或缺 席的信息。例如,该一个或多个代码可以指示第一子集不包括具有非零值的至少一个频 率系数,第二子集包括具有非零值的至少一个频率系数,以及第三子集不包括具有非零 值的至少一个频率系数。对于某些多级嵌套集合表示,η等于2并且每一集合可被拆分 成多达两个子集。或者,η是某一其他数量,如3或4。在某些实施例中,该代码可以 另外指示与该集合中的频率系数的非零值有关的其他信息,如子集中的单个系数是正的 还是负的或一子集中的任何系数大于还是等于给定值。在该工具为该集合编码了一个或多个代码后(1025),该工具确定是否将给定集 合拆分成多达η个频率系数子集(1030)。如果该集合中没有非零频率系数,则该工具不 拆分该集合并且返回(子集的)入口点或完成对频率系数的特定集合的编码(1020)。然而,如果该集合包含一个或多个非零频率系数,则该工具对包括至少一个非 零值的任何子集进行编码。该工具将给定集合拆分成η个子集(1030)并检查以查看是否 要将这些子集中的第一子集作为“集合”来进行编码(1035)。如果这些子集中的第一 子集包含非零频率系数,则该工具在更低级别对该第一子集执行方法(1000)并且因此将 第一子集作为“集合”进行编码。在对该子集进行编码(1040)时,执行该方法(1000) 的工具所产生的这些符号和代码被组织来阐明正在被分析的频率系数值是第一集合的子 集,并且正在嵌套集合表示的更低级表示处被进行分析。如果第一子集因其不包含至少一个非零频率系数而不应被编码,则该工具随后 检查该集合中是否剩余其他子集(1045)。类似地,在该工具编码了第一子集(1040)之 后,该工具检查该集合中是否剩余其他子集(1045)。如果另一子集存在,则该工具检查 以查看是否将该子集作为“集合”进行编码(1035),并且如果是,则该工具对该子集进 行编码(1040)。在该工具确定该集合没有剩余的其他子集之后,该工具返回(子集的) 入口点或完成对频率系数的特定集合的编码(1020)——该工具或者返回更高级别以对下 一集合或子集进行编码,或转移至另一个块或图片。VII.示例多级嵌套集合表示使用变换系数的多级嵌套集合表示通过使用零值变换系数的概括表示可以方便 对变换系数进行高效的熵编码。在结合自适应扫描次序选择使用时,多级嵌套集合表 示尤其高效,但它们还可与非自适应扫描重新排序一起使用。取决于实现,可以使用 Huffman编码、行程级别编码、行程长度编码的另一变型或某一其他形式的熵编码来对一 个块的多级嵌套集合表示进行编码。考虑变换系数的典型的8X8的块(在量化之后)。大多数非零系数值群集在少 数区域中,如用于低频系数的左上角。有效的多级嵌套集合表示将零值高频率系数编组 在一起成为单个块,并且将它们表示成单个零值系数(或符号)。除以此方式将零值系数 编组成一个或多个块之外,多级嵌套集合表示将包括非零值(或非零值和零值的混合)的 系数的子集编组成单个块并将它们当作一个系数(或符号)。在给定级别,多级嵌套集合 表示包括一个或多个“概括”系数(或符号),它们随后被进行熵编码。对于包括一个 或多个非零值系数的块,多级嵌套集合表示递归地将这些系数拆分成被表示为单个系数(或符号)各个子组来进行编码。图11A、IlB和IlC示出了示例多级嵌套集合表示。图11A、IlB和IlC示出 可被用于例如图10中示出的技术(1000)中的具有64个系数的块的示例多级嵌套集合表 示(1100、1150、1180)。或者,编码工具和解码工具使用其他和/或附加多级嵌套集合表不。参考图11A,在将一集合拆分成η个子集时,η等于2。在图IlB中示出的表示 (1150)中,η等于2、3或4,并且在图IlC中示出的表示(1180)中,η等于4。或者, η可以等于3、4或某一其他数字。在该表示中,位置0到63处的系数值表示第一级别(1105)处的第一集合,并且 可能被拆分成第二级别(1110)处的包含位置0处的系数值的第一子集和第二级别(1110) 处的包含位置1到63处的系数值的第二子集。位置0的集合是具有单个系数值的集合, 并且因此位置0处的频率系数的非零值将被进行熵编码,例如使用第二级别(1110)处的 代码。如果第二级别(1110)处的(位置1到63的)子集包括任何非零系数值,则位置 1到63处的系数值被拆分成第三级别(1115)处的两个子集。第三级别(1115)处的各子 集中的第一子集包含位置1到3处的系数值,并且第三级别(1115)处的各子集中的第二 子集包含位置4到63处的系数值。不进一步拆分只包括零值系数的各子集。然而,如 果第三级别(1115)处的这些子集之一包括非零系数值,则第三级别(1115)处的该子集被 拆分成第四级别处的多个不同子集,如图IlA所示。图IlB示出第二多级嵌套集合表示(1150),根据该表示,第一级别(1155)处的 集合(从位置0到63)可能被拆分成第二级别(1160)处的两个子集,并且第二级别(1160) 处的第二子集(从位置1到63)可能被拆分成第三级别(1165)处的三个子集。图IlB中 的表示(1150)比图IlA中的表示(1100)更宽但不一样深,因为集合(或子集)可能被拆 分成更低级别处的三个或四个子集。图IlC示出第三多级嵌套集合表示(1180),根据该表示,第一级别(1185)处的 集合(从位置0到63)可能被拆分成第二级别(1190)处的四个等大小的子集,并且第二 级别(1190)处的每一子集可能被拆分成第三级别(1195)处的四个子集。图IlC中的表 示(1180)比图IlB中的表示(1150)更宽,因为集合(或子集)可能被拆分成每一更低级 别处的四个子集。图12Α示出将图IlA的多级嵌套集合表示(1100)应用于图7的示例性一维串 (750)。变换系数(100)的该一维串(750)提供包括从位置0到位置63的系数值的第一 级别集合(1205)。第一级别集合(1205)不是单值集合,并包括至少一个非零值,所以该 第一级别集合被拆分成多个子集。取决于熵编码是如何实现的,一个或多个代码指示第 一级别集合被拆分成第二级别(1210)处的两个子集。在本示例中,第二级别(1210)处 的两个子集包括位置0处的系数的第一子集和位置1到63处的系数的第二子集。该工具随后将第二级别(1210)处的(位置0的)第一子集作为“集合”进行编 码。在本示例中,该子集只包含单个值——系数位置0处的系数值25。该工具对该第一 子集进行熵编码。该工具随后继续进行以将第二级别处的第二子集(1210)(包括位置1到63的系数的值)作为集合进行编码。第二子集被拆分成第三级别(1215)处的两个子集。第三 级别子集中的第一子集包括系数值12、0和-5,它们分别是系数位置1、2和3处的系数 值。第二第三级别子集包括系数位置4到63处的系数值。第三级别(1215)处的第一子集被拆分成第四级别(1220)处的两个子集。这些 第四级别子集中的第一子集包括系数值12,它是系数位置1处的系数值。对这一系数值 进行熵编码。这些第四级别子集中的另一子集包括值0和-5,它们是系数位置2和3处 的系数值。这一第四级别子集被拆分成第五级别(1225)处的两个子集。这些第五级别 子集中的第一子集包括系数位置2处的单个系数值0,并且这些第五级别子集中的第二子 集包括系数位置3处的单个系数值-5。这些子集中的每一个都是单值子集,并且因此对 这些子集中的每一个的系数值进行熵编码。返回第三级别(1215),第三级别(1215)处的第二子集(包含系数位置4到63处 的系数值)被拆分成第四级别(1220)处的两个子集。这些第四级别子集中的第一子集包 括位置4到15处的系数的值,并且这些第四级别子集中的第二子集包括位置16到63处 的系数的值。在该示例中,系数位置4到15处的系数值全是0。因为这样,所以位置 4到15的子集不必被进一步拆分,因为它不包含任何非零系数值。用信号通知指示该子 集不包含任何非零频率系数值的代码,该子集不被拆分,并且不对该子集执行进一步分 析。包含位置16到63处的系数的值的子集被拆分成第五级别(1225)处的两个分开的子 集,每一子集包括零值系数和非零系数的混合。继续这一分析和对集合到各个子集的选 择性地拆分,直至定位了所有非零频率系数并进行了熵编码为止。图12B示出将图IlA的多级嵌套集合表示(1100)应用于图8的示例性一维串 (850)。总体而言,图12B示出与图7的扫描次序(700)相比,图8是扫描次序(800)对 图1的变换系数(100)进行了更高效的群集。变换系数(100)的该一维串(850)提供包括从位置0到位置63的系数值的第一 级别集合(1255)。第一级别集合(1255)被拆分成两个子集,其中一个或多个代码指示拆 分成第二级别(1260)处的两个子集。第二级别(1210)处的两个子集包括位置0处的系 数的第一子集和位置1到63处的系数的第二子集。位置0的子集包含单个值——系数位 置0处的系数值25,它被进行了熵编码。位置1到63的子集被拆分成第三级别(1265) 处的两个子集。第三级别子集中的第一子集包括系数值12、0和-5,并且如参考图12A所描述 的那样被处理。(系数位置4到63处的系数值的)第二第三级别子集被拆分成第四级别 (1270)处的两个子集。这些第四级别子集中的第一子集(包括位置4到15处的系数的 值)被进一步拆分成两个第五级别子集。一个第五级别子集只包含零值系数,并且不被 进一步拆分;另一第五级别子集包含零值系数和非零值系数的混合并且如图12B所示的 那样被进一步拆分。第四级别子集的第二子集(包括位置16到63的系数的零值)不被 进一步拆分,并且用信号通知指示该子集不包含任何非零频率系数值的代码。除图11A、IlB和IlC中示出的多级嵌套集合表示之外,其他多级嵌套集合表示 也是可能的。并非将每一集合或子集拆分成下一级别处的两个子集,每一集合或子集可 被拆分成多达三个子集、多达四个子集、或某一其他数量的子集。例如,第一级别集合 包括系数位置0到63处的系数值,可被拆分成三个第二级别子集,第一子集包括位置0处的系数值,第二子集包括位置1到15处的系数值,并且第三子集包括位置16到63处 的系数值。另外,至少对于图IlA和IlB中的表示(1100、1150),划分策略假定扫描次 序会高效地将来自该块变换系数的非零频率系数值编组到一维串的前部。然而,如果安 排系数值而使得它们不能被高效地编组,则嵌套集合表示可具有某种其他通用划分,如 将包括系数0到63的第一级别集合拆分成两个子集的二元划分,第一子集包括系数位置0 到31处的系数值,并且第二子集包括系数位置32到63处的系数值,其中每一子集可能 都经受进一步的二元拆分。另外,多级嵌套集合表示的代码的信令取决于实现。在一些情况下,给定级别 的代码是作为对该表示的深度优先遍历的一部分来用信号通知的。对于图11A,编码工 具用信号通知0-63的代码、0的代码、1-63的代码、1-3的代码、1的代码、2_3的代 码、2的代码、3的代码、4-63的代码,等等。或者,代码是作为对该表示的宽度优先遍 历的一部分来用信号通知的。VIII.示例熵编码和解码被用来表示多级嵌套集合表示中的变换系数的熵编码的类型取决于实现。这一 部分描述熵编码和解码的两种通用方法。或者,编码工具和解码工具使用另一方法。A.行程长度编码和解码变型使用行程长度编码和解码,将给定集合的各符号(表示各单独的系数值或系数 值的子集)编码成序列。例如,对于某一子集,符号值0指示该子集只包括零值系数, 并且符号值1指示该子集包括至少一个非零值系数。对于某一单独的系数值,符号值0 指示该系数值是零,并且符号值1指示该系数值是非零,其中一个或多个其他代码指示 实际值。在以下示例中,术语“行程_级别_代码_x”、“行程_长度_代码”以 及“值_x”仅仅是可变长度代码、固定长度代码或表示行程级别组合、行程长度计数或 值的其他位模式的指示符。对于图IlC中的多级嵌套集合表示(1180),图8的扫描次序(800)和图1的变 换系数(100),位置0、1、3和9-15具有非零值,并且其他位置具有零值系数。位置 0到15的子集包括至少一个非零值,但其他三个第二级别子集中没有一个包括任何非零 值,所以第一级别表示是1000。使用行程级别编码(每一代码指示零的行程计数+非零 级别),这些符号被表示成OEOB的代码。实际上,随后使用某一个或多个代码来对这一 表示进行编码,在此其将被指示为行程_级别_代码_0 (0的计数零+第一个1)和行程_ 级别_代码_EOB (对于最后三个0)。第一级别表示1000足以指示位置16到63处的系 数是零值系数。位置0到15的子集被拆分成0-3、4-7、8_11以及12-15的四个子集,它们用 1011来表示。使用行程级别编码,这些符号被表示成代码010,指示为行程_级别_代 码_0 (0的计数零+第一个1)、行程_级别_代码_1 (0的计数1+第二个1)以及行程_级 别_代码_0 (0的计数零+最后一个1)。这足以指示位置4到7的系数是零值系数。位置0到3的子集被表示为1101,位置8-11的子集被表示为0111,并且位置 12-15的子集被表示为1111。这些子集是使用行程级别编码来进行编码的,或另选地使 用向量Huffman代码或文字值来进行编码。对于每一非零值,一个或多个代码随后用信 号通知实际值以及该系数的符号。例如,代码“值_25”、“值_12”和“值_-5”遵循位置0-3的子集的行程级别代码。用于某一表示的代码的信令可以遵循该表示的深度 优先遍历或宽度优先遍历。对于来自图1、8和IlC的同一示例多级嵌套集合表示,使用除0和1的替换行程 (例如,0010或0000或1110)之外的简单行程长度编码变型,符号1000被表示为OlEOB 的代码,指示为行程_长度_代码_0 (0的计数零)、行程_长度_代码_1 (1的计数1)和 行程_长度_代码_EC)B(0的计数3)。位置0到15的子集被拆分成0-3、4_7、8_11以 及12-15的四个子集,被编码成行程_长度_代码_0(0的计数零)、行程_长度_代码 _1(1的计数1)、行程_长度_代码_1(0的计数1)以及行程_长度_代码_EOB (最后 两个1)。位置0到3的子集被表示为1101,位置8-11的子集被表示为0111,并且位置 12-15的子集被表示为1111。这些子集是使用简单行程长度编码的变型来进行编码的, 或另选地使用向量Huffman代码或文字值来进行编码。对于每一非零值,一个或多个代 码随后用信号通知实际值以及该系数的符号。同样,用于某一表示的代码的信令可以遵 循该表示的深度优先遍历或宽度优先遍历。一般而言,某一集合或子集(如,该集合/子集的两个子集10、01或11,或者 该集合/子集的三个子集111、110、101、100、011、010或001)的符号的模式可以在位 流中用特定数量的位或位模式来指示,如行程_长度_代码、行程_级别_代码或某一其 他模式。另外,非零值频率系数的值是使用某一特定数量的位或位模式来指示的。例 如,值25可由任意代码来指示,如值_(25)。B.Huffman编码和解码使用Huffman编码和解码,Huffman代码表示特定子集或系数的符号。用 Huffman代码表示的Huffman代码和符号取决于实现。Huffman代码可以是自适应或非自
适应的。例如,对于某一子集,符号值0指示该子集只包括零值系数,并且符号值1指 示该子集包括至少一个非零值系数。对于某一单独的系数值,符号值0指示该系数值是 零,并且符号值1指示该系数值是非零,其中一个或多个其他代码指示实际值。Huffman 代码联合表示给定级别处的符号的值,例如表示前一章节描述的四个符号组合。作为另一示例,某一符号的符号值的字母表具有三个元素AO、Al和A2。该示 例性字母表中的第一元素是元素AO。这一元素指示,对于一个或多个系数值的给定集合 (或子集)(set_cv),set_cv中的每一系数值(cv)等于0。换言之,set_CV中不存在非零 频率系数值。该示例性字母表中的第二元素是元素Al。这一元素指示对于set_CV中的至 少一个cv,(^=1或_1。set_cv中的其他值cv可以等于0,只要一个cv等于1或_1, 并且没有一个具有大于1的绝对值。该示例性字母表中的第三字母表元素是A2。这一 元素指示对于set_cv中的至少一个cv,cv大于1或小于-1。set_cv中的其他值cv可以 等于0、1或-1,只要一个cv大于1或小于-1。在替换实施例中,A2可以表示Set_cv 中的至少一个cv大于或小于一个不同的数字,例如2、4、8或某一其他数字。三个不同元素AO、Al和A2可帮助该工具确定在编码期间是否进一步拆分该集 合或子集,并且这些元素可帮助该工具在解码期间重构集合或子集的值。表1指示包含 多个频率系数值的集合X的示例性Huffinan代码,这些频率系数值中的至少一个等于1 或-1而没有一个具有大于1的绝对值。表2指示包含多个频率系数值的集合X的示例性Huffman代码,这些频率系数值中的至少一个具有大于1或小于_1的值。Huffman代码 中的每一个指示与集合X的子集x_l和x_2有关的信息,其中子集可包括单个系数。
集合(或子集 的Huffman代码集合X的子集 X 1的意义集合Z的子集 X 2的意义
权利要求
1.一个或多个存储指令的存储介质,所述指令在计算机上被执行时使得所述计算机 执行一种对视频进行编码的方法,所述方法包括选择多个扫描次序之一(605); 在位流中输出指示所选扫描次序的信息; 应用所选扫描次序来对一个块的多个频率系数进行排序(610); 使用经重新排序的频率系数的多级嵌套集合表示来对该经重新排序的多个频率系数 进行熵编码(630),包括将所述经重新排序的多个频率系数中的一个或多个的第一集合表示为具有所述多级 嵌套集合表示的第一级别处的第一符号的概括表示;以及对所述多级嵌套集合表示的第一级别处的所述第一符号和第二符号进行熵编码;以及在所述位流中输出经熵编码的频率系数。
2.如权利要求1所述的一个或多个存储介质,其特征在于,所述第一符号指示非零系 数值在经重新排序的频率系数的第一集合中的存在或缺席。
3.如权利要求1所述的一个或多个存储介质,其特征在于,所述第二符号表示在所述 第一集合外的经重新排序的多个频率系数之一。
4.如权利要求3所述的一个或多个存储介质,其特征在于,对所述第一符号和所述 第二符号进行熵编码包括使用Huffman编码对所述第一符号和所述第二符号进行联合编 码。
5.如权利要求1所述的一个或多个存储介质,其特征在于,对所述第一符号和所述第 二符号进行熵编码包括对所述第一符号和所述第二符号连同一个或多个其他符号进行行 程长度编码。
6.如权利要求1所述的一个或多个存储介质,其特征在于,所述熵编码还包括 将所述经重新排序的多个频率系数中的一个或多个的第二集合表示为具有所述多级嵌套集合表示的第一级别处的第二符号的概括表示,其中对所述第一符号和所述第二符 号进行熵编码包括使用Huffman编码对所述第一符号和所述第二符号进行联合编码。
7.如权利要求1所述的一个或多个存储介质,其特征在于,所述第一集合包括至少一 个非零系数值,并且其中所述熵编码还包括在所述多级嵌套集合表示的低于所述第一级 别的第二级别处对所述第一集合的相应系数的系数值进行熵编码。
8.如权利要求1所述的一个或多个存储介质,其特征在于,所述第一集合包括至少一 个非零系数值,并且其中所述熵编码还包括将所述第一集合的频率系数中的一个或多个的第一子集表示为具有所述多级嵌套集 合表示的低于所述第一级别的第二级别处的第一子符号的概括表示。
9.如权利要求8所述的一个或多个存储介质,其特征在于,还包括在所述多级嵌套集 合表示的低于所述第二级别的第三级别处对所述第一子集的相应系数的系数值进行熵编 码。
10.如权利要求1所述的一个或多个存储介质,其特征在于,所述选择包括 在所述多个扫描次序之间评估多个预定扫描次序;以及如果所述多个预定扫描次序没有一个产生用于熵编码的合适的经重新排序的频率系数,则创建所述多个扫描次序的新扫描次序。
11.一种重构视频的方法,所述方法包括在位流中接收多个频率系数的经熵编码的视频信息; 对所述经熵编码的视频信息进行熵解码(1505),包括对所述多个频率系数的多级嵌套集合表示的第一级别处的第一符号和第二符号进行 熵解码,其中所述第一符号表示所述多个频率系数中的一个或多个的第一集合;以及对所述多个频率系数的多级嵌套集合表示的低于第一级别的第二级别处的第一子符 号进行熵解码,其中所述第一子符号表示所述第一集合的频率系数中的一个或多个的第一子集;确定所述多个频率系数的扫描次序(1510);根据所确定的扫描次序对所述多个频率系数进行重新排序(1515);以及 使用经重新排序的频率系数来重构所述视频。
12.如权利要求11所述的方法,其特征在于,所述第一符号指示非零系数值在所述第 一集合中的存在或缺席。
13.如权利要求12所述的方法,其特征在于,所述多个频率系数的多级嵌套集合表示 的第一级别处的第二符号指示非零系数值在所述第一集合外部的所述多个频率系数中的 一个或多个的第二集合中的在场或缺席。
14.如权利要求11所述的方法,其特征在于,所述第一子符号指示非零系数值在所述 第一子集中的存在或缺席。
15.如权利要求11所述的方法,其特征在于,所述确定所述扫描次序包括 接收所述位流中的扫描次序信息,所述扫描次序信息指示所确定的项扫描次序。
16.如权利要求15所述的方法,其特征在于,所述扫描次序是多个预定扫描次序之一。
17.—种编码器系统,包括用于从多个扫描次序中选择扫描次序的块扫描次序选择器(425); 用于使用所选扫描次序对一个块中的多个频率系数进行重新排序的块扫描仪 (425);用于通过以下动作对多级嵌套集合表示中的经重新排序的频率系数进行编码的一个 或多个熵编码模块(430)对所述多级嵌套集合表示的给定级别处的多个符号进行编码,所述给定级别处的所 述多个符号中的每一个表示所述经重新排序的频率系数中的一个或多个的集合;以及对于所述给定级别处的多个符号中的每一个,确定是否要将所述符号的集合拆分成 多个子集,并且如果是,则对所述多级嵌套集合表示的更低级别处的多个子符号进行编 码,所述更低级别处的多个子符号中的每一个表示所述多个子集之一。
18.如权利要求17所述的编码器系统,其特征在于,所述块扫描次序选择器被用来基 于将所述多个扫描次序中的每一个闭环应用于所述块的结果来选择所述扫描次序。
19.如权利要求17所述的编码器系统,其特征在于,所述块扫描次序选择器被用来基 于将所述多个扫描次序中的一个或多个应用于所述块的开环评估的结果来选择所述扫描 次序。
20.如权利要求17所述的编码器系统,其特征在于,所述多个扫描次序是预定的。
全文摘要
呈现了用于对一块频率系数进行编码和解码的技术和工具。编码器从多个可用扫描次序中选择扫描次序并随后将所选扫描次序应用于变换系数的二维矩阵,从而将频率系数的非零值一起编组在一维串中。编码器根据多级嵌套集合表示对该系数值的一维串进行熵编码。在解码时,解码器对来自多级嵌套集合表示的系数值的一维串进行熵解码。解码器从多个可用扫描次序中选择扫描次序,并随后使用所选扫描次序将这些系数重新排序回二维矩阵。
文档编号H04N7/30GK102017634SQ200980116564
公开日2011年4月13日 申请日期2009年4月1日 优先权日2008年5月2日
发明者C·图, C-L·林, S·孙, S·瑞古纳萨恩 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1