矢量量化器

申请号 CN201280072059.0 申请日 2012-12-12 公开(公告)号 CN104221287B 公开(公告)日 2017-05-31
申请人 瑞典爱立信有限公司; 发明人 沃洛佳·格兰恰诺夫; 托马斯·詹森·托夫特戈德;
摘要 公开了例如变换音频编解码中用于高效矢量量化的矢量量化器和其中的方法。所述方法包括:将输入目标矢量s与多个质心进行比较,每个质心表示码本中码矢量的相应类别。此外,基于比较结果确定码本中与输入目标矢量相关的搜索的起点。根据反映每个码矢量与类别的质心之间的距离的失真测量对码本中的码矢量排序。所述矢量量化器和方法使得能够首先搜索包括关于输入矢量s的最可能候选码矢量的码矢量类别。
权利要求

1.一种应用于包括在变换编码器中的矢量量化器的方法,所述方法包括:
-将输入目标矢量s与多个质心进行比较(902),其中输入目标矢量s表示正在被处理的数据信号的分段的频谱峰值或频谱峰值区域,每个质心表示码本中码矢量的相应类别,-基于比较结果,确定(906)所述码本中与所述输入目标矢量相关的搜索的起点,
-在所述码本中执行(910)搜索,所述搜索开始于所确定的起点;并识别表示所述输入目标矢量s的码矢量,
其中,根据反映每个码矢量与所述多个质心中的两个质心之间的距离的失真测量,对所述码本中的码矢量进行排序;以及每个或时间段的输入目标矢量的数目是可变的,并且搜索空间基于输入目标矢量的数目动态调整。
2.根据权利要求1所述的方法,其中,确定步骤(906)通过基于输入目标矢量的数目增大或减小搜索空间的大小来动态调整搜索空间。
3.根据权利要求1或2所述的方法,其中,对码本中的码矢量进行排序,使得最接近第一质心C0且最远离第二质心C1的码字在码本的一侧,而最接近C1且最远离C0的码字在码本的另一侧。
4.根据权利要求1或2所述的方法,其中比较步骤(902)将输入目标矢量s与四个质心C0、C1、C0,flip和C1,flip进行比较,其中针对类别C0,flip的码矢量是针对类别C0的码矢量的翻转版本,以及针对类别C1,flip的码矢量是针对类别C1的码矢量的翻转版本。
5.根据权利要求4所述的方法,其中,通过下式给出类别Cj,flip中的码矢量ck,flip的各项:
ck,flip=[ck(M) ck(M-1) ... ck(1)],
其中,ck(m)是对应类别Cj的矢量项,M是码矢量的长度,以及k是码矢量的索引。
6.一种包括在变换编码器中的矢量量化器(1000),所述矢量量化器(1000)包括:
-比较单元(1004),适于将输入目标矢量s与多个质心进行比较,其中输入目标矢量s表示正在被处理的数据信号的分段的频谱峰值或频谱峰值区域,每个质心表示码本(1014)中码矢量的相应类别;
-确定单元(1008),适于基于比较结果确定在所述码本中进行搜索的起点;以及
-搜索单元(1010),适于在所述码本中执行搜索,所述搜索开始于所确定的起点;并识别表示所述输入目标矢量s的码矢量;
其中,根据反映每个码矢量与所述多个质心中的两个质心之间的距离的失真测量,对所述码本(1014)中的码矢量进行排序;以及每个块或时间段的输入目标矢量的数目是可变的,并且搜索空间基于输入目标矢量的数目动态调整。
7.根据权利要求6所述的矢量量化器,其中所述确定单元(1008)通过基于输入目标矢量的数目增大或减小搜索空间的大小来动态调整搜索空间。
8.根据权利要求6或7所述的矢量量化器,其中,对码本中的码矢量进行排序,使得最接近第一质心C0且最远离第二质心C1的码字在码本的一侧,而最接近C1且最远离C0的码字在码本的另一侧。
9.根据权利要求6或7所述的矢量量化器,其中所述比较单元(1004)适于将输入目标矢量s与四个质心C0、C1、C0,flip和C1,flip进行比较,其中针对类别C0,flip的码矢量是针对类别C0的码矢量的翻转版本,以及针对类别C1,flip的码矢量是针对类别C1的码矢量的翻转版本。
10.根据权利要求9所述的矢量量化器,其中,通过下式给出类别Cj,flip中的码矢量ck,flip的各项:
ck,flip=[ck(M) ck(M-1) ...ck(1)],
其中,ck(m)是对应类别Cj的矢量项,M是码矢量的长度,以及k是码矢量的索引。
11.一种变换音频编解码器(1100),包括根据权利要求6-10中任一项所述的矢量量化器。
12.一种移动终端,包括根据权利要求6-10中任一项所述的矢量量化器。
13.一种存储包括计算机可读代码的计算机程序(1210)的计算机可读介质,当在处理单元中运行时,所述计算机可读代码使矢量量化器执行包括以下步骤的操作:
-将输入目标矢量s与多个质心进行比较,其中输入目标矢量s表示正在被处理的数据信号的分段的频谱峰值或频谱峰值区域,每个质心表示码本中码矢量的相应类别,-基于比较结果,确定所述码本中与所述输入目标矢量相关的搜索的起点,
-在所述码本中执行搜索,所述搜索开始于所确定的起点;并识别表示所述输入目标矢量s的码矢量,
其中,根据反映每个码矢量与所述多个质心中的两个质心之间的距离的失真测量,对所述码本中的码矢量进行排序;以及每个块或时间段的输入目标矢量的数目是可变的,并且搜索空间基于输入目标矢量的数目动态调整。
14.根据权利要求13所述的计算机可读介质,其中,通过基于输入目标矢量的数目增大或减小搜索空间的大小来动态调整搜索空间。
15.根据权利要求13或14所述的计算机可读介质,其中,对码本中的码矢量进行排序,使得最接近第一质心C0且最远离第二质心C1的码字在码本的一侧,而最接近C1且最远离C0的码字在码本的另一侧。
16.根据权利要求13或14所述的计算机可读介质,其中将输入目标矢量s与四个质心C0、C1、C0,flip和C1,flip进行比较,其中针对类别C0,flip的码矢量是针对类别C0的码矢量的翻转版本,以及针对类别C1,flip的码矢量是针对类别C1的码矢量的翻转版本。
17.根据权利要求16所述的计算机可读介质,其中,通过下式给出类别Cj,flip中的码矢量ck,flip的各项:
ck,flip=[ck(M) ck(M-1) ... ck(1)],
其中,ck(m)是对应类别Cj的矢量项,M是码矢量的长度,以及k是码矢量的索引。

说明书全文

矢量量化器

技术领域

[0001] 所建议的技术大致涉及矢量量化(VQ),且尤其涉及矢量量化的精确度和计算复杂度。

背景技术

[0002] 存在两个主要类别的量化算法,即:标量量化器(SQ),用于逐项处理输入矢量;以及矢量量化器(VQ),用于将输入矢量作为一个单元来进行量化(对全部矢量维度进行联合量化)。以给定的比特率,VQ要优于SQ,但是以计算复杂度和存储器存储增加为代价。
[0003] 设要量化的目标矢量是M个维度:s=[s(1) s(2)…s(M)]。VQ算法在预存储的M维码矢量ck=[ck(1) ck(2)…ck(M)]的大小为K的码本(CB) 中执行搜索。这种搜索返回opt基于失真测量d(s,ck)提供最佳匹配k 的码本索引。下面的等式(1-2)描述了该操作,假设搜索准则基于均方误差:
[0004]
[0005]
[0006] 向解码器发送最佳索引kopt,以及从CB(相同的CB可用于编码器和解码器二者)提取对应的码矢量并将其用于重构目标矢量。CB通常是离线训练的,并捕捉到数据的统计特性。在很多情况下,使用权重来修改简单的均方误差(例如,等式(2)),以使得:
[0007]
[0008] 其中,权重w(m)取决于应用。在本文中为了陈述简洁,在下面的描述中将仅使用等式(2)中定义的均方误差。然而,应该注意到的是,本文中讨论的原理在使用更复杂的准则(例如,等式(3)中的准则)时也是有效的。
[0009] 从以上描述可以总结出,所重构的目标信号的精确度或质量取决于码本的大小K;其中,与较小的CB相比,较大的CB导致更高的精确度,以及因此更好的质量。同时,根据等式(1),可以总结出主要的计算复杂度也与CB的大小有关,假设矢量维度被应用所固定。
[0010] 通常在有限计算复杂度的约束之下来建造音频传输系统。亦即,最差情况的复杂度不应超过某个预定等级LMAX。例如,通常通过加权的每秒百万次操作(WMOPS)来衡量音频编解码的计算复杂度,然而当考虑VQ模时,复杂度直接与搜索空间的大小(CB的大小)相关。VQ通常是编解码器中最复杂的模块,且此外,CB搜索(与CB矢量的比较次数)是VQ如此复杂的原因。
[0011] 如果VQ系统要每次量化一个目标矢量S,必须要优化搜索空间K,以使得复杂度不超过LMAX。给定矢量S的特性和重构矢量质量要求,某些离线优化技术(例如,拆分及多级VQ)可以提供复杂度(以及存储)的一定减少。
[0012] 如果VQ系统要一次量化多个目标(输入)矢量 (矢量的数目N是变化的),上述离线优化技术不能够维持复杂度和质量约束。在这种情况下,离线优化必须在矛盾的要求(A)限制要同时量化大量的输入矢量时的复杂度(=限制搜索)以及(B)维持要量化少量矢量时的高精确度(=在大码本中搜索)之间找到平衡,这不是简单的任务。发明内容
[0013] 本文中描述的技术例如可应用于对输入流执行有损压缩的音频和视频压缩/传输系统,并可通过众多的不同方案来进行描述。本文中描述的技术涉及码本(将其划分为各个类别并排序)以及对要被量化到所述类别之一中的输入目标矢量s的分类。本文中描述的技术使得在码本中的类别中,首先搜索码本中包括与输入矢量s有关的最有可能的候选码矢量集合的码矢量类别。因此,在搜索中可以及早找到输入矢量s的最佳匹配码矢量,并且可降低计算复杂度。
[0014] 根据第一方案,提供了矢量量化器中的方法。所述方法包括将输入目标矢量s与多个质心(centroid)(即,参考矢量)进行比较,每个质心表示码本中码矢量的相应类别。所述方法还包括:确定码本中与码本中的输入目标矢量相关的搜索的起点,其中,该起点是基于比较结果确定的。根据反映每个码矢量与质心之间的距离的失真测量对码本中的码矢量排序。该方法使得在码本中的类别中,首先搜索码本中包括与输入矢量s有关的最有可能的候选码矢量集合的码矢量类别。
[0015] 根据第二方案,提供了矢量量化器,包括适于执行根据第一方案的方法的功能单元。矢量量化器包括比较单元,适于将输入目标矢量s与多个质心进行比较,每个质心表示码本中码矢量的相应类别。矢量量化器还包括:确定单元,适于基于比较结果确定针对所述码本中的搜索的起点。根据反映每个码矢量与质心之间的距离的失真测量对码本中的码矢量排序。矢量量化器使得在码本中的类别中,首先搜索包括与输入矢量s有关的最有可能的候选码矢量的码矢量类别。
[0016] 根据第三方案提供编解码器,该编解码器包括根据第二方案的矢量量化器。
[0017] 根据第四方案提供移动终端,该移动终端包括根据上述第二方案的矢量量化器。
[0018] 根据第五方案,提供了将码本用于矢量量化的方法,所述码本被布置为使得所述码本的码矢量被划分为多个类别,由质心表示各个类别,以及其中,还根据反映所述码矢量与所述多个类别的质心的距离的失真测量对所述码矢量排序。可根据下降或上升的失真值来对码矢量排序。
[0019] 根据第六方案,提供了针对矢量量化的码本使用,所述码本被布置为使得所述码本的码矢量被划分为多个类别,由质心表示各个类别,以及其中,还根据反映所述码矢量与所述多个类别的质心的距离的失真测量对所述码矢量排序。可根据下降或上升的失真值来对码矢量排序。
[0020] 根据第七方案,提供了计算机程序,包括计算机可读代码,当在处理单元中运行时,使矢量量化器执行根据第一方案的方法。
[0021] 根据第八方案,提供计算机程序产品,包括计算机可读介质和根据第六方案的计算机程序,该计算机程序存储在计算机可读介质上。
[0022] 可基于输入目标矢量的数目和最大复杂度约束来适配码本中执行搜索的搜索区域的大小。每编码单位的输入目标矢量数目可以是可变的。此外,可以动态设置最大复杂度约束。此外,可以在所确定的搜索空间中在码本中执行搜索,该搜索开始于所确定的起点,其中,搜索传递与输入目标矢量s的最佳匹配。“最佳匹配”在此处意指最接近的匹配、关于输入目标矢量和码本中的候选矢量之间的距离的最短距离,即,最佳匹配是根据距离测量与输入目标矢量具有最短距离的码矢量。
[0023] 第五方案可以是包括根据第二方案的矢量量化器的编解码器。
[0024] 第六方案可以是包括根据第二方案的矢量量化器的移动终端。附图说明
[0025] 现在将通过示例性实施例的方式并参考附图来更详细地描述所建议的技术,在附图中:
[0026] 图1a和1b示出了根据本文中描述的解决方案的有序CB的结构。所述从点0或点1向CB的另一端开始。
[0027] 图2示出利用了对称的示例性CB结构。在ROM存储器中仅存储码矢量C0和C1。
[0028] 图3示出了通过将输入矢量s与多个质心{C0 C1 C1,flip C0,flip}中的每个质心进行比较来确定输入矢量s的最优类别的示例性功能单元,每个质心与码本的类别相关联。
[0029] 图4示出了基于在当前中检测到的频谱峰值的数目(且很可能基于编解码的比特速率)来确定搜索区域的大小的功能单元。
[0030] 图5是示出搜索区域随着每帧峰值的数目降低而增加的表。在该示例中,在17个峰值(=17个输入矢量)的情况下,仅在7比特CB(在本示例中定义为最小搜索空间)中执行搜索,然而在8个峰值或更少峰值的情况下,在8比特CB(最大搜索空间)中执行搜索,因为在最大复杂度约束下,这是可“负担”的。
[0031] 图6a-d示出了不同搜索区域的示例。
[0032] 图7示出了可从外部实体向系统信号通知所允许的复杂度LMAX。参数LMAX可例如基于CPU负荷或电池状态。
[0033] 图8是示出在创建要在所建议的技术中使用的码本CB的过程中的动作的流程图
[0034] 图9a-c是示出根据本文中建议的技术的示例,矢量量化VQ的过程中的动作的流程图。
[0035] 图10是示出根据本文中建议的技术的示例的矢量量化器的框图
[0036] 图11是示出根据本文中建议的技术的示例,包括矢量量化器的编解码器的框图。
[0037] 图12是示出根据本文中建议的技术的示例,用于矢量量化的装置的框图。

具体实施方式

[0038] 简而言之,本文中描述的解决方案涉及动态适配VQ的搜索空间,以使得对于(针对每个块或时间间隔的)任何数目的目标(输入)矢量,在给定复杂度约束内实现高精确度(以及因此高质量)的量化。亦即,不违反计算复杂度(例如,Lmax)的要求。这是通过在特殊分类并排序的CB中执行搜索来实现的。搜索空间中针对每个目标矢量的起点基于分类过程,且搜索空间的大小基于目标矢量的数目增大或减小。本文中描述的VQ算法可被认为是数据压缩的“工具”,与是什么数据无关,即,数据可以例如是视频和/或音频。在本描述中,VQ是在音频编解码的上下文下描述的,然而本文中描述的概念不限于音频编解码。例如,其还可以在视频编解码中实现。
[0039] 本文中描述的算法基于特殊设计的CB。下面将更详细地描述这种码本的一些变型。首先将描述基本情况,且将在更下面讨论更高级的方案。可在离线模式下根据本文中描述的技术方案来布置CB的码矢量。
[0040] 为了创建该特殊设计的有利的CB的基本版本,将CB的码矢量拆分为两类,在此表示为C0和C1(该符号将被用于类别的名称,以及用于对应的质心,例如参考图1)。为了将数据划分为两类,可以使用所谓的K平均(K-means)算法(统称为Lloyd算法)。这是众所周知的技术,其将整个数据集合作为输入,以及所希望的类别数目,并输出所希望的类别数目的质心。例如,如果已经将所希望的类别数目指定为2,算法输出2个质心矢量。要注意到的是,在使用K平均算法时,这些质心是与来自数据集合的矢量具有相同维度的矢量,然而其不属于数据集合。亦即,质心矢量在CB之外,且不需要与某些现有的码矢量一致。一般而言,“质心”在本文中意指表示矢量类别的参考矢量。
[0041] 因此,根据失真测量来对CB中的所有码矢量排序,例如,如等式(4)中所定义:
[0042]
[0043] 以上失真测量导致(或假设)码矢量的接近C0的较大负值,以及码矢量的接近C1的较大正值。与两个类别的质心(C0和C1)等距的码矢量产生接近零的失真测量d。在CB中,如图1a和b中所示出的,例如按照增加的失真测量来对码矢量排序。
[0044] 将每个输入目标矢量与两个质心(两个类别各自的质心)相比较,并根据结果将其指派给(即,决定或确定属于)类别C0或类别C1。基于该分类,将搜索的起点选择为最高点(图1a)或最左侧(图1b)点0(当目标矢量属于类别C0时)或者最低点(图1a)或最右侧(图1b)点1(当目标矢量属于类别C1时)。现在应该使搜索空间的大小取决于每块或时间段/间隔的输入目标矢量N的数目。如果将搜索空间K重新定义为不是整个CB的大小,而是变量,可以在等式(5)中定义本文中描述的适配背后的概念
[0045] N×K≈const   (5)
[0046] 换言之,#Quantizers×#Operations_per_Quantizer≈const,其中,可将“Quantizer”视为是将输入矢量映射到码矢量之一的算法。
[0047] 在本文中,作为示例,在变换编解码的上下文中描述VQ,该变换编解码对频谱峰值(或严格地,频谱峰值周围的区域)进行编码。在这种编解码的上下文中,输入目标矢量可以反映出正在被处理的音频信号的分段的频谱峰值(区域)。一时间段(例如,30ms)的音频信号的信号频谱中的频谱峰值的数目取决于该时间段中的音频信号的频谱特性。由于音频信号的频谱特性可随着时间改变且例如对于不同类型的音频是不同的,在不同的时间段之间且在不同的音频信号之间,频谱峰值的数目可以改变。因此,当使用对频谱峰值区域编码的变换编码器时,针对VQ的每块或每时间段的输入矢量的数目将会改变。在本文中的示例中,与音频信号的时间段中的频谱峰值的数目相对应的输入矢量的最大数目是17。然而,该数目仅是示例,且一般不应被解释为限制解决方案。
[0048] 事实上,上述方案将VQ所需的操作的数目保持在较窄的范围内(或几乎恒定);亦即,当VQ的数目增加时,即,输入目标矢量的数目增加时,每VQ的操作数目减少(搜索空间的大小减小/仅搜索CB的一部分),以使得不违背复杂度要求(即,约束)。随着N的降低,搜索空间K可能增大,最多高至整个CB的大小,这导致较高的精确度并因此较高的重构矢量质量。可以将矢量量化器的精确度测量为原始信号和对应的重构数据之间的均方误差。
[0049] 通过这种方式,不需要针对最差情况场景(即,最大数目的输入目标矢量)来设计VQ的码本。相反,例如可针对最佳情况场景来进行设计,从而与在最大复杂度约束LMAX内可能可以针对最大数目的输入目标矢量进行搜索相比,包括了更多的码矢量。将会满足最大复杂度要求,按照该最大复杂度要求,CB中的搜索范围(即,搜索空间的大小)取决于输入目标矢量的数目。然而,如果这将会被“盲”进行,例如,没有本文中建议的CB,则量化质量将会极大地受损,因为不会知道“最匹配”的矢量位于CB中的何处或者该最匹配的矢量是否位于码本中在减小搜索空间时将会搜索的部分中。通过本文中描述的码本的特殊设计来解决该问题。应该注意到,对于其中每编码单位的输入矢量数目恒定的应用,本文中描述的CB设计也是有益的。
[0050] 示例实施例1:频谱峰值区域上受约束的VQ
[0051] 目标矢量s的集合表示变换域音频编码中的频谱峰值区域,例如,与MDCT峰值的邻居中的变换系数。因此,在该上下文中,目标矢量的数目随时间改变,因为频谱峰值的数目逐时间块而改变。
[0052] 在该类型的应用(峰值区域编码)中,目标矢量S展现出一定的对称性,可将其用于进一步优化CB。例如,频谱峰值两侧的变换系数具有类似的统计。如果假设目标矢量S以峰值位置为中心,上述对称性允许在来自图1a和1b的有序CB中添加其他结构。图2中示出了这种新的、进一步改进的CB的结构。图2示出了CB,其中,左侧部分的码矢量被存储在存储器(例如,只读存储器)中。然而,没有针对CB的右侧(即,针对类别C1,flip和C0,flip)预先存储的码矢量。这些类别的码矢量是CB右侧的码矢量的翻转版本。因此,当在类别C0,flip和C1,flip中执行搜索时,在左侧的码矢量(存储在存储器中)上执行搜索,但码矢量的项围绕中心进行了翻转,以使得通过等式(6)给出码矢量ck,flip
[0053] ck,flip=[ck(M) ck(M-1)…ck(1)],   (6)
[0054] 其中,ck(m)是所存储的CB(即,C0或C1)中的对应类别Cj的矢量项。亦即,如果C0中的某个码矢量的项是{C01C02C03C04},则C0,flip中的对应码矢量的项是{C04 C03 C02 C01}。
[0055] 在使用如图2中所示CB的CB时,将输入目标矢量与4个质心进行比较,并指派给类别以确定搜索的起点,即,通过将输入矢量S与质心{C0 C1 C1,flip C0,flip}中的每一个进行比较来确定输入目标矢量的最优类别。图3中对此进行了示出,其中,目标矢量s被输入到类别指派单元302,类别指派单元302传送类别指示符Cj来作为输出。质心C1,flip和C0,flip未被存储在表中,而是通过翻转质心C0和C1的项来“创建”。不需要逐字(literally)来翻转项,相反,在读取C0,flip和C1,flip时,已修改的搜索操作可按相反的顺序读取C0和C1,即质心和码本矢量。通过这种方式,与在CB中物理存储的码矢量相比,可扩展CB以包括两倍数目的码矢量,这意味着节省了存储器资源。由于如上所述利用了峰值区域的对称性,这是可能的。更明确地,解决方案基于对可利用对称性的观察,由此翻转的有效码矢量也是有效的码矢量。
[0056] 使搜索区域与频谱峰值的数目相适配,频谱峰值的数目对应于输入目标矢量的数目。图4中将这作为示例,图4示出了将峰值/矢量的数目的指示符作为输入并产生搜索区域的指示符作为输出的功能单元402。图4还示出了当确定搜索区域(搜索空间)时,可以例如考虑应用了VQ的编解码的比特速率。例如,针对不同的比特速率可以存在不同的质量要求,如比特速率越高,所期望的质量越高。此外,例如由于以不同的比特速率激活编解码器中的不同模块(该不同模块不是同等复杂的),所允许的最大复杂度可以随着比特速率而改变,即,整个编码过程的最大复杂度约束的针对VQ所允许的剩余复杂度可能是不相同的。亦即,比特速率信息反映出质量和复杂度要求的改变,其在矢量量化中可被考虑到。
[0057] 图5中示出的表说明了搜索区域与峰值的数目如何相适配。在图5中,将搜索区域指示为搜索中针对每输入矢量的系数(码矢量)的数目。图5中的表中的数目是在假设来自图2的CB包括4个7比特段(4个各自128个码矢量的段,其中,两个是“正常的”或“物理的”,以及两个是“翻转的”或“虚拟的”)的情况下导出的。
[0058] 图5中的表背后的逻辑是:如果少了一个要编码的峰值(例如,16个而不是17个),可以在剩余的峰值之间分布“所节省的”128个比较。在某个点处,搜索长度饱和,因为其到达了CB的物理大小。在图5中示出的示例中,当峰值的数目是8或更少时,达到该点。亦即,在图5中示出的示例中,当峰值的数目是8或更少时,可以针对所有的输入目标矢量(即,峰值)来进行整个搜索,而不到达最大允许复杂度。
[0059] 图6a-d中示出了搜索过程的示例。实际上,这是与较早结合图1a-b描述的搜索类型相同的搜索,然而使用了到“正常”和“翻转”的CB分段/类别的附加分类。
[0060] 在图6a中示出的示例中,输入矢量S属于类别C1(以向下的箭头指示的位置)。从而,搜索空间被限制为仅类别C1与类别C0和C1的联合空间之间的大小。在图6a中,使用指示不同大小的搜索空间的3个虚线箭头对此进行了示出。图6b示出了输入矢量属于类别C0的情况(以向下的箭头指示的位置),在该情况下,搜索具有不同的起点。
[0061] 类似地,如图6c-d中示出的,如果输入矢量属于类别C1,flip和C0,flip之一,可以在C1,flip和/或C0,flip类别中执行搜索。在C1和C1,flip的联合空间中不执行搜索。其原因是常规类别和翻转类别的联合空间不对应于真实的数据集合(其统计不对应于真实的数据统计)。因此,在这种空间中极不可能找到输入矢量的好的匹配。
[0062] 示例实施例2:具有对最大允许复杂度的外部控制的通信系统
[0063] 其复杂度被动态调整到目标矢量s的数目的VQ的概念可被扩展到复杂度限制未被预先确定时的情况,但可例如基于某种准则而改变,并可信号通知给VQ和/或应用了VQ的实体。在图7中的示意性框图中对此进行了示出,图7示出了将峰值/矢量的指示符或数目作为输入,以及还将复杂度约束LMAX作为输入的功能单元702。参考图6a-d中的虚线箭头,功能单元702传送CB的搜索空间/区域的指示符。
[0064] 本文中呈现的具有可调整复杂度的VQ算法给出了在量化精确度(即,质量)与将计算复杂度维持在预定义的阈值之下之间的最优平衡。
[0065] 用于实现CB结构的示例过程
[0066] 下面将参考图8描述用于设计或组织在VQ中使用的CB的示例性过程。该过程用于创建在VQ中使用的CB,该VQ在变换音频编码器(例如,如MDCT编码器)中提供量化。
[0067] 下面描述的过程涉及CB创建过程的各部分,其偏离传统的VQ CB创建或组织,和/或是对传统的VQ CB创建或组织的补充。
[0068] 如前所述,在动作802中例如通过使用所谓的K平均算法来将CB划分为类别。因此,基于失真测量来在CB中对CB的码矢量排序,例如,如等式(4)中所描述的排序。针对每个码矢量的失真测量取决于码矢量和表示CB的每个类别的质心之间的关系,如前所述。
[0069] CB的该组织使得可以通过高度预留VQ质量(例如,重构目标矢量的质量)来适配搜索空间,并因此可适配VQ中的搜索复杂度。
[0070] 示例VQ过程
[0071] 下面将参考图9a描述矢量量化器(VQ)中的示例过程。该过程适于在变换域音频编码器(例如,如编码如频谱峰值区域的MDCT编码器)中使用。音频信号可以包括例如话音和/或音乐。
[0072] VQ接收多个(N个)输入目标矢量,如前所述。下面,出于简洁的原因,将描述与输入目标矢量之一相关联的动作。
[0073] 将输入目标矢量s与各自表示CB类别(参考之前描述的类别C0和C1等)的多个码矢量相比较,优选地,与各个类别的质心相比较。在图9a-c中将该比较示出为动作902。如图9c中示出的,备选地,可以将动作902认为与动作904相结合。取决于比较结果,在动作904中向输入目标矢量s指派CB的类别或部分之一。根据某种距离测量(误差测量),向输入目标矢量s指派(或决定其属于)与其具有最短距离的类别,即,与其最相似的类别。在动作906中基于类别指派或距离测量来确定CB中搜索的起点。
[0074] 在动作910中,可在码本中执行搜索。在所选择的起点中发起并在搜索空间或其部分上执行搜索,该搜索空间可以具有所确定的大小,包括一个或多个类别。由于该有利地设计和组织的CB,即使在搜索空间被限制为例如CB的一半的时候,将会在搜索空间内找到整个CB的所有候选码矢量中针对输入目标矢量s的最佳匹配的可能性非常高。在搜索空间将会包括整个码本的情况下,当在所确定的起点处开始搜索时,将会在该搜索中及早找到最佳匹配码矢量。
[0075] 当在所确定的搜索空间内找到最佳匹配时,在动作912中,提供最佳匹配码矢量的索引作为来自VQ的结果,以例如在音频解码器中使用。
[0076] 此外,在图9c中示出的动作908中可以确定搜索空间的大小。可以将搜索空间描述为CB中应在针对输入目标矢量s的最佳匹配的搜索中评估的码矢量的数目。搜索空间的大小是基于输入目标矢量的数目和对技术复杂度的约束LMAX来确定的。因此,可根据要量化的信号的特性和/或编解码的属性,例如一次性针对每个编码块或针对某个其他时间间隔确定搜索空间的大小。如果输入目标矢量的数目和约束LMAX在时间上是恒定或半恒定的,搜索空间的大小在对应时间上也可以保持恒定。
[0077] 示例性VQ布置
[0078] 下面将参考图10描述适于在变换编码器/编解码中使用的示例性VQ布置。变换编解码例如可以是MDCT编解码。VQ适于执行上述过程的动作。
[0079] VQ 1001被示出为经由通信单元1002与其他实体(例如,音频编解码器)通信。VQ还可以包括其他功能单元1016,例如,如提供常规功能的功能单元,且还可以包括一个或多个存储单元1014。
[0080] 可通过以下一项或多项来实现VQ 1001:处理器或微处理器以及适当软件(因此具有适合的存储器)、可编程逻辑器件(PLD)或其他电子组件和/或电路
[0081] 通信单元1002被假设包括用于获得例如从编码实体提供的适当参数(例如,输入目标矢量和LMAX)的功能单元。
[0082] VQ可包括比较单元1004,比较单元1004适于将输入目标矢量s与表示CB的每个类别的矢量(例如,每个类别的质心矢量)进行比较。此外,VQ还包括指派单元1006,该指派单元1006适于基于该比较向输入目标矢量s指派类别(或者向类别指派矢量s),即,决定矢量属于哪个类别。此外,VQ还包括确定单元1008,确定单元1008适于基于向矢量s指派的类别为CB中的搜索确定适当起点。确定单元还可适于例如基于接收到的输入目标矢量的数目和计算复杂度约束来确定CB中的搜索空间的大小。
[0083] 此外,VQ可包括搜索单元1010,搜索单元1010适于在CB中执行搜索,该搜索开始于所确定的起点并搜索所确定的搜索空间。搜索应导致指向与输入目标矢量s最匹配的码矢量的一个或多个CB索引。VQ还可以包括提供单元1012,提供单元1012适于向另一实体提供所述索引,以例如用于变换编解码(或由变换编解码使用)。
[0084] 示例性布置
[0085] 图12示意性地示出了适于例如在变换音频解码器中使用的布置1200的实施例,这也可以是公开图5中示出的VQ的实施例的备选方式。在此,布置1200包括例如具有DSP(数字信号处理器)的处理单元1206。处理单元1206可以是执行本文中描述的过程的不同步骤的单个单元或多个单元。布置1200还可以包括用于接收信号(例如,输入目标矢量以及例如比特速率和/或复杂度约束的指示符)的输入单元1202;以及还包括用于输出信号(例如,最佳匹配码矢量的CB索引)的输出单元1204。可在该布置的硬件中将输入单元1202和输出单元1204布置为一体。
[0086] 此外,布置1200包括至少一个非易失性存储器形式的计算机程序产品1208,例如,EEPROM、闪存或者硬驱。计算机程序产品1208包括计算机程序1210,计算机程序1200包括代码装置,当在布置1200中的处理单元1206中运行时,该代码装置使得布置执行之前结合图9a-c描述的过程的动作。
[0087] 因此,在所述示例性实施例中,布置1200的计算机程序1210中的代码装置可包括用于将输入目标矢量与CB的类别质心进行比较的比较模块1210a。计算机程序可以包括用于向输入目标矢量指派类别的指派模块1210b。计算机程序1210还可以包括确定单元1210c,用于为CB中的搜索确定起点;以及还用于基于输入参数来确定搜索空间或区域。计算机程序1210还可以包括用于根据上述方式搜索CB的搜索单元1210d。此外,计算机程序
1210可以包括用于提供索引的提供模块1210e,该索引从搜索向其他实体输出。
[0088] 计算机程序1210是计算机程序模块结构的计算机程序代码的形式。模块1210a-e可实质上执行图9a-c中的任意图中示出的流程的动作,以模拟图10中示出的VQ 1001的至少一部分。换言之,当在处理单元1206上运行不同模块1210a-c时,其至少对应于图10中的单元1004-1012。
[0089] 虽然将以上结合图12公开的实施例中的代码装置作为计算机程序模块(当在处理单元上运行时,使得布置和/或变换音频编码器执行以上结合上述的图来描述的动作)来实现,在备选实施例中,至少一个代码装置可至少部分地实现为硬件电路。
[0090] 虽然已经参考特定的示例实施例对所建议的技术进行了描述,该描述一般性地仅意在示出该构思,并且不应被视为对本文中描述的技术的范围进行限制。可以根据需要、需求或偏好,以不同的方式组合以上示例性实施例的不同特征。
[0091] 上述解决方案可用于任何应用了VQ的地方,例如,在例如移动终端、平板设备、计算机、智能电话等的设备中的编解码器中。
[0092] 应该理解,交互单元或模块的选择以及该单元的命名仅是用于示例的目的,可以通过多种备选方式来配置适于执行上述方法中的任何方法的节点,以能够执行所建议的过程动作。
[0093] 可以通过使用硬件(例如,能够执行存储在计算机可读介质上的编码指令形式的软件的电路硬件和/或硬件)来提供包括功能块的各种单元的功能,包括但不限于被标记或描述为“功能单元”、“处理器”或“控制器”的功能块。因此,这种功能和所示出的功能块要被理解为是硬件实现的和/或计算机实现的,并因此是机器实现的。
[0094] 在硬件实现方面,功能块可包括或包含(没有限制)数字信号处理器(DSP)硬件、精简指令集处理器、硬件(例如,数字或模拟)电路(包括但不限于专用集成电路(ASIC))、以及能够执行这些功能的状态机(在适合的情况下)。
[0095] 简写
[0096] SQ  标量量化
[0097] VQ  矢量量化
[0098] CB  码本
[0099] WMOPS  加权的每秒百万次操作
[0100] MDCT  修改的离散余弦变换
QQ群二维码
意见反馈