空间矢量和可变分辨率量化的制作方法

文档序号:2819112阅读:280来源:国知局
专利名称:空间矢量和可变分辨率量化的制作方法
技术领域
本发明涉及数字信号的压缩编码和/或译码,这些数字信号包括音频、视频信号,以及更一般的用于它们的存储和/或传输的多媒体信号。
背景技术
矢量的量化是一种广泛使用的数字信号的压缩方法。使用矢量量化的首要驱动是按照香农定理发展出的块编码理论,按照这个定理,增加所要编码的向量的维数可以获得更好的效果。矢量量化采用取自一组有限集合中的维数的一个向量来代表一个输入向量。这样,给数字转换器提供M阶(或者码矢量),以生成从一组输入矢量(通常这些矢量是一个n维的欧几里德实域Rn,或者也可以是Rn的一个子集)到Rn的有限子集Y的非双射的映射。这个子集Y含有M个独立元素Y={y1,y2,…yM}.
Y被称为再生字母表,或者字典,或者目录;Y中的元素被称为“码矢量”、“码字”、“出口接点”或者“代表”。
数字转换器的每个维数的比率(或者称为它的分辨率)是这样定义的r=1nlog2M]]>在矢量量化中,一个n个样点的块,作为一个n维矢量来处理。该矢量通过在M个码矢量的字典中选择一个最类似它的码矢量来进行编码。通常,需要对字典里的所有元素进行穷尽的搜索以选择和输入矢量间差异最小的项。
根据源译码理论,当维数很大的时候,向量数字转换器器的性能就会接近一个称为“信源比率畸变边界”的极限。除了空间的维数之外,矢量量化也可以利用待编码的源的特性,比如线性或者非线性相关性或者概率分布的形状。通常矢量量化器的字典基于普通的Lloyd algorithm(GLA)一类的统计程序。众所周知,这种算法依赖于矢量量化最优化的必要条件。基于对信源的训练序列的编码和一个初始字典,可以采用迭代的方式构造字典,每次迭代含有两个步骤-按最近原则,通过训练序列的量化对量化区域进行构造。
-用区域的质心来替代旧的码矢量来改进字典(按照质心原则)。
为避免收敛于确定的迭代算法的局部最小值,通过在构建质心和/或构建阶层的过程中引入随机性的方式,提供一个由模拟退火技术产生的名为“随机松弛”变量(表示为SKA代表随机k均值算法″Stochastic K-meansalgorithm″)。这样获得的统计意义上的矢量量化器不具有任何结构,因而就在大量的计算和存储量方面,补偿了昂贵的搜索耗费。特别是当编码和存储量都非常大时,例如当比例到达n×2nr时,矢量和比率的维数指数性增加的结果使无组织的矢量编码器的使用局限在小维数和低比率的范围内,这样就可以把他们植入到实时系统中。
由于标量量化只能使用源数据的概率分布的外形和线性相关性,所以不如矢量量化有效。但是,在衡量计算和存储时,标量量化没有矢量量化那么耗费大。另外,配合熵编码的标量量化甚至在中等分辨率的情况下仍能获得很好的性能。
为避开尺寸和维数的限制,好几种基本矢量量化的变量已经被研究,人们试图去补救字典结构的缺失,并且成功地减少了复杂度,但也使质量受到一定地损害,但改进了性能/复杂度之间的折中,因而,在虑到计算和存储的成本时,分辨率和/或维数的范围有可能增加从而使矢量量化可以被有效使用。
文献中已提出了众多的结构化的矢量量化器的方案,其中一些主要的方案如下--树型矢量量化器给字典强加了一个层次化的树型结构,这种方案搜索程序简单,但是量化器会需要更多的存储器。
-串联了更少层次的矢量量化器的多级矢量量化器考虑到计算时间和存储器的成本,减少了字典大小。
-小维数和尺度的N阶古典编码器的称为“笛卡儿积”的矢量编码器输入的矢量被分解成N个基本矢量,每个基本矢量被独立量化。
-“增益/方向”矢量量化器组成了一个笛卡儿积的矢量编码器的特殊情况有两个量化器,一个标量量化器和一个另外的矢量编码器,分别地、独立地或者相反的形式对矢量的增益(或者范数)和它的方向(就归一化的输入矢量而言)进行编码。这种类型的矢量量化方案也被称为“球面”矢量量化或者“极坐标”矢量量化。
——“置换码”矢量量化器,其中的码矢量通过将引导矢量和置换码的组合(或联合)的基矢量进行变换而得到。
上述的这些方法都是通过统计方法得出的。
另外一种完全不同的方法也被提出来了。这种方法是一种代数矢量量化,它使用高度结构化的字典,来自于规则的网格或者纠错码。由于它们的字典的代数特性上的优点,代数矢量量化器很容易实现并且不用存储在存储器中。这些字典的规则结构的使用实际上增进了快速搜索算法的优化以及具体地将一个索引与相应的码矢量关联(例如通过公式)。代数矢量量化器的实现并不复杂,而且需要的存储器很少。但是,他们仅仅在源处于正态分布的情况(或者是在空间或者是超球面的表面)下才是最优化的。作为一个统一的标量编码器的一般化情形,代数矢量编码器通过所谓的“压缩”技术来对源分布做修剪会更加困难。而且,码矢量的序数化(或者是编号)和反操作(解码)比在统计矢量量化器的情形下需要更多的运算量,因为对后者,那些操作是通过对表格的简单的读取来完成的。
下文描述了一种可变维量化的某些方面及会遇到的问题。
首先指出,矢量量化是一种公知且有效的固定长度的块编码的技术。然而,在众多的数字信号压缩的应用中,用一组可变长度的参数序列来模拟编码的信号。这些可变维数的矢量的有效压缩对诸如语音和音频编码器这样的许多多媒体编码器的设计来说是至关重要的。(“MBE”编码器,谐波编码器,正弦编码器,基于变换的编码器,基于原始波形内插的编码器)。
在正弦编码器中,提取出的正弦波的数量依赖于信号里探测到的正弦尖峰的数量,这个数量作为音频信号的特征函数,会随着时间改变。
更进一步,众多的语音压缩技术利用了信号的长期的周期性。谐波编码器正是这种情形,对一组频率的频谱成分进行编码,这组频率是谈话者的基本频率波周期的谐波,谐波尖峰的个数与基本频率成反比,随着说话人和时间不同,基本周期也会变化(很典型的是小孩子说话的振动频率要比大人的高),从一帧到一帧,量化成分的个数也会变化。
这也是PWI编码器(Prototype Waveform Interpolation原型波内插法)的情况,在这种情况下,在与音调周期等长的片段内提取出原型波,该周期长度也是在时间上可变的。在PWI编码器中,可以用这样的方式对这些可变长度的波形进行编码分别对增益(或者是“RMS”,″Root-Mean-Square″,均方根)和归一化的波形进行编码,这些归一化的波形本身分解成两个等长的的波形“REW”(″快演化波形″)波形和“SEW”(″慢演化波形″)波形。对于一个定长的帧,原型的数量是可变的,因此REW和SEW的增益的数量也是可变的,REW和SEW波形的维数也是这样的。
在另一种编码器中,在诸如基于变换的音频编码器中,强加了在固定长度的帧长度上获得的变换系数,但通常将这些系数分组到不同的频带里以进行量化,通常要分组到不等长宽度的波段,这样可以根据耳朵的临界波段,利用人的听力的声学特性。在一个宽带编码器里(50HZ到7000HZ),典型的变换系数矢量的维数的变化范围是3到15。其中,3属于低频波段,15属于高频波段。在一个FM波段编码器(覆盖了20HZ到16000HZ的听力范围)中,甚至可以达到24。
理论上,一个优化的可变维数的向量编码器要使用一组固定维数的字典,其中每个字典对应于每种输入矢量的可能维数。比如说,在谐波编码器中,对一个60到450HZ的音调的周期,电话波段中谐波尖峰的数目从高音(小孩的声音)的7到低音(成年人的声音)的52,这就需要构建并放置在存储器中,以实现46(46=52-7)个向量编码器。每个字典的设计需要一个足够长的学习序列,该序列应当足够长使得可以正确地代表输入矢量的统计特性。而且,将所有的字典存储在存储器里是不太现实或者说是很昂贵的。所以,在维数可变情况下,要符合存储器存储量和训练序列的限制,就很难利用矢量量化的优点。
下文说明了可变分辨率的量化的某些方面的特性和碰到的问题。
首先指出,输入信号的可变性不只是表现在待编码的参数的数量的改变上,也表现在为保证特定质量而传输的二进制信息的数量的变化上。比如说要在语音中保持一样的质量,爆破音、浊音、清音就不需要一样的比率。相对地,不可预测的爆破音需要比浊音更高的比率,浊音更稳定,而且通过“预报器(predictors)”来利用这种稳定性,这使得可以降低比率,最后,清音的编码精确度不需要太高,因此只需要较小的比率。
为了利用诸如语音和视频一类的多媒体信号的时变特性,设计一个可变比率的编码器是很明智的行为。这些可变比率的编码器特别适合网格和分组通信packet wise的通信,例如因特网、ATM等。
具体地,通过降低平均比率,信息包转换(packet switching)使得可以以更灵活的方式处理信息比特,进而可以增加信道的容量。使用可变比率编码器,也是一个解决系统阻塞和适应接入条件多样性的有效方法。
在多媒体通信中,可变比率量化器可以优化以下情形中的比率分布——信源和信道编码AMR(″Adaptive Multi Rate″)中,每20ms帧可以转换一次比率,以动态地适应通信量和信道错误的情况。这样,通过保证良好的纠错性能,语音的整体质量得到改善,同时,如果信道性能降低,那么就可以降低信源编码的比率。
——不同类型媒体信号(例如视频会议应用中语音和视频);——相同信号的不同参数比如在基于变换的音频编码器中,通常会用来在频谱包络和参数的不同波段间动态分布比特。通常首先执行频谱包络的熵编码,其目标是通过给码字指派可变长度代码来利用码字的非正态分布。高概率的码字的长度比小概率的码字的长度小,这样,使得码字的平均长度最小化。此外,为了利用人耳的声学特性,作为听觉上的重要性的函数,保留的(可变)比率就动态地分配给系数的频段。
新的多媒体编码(如音频和视频编码)的应用在维数和比率方面需要更灵活的量化。而且比率的可变范围可以使编码获得更高的质量,这些多维数和多分辨率的量化器必须针对高分辨率。尽管新技术的处理功率和存储量都增加了,但是这些矢量量化器带来的复杂度障碍依然在本质上使其保留了可能获得的性能。
就像下文中所述的那样,所提出的绝大多数的源编码技术要么是解决有关可变维数的问题要么是解决有关变量分辨率的问题。目前,很少有技术联合地解决了这两个问题。
考虑到可变维数的矢量量化,我们知道,被编码的参数维数的可变性本身对矢量量化的使用构成了一个阻碍。这样,基于变换的编码器的第一个版本使用了Lloyd-Max标量量化器。在本申请中开发的一个这类编码器,称为“TDAC”,详细表述于-“64kbit/s的高质量音频转换编码”by Y.Mahieux,J.P.Petit,in IEEETrans.Commun,Vol.42,No 11,pp.3010-3019,November 1994已经提出了其它的解决方案,用来解决可变维矢量量化的问题。“IMBE”编码器使用了一种带二进制变量分配和一个标量/矢量混合量化的复杂的编码方案。
一种广泛用于量化可变维数矢量的方法包括在量化前预处理可变维数的矢量以将矢量转换成另一个固定维数的矢量。有很多个和维数变换相关的矢量量化器技术的变型,(这种矢量量化被表示为DCVQ,代表“维数变换矢量量化”)。
在所提出的各种维数转换程序中,特别地由以下几个步骤构成截短、子采样、内插、长度变化。
对于正弦语音编码器或者MBES,其频谱系数近似于一个固定阶全极点模型,并可以对模型参数的固定维数进行矢量量化。另一种矢量量化方法,通过将一个固定维数K(K<L)的矢量量化与一个非正方形矩阵线性变换(L×K)结合,采用非正方形矩阵变换来解决可变维L的矢量量化问题。
另外还有一类与维数变换相关的矢量量化,仍然使用固定维数K的矢量量化器,但是维数变换被用到了代码向量中,以得到与输入向量同维数的代码向量。
与维数变换相关的矢量量化的缺点在于,其整个畸变有2部分一个来自量化,一个来自维数变换。为了避免维数变换带来的畸变,还有另外一种可变维数的矢量变换,它将每个可变维数L的输入矢量看作由一组维数为K(L<K)的基本矢量的子集,并设计和使用了一个具有固定的维数K的“通用”字典,实际上仍然包含了输入矢量的维数整个范围,一个选择器用来控制输入矢量间的协调。然而,这个包含了所有其它的低维数字典的“通用”字典,对最低维数来讲不是最佳的。特别地,各维的最大分辨率rmax受制于存储约束以及各参数矢量的比率。对于一个大小为2Krmax的数据字典,需要存储这个数据字典的存储器的存储量是K×K2Krmax,每个参数的矢量的比率是Krmax,这样,对于相同大小的数据字典(每个参数矢量和每帧的比率相同),一个L维的矢量,有一个精度(每维比率)K/L。因此,对于同样大小的数据字典(也就是说帧和参数的向量的比率不变),维度为L的向量有K/L倍的分辨率(维度的比率),那么字典就能存储少K/L倍的信息已经知道,考虑到可变分辨率的矢量量化,在带一个简单的解决方案,例如在可变维数的矢量量化的情况下,或例如基于TADC变换的编码器的第一个版本,采用一个标量量化器。
但是,每个样品的整数解析度使得每个参数波段的解析度的粒度粗糙,这就阻碍了动态二进制分配程序的有效进行。这样,结合一个将编码的索引整理成一个共同的二进制序列,就提出了使用一个带奇整数再组织层数的标量量化器的方法。提供的良好的解析度的粒度,对于二进制分配程序是有利的。它提供了改进质量的可能性。作为组合目录的算法的复杂度的代价,该算法必须安排到一个二进制序列中以使得比率有效率。然而对于有大量的参数的更高的频段,每个样值的整数个阶层的架约束,因标量量化而使得每个波段的解析度的粒度仍然太粗糙了。
矢量量化避开每个样品大量的整数阶层的限制,并可以得到一个好的解析度的粒度。另一方面,矢量量化的复杂度同时限制了可以采用的比率的数量。比如说,基于熟知的ACELP技术的AMR-NB多比率语音编码器,包含了从12.2kbit/s到4.75kbit/s范围的固定速率,由于源编码和信道编码分配的比率不同,它可以有不同级别的错误保护措施。对于ACELP编码器的每个参数(LSP,LTP时延,激励增益,固定激励),不同解析度的数据字典都被构建。对于这些参数中的每个参数的可变比率的数量被非代数矢量量化器的存储量限制。此外,在AMR-WB的多比率编码器中包含了从6.60到23.85kbit/s的九个比率,比率的变化由代数激励数据字典来保证,而代数激励数据字典是不需要存储的。这样当一个固定的激励信号的有8个可能的比率,8个数据字典,而使用随机数据字典的其他参数(LSP,增益,全差分延迟)只有两个可能的比率。
需要指出的是,使用在AMR多比率编码器中的随机矢量量化器,是固定架构的矢量量化器(笛卡尔积和多级)。事实上,大量的可变比率的量化器可以基于诸如已经提到的使用多级笛卡儿积的以及基于树的固定架构的矢量量化器。可变比率编码的基本树矢量量化器的使用已经是众多研究的主题了。但二进制基本树矢量量化器是第一个被提出的,通过在根节点基础上的质心,训练序列的连续分裂来设计一个矢量量化器,LBG运算规则很自然地变化出了二进制基本树矢量量化器。不同的树型的矢量量化器被提出。这些矢量量化器可以基于修剪,或者相反地依照像扭曲形状之类的特性而将某些节点分支到一个树上,使其分布导致产生了非二进制和非对称的基础树矢量量化器。


图1a和图1b代表一种树结构的矢量量化器。具体地,图1a代表一种对称的二进制的树结构,而图1b代表一种非二进制和非对称的树结构。
基于树型矢量量化器,通过选择期望的不同精度的节点的数量,多精度矢量量化器是很容易建立的。树型层次结构是很吸引人的,可以简化搜索程序。另一方面,因为从根节点到终端节点所经过的所有的中间层的所有树的节点都必须被保存,这样它包含了一个不是最理想的搜索并且必需的存储量会有显著的增加。另外,当一组的低精度的数据字典的节点没有被包含到高精度的数据字典中,作为矢量量化器的比率的增加的一个函数的量化错误的增加不能在这里得到保证。
此外,在代数代码的基础上怎样去构建可变精度的量化器是公知的。特别是EAVQ插入了一个代数矢量量化器,这个代数矢量量化器使用了一个8维的规则的高斯格球形代码的子集。
文中——P.Combescure,J.Schnitzler,K.Fischer,R.Kircherr,C.Lamblin,A.Le Guyader,D.Massaloux,C.Quinquis,J.Stegmann,P.Vary在提交给1999年IEEE声学、语音学和信号处理国际会议的第1卷,第5-8页的文章提出“一个16,24,32kbit/s的基于ACELP的宽波段语音多媒体数字信号编码器”。
通过使用不同维数的代数代码,这个插入的代数矢量量化方法被扩展到可变维量化中。即使EAVQ量化的一般化为以可变精度量化可变维数的矢量提供了可能,它还是有缺点。
输入矢量的分布必须被归一化。然而,将源的分布强制适应这个约束是非常困难的任务。基于规则网格的代数量化器的设计也有这样的问题,它必须对不同规格网格的做截短和裁减以得到为不同维数得到期望的不同的精度,还必须对不同的维数进行这样的操作。

发明内容
本发明的目的是为了改善这种情况。
本发明的一个目的是,用一种通用的方式,针可变维数的矢量的可变比率量化问题,提出一种有效经济的方案(特别对于存储容量)。
本发明的另一个目的是用一种不受限的方式,提出一种矢量量化器,采用对谐波编码器的频谱幅度,和/或频率编码器的传输系数的量化,特别是在语音和视频信号中,它可以方便地适应数字信号的编码和译码。
最后,通过矢量量化,在不同可变比率上定义可变分辨率,提出了一个包含了可变维数的代码矢量数字字典,以便用在数字信号的压缩编码译码的设备上。
该字典包括——一方面,对于一个给定维数,内插的可增加分辨率的数字字典。
——另一方面,对于一个给定维数的情况,一个下列的合并第一部分一个代码矢量的组,该组由在低维数的数据字典的代码矢量中插入从一组按照一个预插入法则的有限组合从一个有限真实数的取出的元素构成。
第二部分由这样的代码矢量构成,该代码矢量不是通过在低维数的代码矢量中的插入按照所述的插入法则的集合从所述有限组中选出的元素得到。
优选地,所述的内插法则的集合是基于在有限的实集合里插入一个单独的元素的基本法则来表述的。这些实数在矢量给定的位置上伪装成矢量的成分。
每个基本法则是都很好地被一对两个代表性地正整数定义——所述有限集中的一列元素——插入的位置本发明中,特征化的插入法则可以直接从数据字典的实际结构中直接读和推导出来,很好理解。
当然,在完全相反的方式下,可以定义删除法则,该法则从一个给定维数N’的有限组里删掉一个或更多个元素以得到一个更低的维数N(N<N’)。
本发明也针对一个形成符合本发明中数据字典的方法,对于指定维数,该方法有a)第一个的码矢量集合,是根据预先确定的插入/删除规则的有限组合,通过对低/高维字典插入/删除一组实数的有限集合中的码矢量来构造的。
b)构建第一个最初的中间数据字典,至少包含一组给定维数。
c)为了使所述的字典能够适应于使用至少一个给定的分辨率,在中间数据字典的基础上,通过字典的插入/简化使其增加/减少精度,这个增加了精度的字典含有从最小精度的字典到最高精度的数据字典,以这种方式,就建立了第二个,也是最后一个数据字典。
d)当然,“在集合B里嵌入一个集合A”是指集合A被包括在集合B内,此外,“简化集合A以获得集合B”是指集合A包括集合B。
e)通过变量或者补量的方式,可以这样理解一方面是a)和b)步骤,另一方面是c)步骤,可能被全部颠覆以使所述的字典适用于代码矢量的给定维数。
在这种情况下——在步骤c)中,通过嵌入/简化增加/减少分辨率的字典,来在分辨率为rN,维数为N’的初始字典的基础上构造一个维数同样为N’,但分辨率为更高/更低的rN的第一中间字典,已完全获得所述第一中间词典的分辨率;——在步骤a)中,为获得给定的维数N,通过在维数为N’且低于/高于所述给定维数N的第一字典中插入/删除按照一个预先确定的插入/删除规则的有限集合而从一个有限实数集合众提取出的元素,获得相应的码矢量,所述码矢量构成了一个第一集合。
——在步骤b)中,在一个可能的确定精度rN的步骤后,为所述给定维数N构造一个第二最后字典,其中至少包含了所述第一集合。
可以通过增加连续的维数来执行步骤a,在这种情况下,对于给定的维数Na0,获得一个初始维数n的初始数据字典,n小于给定的维数N;a1,通过在初始字典中插入按照一个预先确定的插入规则的有限集合而从一个有限实数集合中提取出的元素,获得维数为n+i的码矢量,所述码矢量构成了一个第一集合;a2,提供一个第二集合,由n+i维数的代码矢量构成。该代码矢量可以不是通过在初始字典的码矢量中插入根据所述插入规则的有限集合而从所述有限实数集合中获得的元素得到的;a3,一个n+i维的中间字典,包括所述第一集合和所述第二集合的合集。
中间字典作为初始字典时,要达到所述的给定维数N,步骤a1到步骤a3要至多重复N-n-1次(当i=1)。
同样可以通过连续地减少维数来实现步骤a,这种情况下,对于给定的维数Na’0)获得一个维数为n且高于所述给定维数N的初始字典;a’1)通过在维数为n的字典中按照一个预先确定的删除规则的有限集合进行选择和扩展而从一个有限实数集合中提取出的元素,获得相应的码矢量,所述码矢量构成了一个维数为n-i的第一集合;a’2提供一个第二集合,包含n-i维的码矢量,所述码矢量可以不是通过简单地从初始字典中删除按照一个预先确定的删除规则的有限集合在一个有限实数集合中提取的元素来获得的。
a’3)构造一个n-i维的含有一个所述的第一集合和所述的第二集合的中间字典;所述中间字典作为初始字典的情况下,要达到所述的给定维数N,步骤a’1到a’3要至多重复n-N-1次(对应i=1);为了得到一个连续的维数为1到N的N个数据字典,可以合并步骤a1至a3以及步骤a’1至a’3,这个步骤最好在一个n(n<N)维字典的基础上。通过执行a1到a3,使维度从n+1到N,通过重复执行步骤a’1到a’3,使维数从n-1变到1。
这样就得到一个最大维数使N的N个数字字典的全部或部分。
用作构造连续维数的字典的有限实数集合和插入/删除法则的有限集合可以这样定义通过对待量化的源的分析,在构造字典前完成;优选地通过插入/简化连续分辨率的字典,在构造字典后完成,接着对构造的字典进行统计分析。
需要指出,被量化的源优选地被一个学习顺序所模拟,所述插入/删除规则的有限集合的预先定义优选地,受所述对该源的统计分析影响。前述的有限集合是通过待量化的源的维度概率密度进行估计所选择的。
通过合并预先或在后定义的有限实数集合和插入规则的有限集合——通过对一个学习序列的分析,来预先定义一个集合和一个第一插入/删除规则集合的一个第一选择可以方便地选择一个优先级,以形成一个或多个中间字典;——至少所述的第一集合的一部分和/或所述的第一插入/删除规则集合的一部分在所述的后续的中间字典的分析中被更新;——组成所述一个或多个中间字典的码矢量中的至少一部分被更新。
为得到增加的分辨率,适用给定分辨率的步骤c)包括了下列的操作c0)构造一个初始分辨率为rn的初始字典,rn比给定分辨率rN更低;c1)在初始字典的基础上,构造一个比初始分辨率rn高的rn+1的分辨率的中间字典;c2)c1的操作被重复直到达到给定的分辨率rN。
这样的优点在于,对于每次的c1操作,都提供了一个有类和质心的结构,其中,至少属于分辨率高于当前分辨率ri的字典的质心被重新计算并更新。进一步地,优选地,从一次更新到下次更新,全部更低分辨率的字典的全部失真在减少时,属于比当前分辨率ri低的分辨率的字典的质心才被更新。
依靠补量或者变量,步骤c)包括下列操作,以得到增加的分辨率c’0)构造一个比所述给定分辨率rN高的初始分辨率rn的初始字典c’1)在初始字典的基础上,通过按照一个预先的标准将初始字典划分成几个规则的子集,来构造一个比初始精度rn低的rn-1精度的中间字典;c’2)重复操作c’1直到达到给定的精度rN。
优点在于,所述划分可以通过执行至少一部分插入/删除法则,使用在步骤a)和b)中的受控扩展部分组合。
为了在分辨率为介于r1和rN间的中间分辨率rn的初始字典的基础上,得到分辨率分别为r1到rN的N个连续字典,在分辨率从rn+1增加到rN的过程中,重复c1,并在分辨率从rn-1减到r1的过程中重复c’1。
可以这样理解,可以通过所得到的不同分辨率和不同维数的字典的统计值的学习、后验来选择有限集合和插入/删除法则的集合,以形成符合本发明所期望的维数和分辨率的一个字典。
根据本发明提供的一个优点,用来存储编码/译码实现所需的的存储空间大为减少。特别有优势的是,对于一个给定的维数,所述通过索引来标识的插入/删除规则的集合一劳永逸地存储在存储器中-所述的第二个集合包括不能通过运用插入/删除法则从较低/较高维数的码矢量中得到的码矢量。
-利用插入/删除规则的索引和标识所述第二集合元素的索引,利用至少一个对应表格来重构给定维数字典的的任何码矢量。
这样,通过简单地存储所述的第二集合元素和用来访问这些元素和关联的插入/删除规则的相应表格里的链接,就可以避免完全存储所述的给定维数的字典。
这样,对于一个给定维数,所述的第二集合可以方便地包括维数低于所述给定维数低的“第二子集”。
具体实施例方式
在一个实施例中,插入/删除机制本身存储在程序调度程序里,而对于给定的插入/删除法则,插入/删除的参数,结合所述给定的插入/删除规则的索引,可存储在一个普通的对应表格中(原则上不同于前述的对应表格)。
更便利的是,对应表格是先前形成的,对-所述第二集合当前的维数,
-第二集合元素当前的索引,-插入/删除法则的索引,三个整数标量的值进行制表,在当前维数的第二集合中的当前索引的元素的基础上,可重新构造给定维数的字典的码矢量的索引。通过运用插入/删除同所述当前索引和所述当前维数相对应的元素,上述插入/删除规则至少对重构所述给定维数的字典的码矢量有贡献。
如下文所描述的,在压缩编码/译码方法中非常方便地实现这些特征。
在这种考虑下,通过可变分辨率的可变比率的矢量量化,针对数字信号压缩解码/译码,本发明也关注于本发明中的字典和通过上文中步骤得到的字典的应用。特别是用来在给定维数j的字典中,为一个输入矢量y=(y0,…,yk,…,yj-1)搜索最相近的码矢量,该应用方法执行了以下步骤CO1)对于所述的要检索的码矢量的当前索引,至少通过先读取对应表中出现的索引,和适合时,先读取能形成所述字典的第二集合的元素,重构至少与所述的当前索引相对应的索引的码矢量的部分,这个方法后续有适当编码译码步骤,包括C02)至少在编码中,计算输入矢量和在CO1)步骤中构建码矢量的距离;CO3)至少在编码中,对所述字典的所有当前索引,重复步骤CO1)和CO2);CO4)至少在编码中,识别至少部分被重构的码矢量的索引,根据输入矢量最小时,在步骤CO2)的迭代过程中计算所述码矢量的距离;CO5)至少在解码中,确定同输入矢量最相邻的矢量,在步骤CO4)中已识别所述输入矢量的码矢量的索引。
正如在上文中指出的,重新说明一下,前述“第二”集合优选地包括维数比第二集合给定维数低的“第二”子集。
在一个具体的实施例中,至少在译码中,步骤CO1)包含CO11)在相应的表格中,读取代表所述第二集合和插入规则的链接的索引,还包括-所述第二集合的子集的当前维数的索引,-所述子集的元素的当前索引,-用来在所述元素的基础上用来构造给定维数的字典的码矢量的合适的插入规则的索引,CO12)在以其当前的维数标识的子集中读取以其当前索引标识的所述元素,CO13)通过将由在步骤CO11)中读取的索引标识的合适的插入规则运用到在步骤CO12)中读取的所述元素上,完全重新构造所述给定维数的码矢量。
在一个具体实施例中,在编码时步骤CO1)包括CO11)在相应的表格中,读取代表所述第二集合和插入规则的链接的索引,还包括-所述第二集合的子集的当前维数的索引,-所述子集的元素的当前索引,-用来在所述元素的基础上构造给定维数的字典的码矢量的合适的插入规则的索引,CO12)在以其当前的维数标识的子集中读取,以其当前索引标识的所述元素,在步骤CO2)中,所述距离作为失真准则的函数进行计算,所述失真准则作为所述插入规则和所述元素的函数来评估。
这样,通过仅为译码进行完整的重构,在步骤CO1)能提供具有所述给定维数的码矢量的仅部分重构在一个更为有利的实施例中,根据置换码的联合,进一步提供了一个辅助结构属性,在下述步骤的实现中,利用了所述置换码的联合的一个索引CP1)在输入信号的基础上,形成通过其绝对矢量|y|=(|y0|,…,|yk|,…,|yj-1|)和其标签矢量ε=(ε0,…,εk,…,εj-1)(其中εk=±1)定义的输入矢量y=(y0,…,yk,…,yj-1)被构造。
CP2)矢量|y|中的元素根据绝对值进行降序排列,通过置换,得到前导矢量 CP3)从维数为j的字典Dji的前导矢量中确定前导矢量 的最相邻的矢量xj′,
CP4)确定字典Dji中最相邻的矢量xj′阶的索引,CP5)一个编码/译码的有效值被使用到输入矢量中,该有效值取决于步骤CP4)中确定的所述索引、步骤CP2)中确定的所述置换和步骤CP1)中确定的所述的标记矢量。
根据本发明的另一个优点,对于编码/译码以及可能的对于数据的构造,特别是在编码/译码的压缩装置中存储相应的表格和上述第二集合里的元素。
在这点上,本发明的目的在于提供一个这样的编码/译码装置。
本发明的目的还在于提供一个计算机程序产品,该产品存储在处理单元的存储器中并同处理单元的阅读器合作,该处理单元尤其是指计算机或移动终端或移动存储介质。这个程序包含了上文所述构造字典的方法实现的指令。
本发明的另外一个目的就是提供一个这种类型的程序,特别是存储在处理单元的储存器中的计算机程序产品,该处理单元尤指集成了编码/解码装置的计算器或移动终端,或者是移动存储介质。该程序产品同处理单元的阅读器合作。也用来协同处理单元中的读取单元。这个程序包含了上文所述压缩编码/译码应用实现的指令。
本发明的其他特点和优点通过下文中的详细描述及附图将会变得很明显,其中图1a和图1b已经在上文中描述过了。
——图2a示出了对于给定维数N,本发明中的字典的插入特性;——图2b示出了本发明中字典的受控扩展部分组合的特性;——图3示出了作为增加的分辨率的函数的字典的插入;——图4示出了在低维数的多个字典的码矢量和插入规则的基础上的一个字典的码矢量的组成;——图5示出了不需要再更新低分辨率字典来增加嵌入式字典的分辨率的结构;——图6示出了“TDAC”编码器的框图;
——图7a到图7g示出了本发明中的使用一个矢量量化器的宽带TDAC编码器,以序列示出*分割成32个频段(图.7a),*每维的分辨率(图7b),*由嵌入特性提供的存储增益(图7c),*由嵌入和受控扩展的两个特性提供的存储增益(图7d),*分别由作为维数和比率的函数的两种结构特性提供的存储增益,考虑到没有使用这两个特性的字典存储量的存储器大小。(图7e),*维数1,2,3(图7f)的集合L0的第一前导,以及*3维字典的置换码的前导(图7g),*图8a和8b示出了FM频段TDAC编码器,分别以序列示出,*分割成52频段(图8a),*每维的分辨率(图8b)。
图2a和2b中首次示出了,根据本发明的一个字典DiN的两个主要特性。
图2a中,对于一个给定维数N,分别增加分辨率r1,r2,…,ri的字典D1N,D2N,…,DiN相互嵌入,这样具有最大分辨率ri的DiN的字典,能决定一个低分辨率rj(j<i)的字典DjN,如下文所述。这个第一特性,被称为PR,在下文被称为“嵌入特性”。
现在参考图2b,任何一个给定了维数N和分辨率ri的字典DiN的是两个不相交集合的合并第一集合D′iN包含码矢量YN,该码矢量是由根据插入规则的有限集合{Rm},将实数有限集合的元素xj插入到低维N-1的字典DiN-1的码矢量YN-1中构成的(箭头F3),插入规则R′(j,k)决定了插入的元素xj(箭头F1),以及插入的方式。((比如构建时,在矢量YN的位置K)。
第二集合D′iN是由矢量Y′构成,Y′不能通过上述根据插入规则集合将所述有限集合的元素插入到低维码矢量中得到。
这个被表示为PD的第二特性,在下文中被称为“可控扩展的部分组合特性”。
在上述的图2a和图2b和发明内容中,初始分辨率和/或维数的索引从整数1增加到一个给定的整数(i,n,或者N视情况不同而定)。熟悉编-Dij是具有分辨率rij数的维数j的字典;-Tij是分辨率为rij(Tij=2jriji.e.rji=1jlog2Tji)]]>的字典的大小。
图3示出了作为增加分辨率的函数的字典的嵌入。
图5示出了根据没有更新低维数分辨率的字典来增加分辨率的构造算法的流程图参照图5,在初始化步骤51和52中,首先i=0保持不变,并且循环迭代的索引iter=0,随后首先构造最低分辨率的字典D0j。然后,最低分辨率的字典D0j保持不变,利用下述多种常规构造算法,构造更高的分辨率的字典D1j,随后,迭代该方法直到构造最大分辨率的字典DjNj-1。
这样,在步骤53中,通过一个迭代的进程,附加(Tij-Ti-1j)个矢量到低分辨率ri-1的字典Di-1j中,在初始字典Dij(0)的基础上构造出字典Dij。
构造类54的算法与常规的算法一样,只是构造Tij质心55被调整了。具体地,当较低分辨率的字典的(Ti-1j)质心没有被重新更新时,不属于低分辨率字典的(Tij-Ti-1j)的质心被重新计算和更新。在所有低分辨率的字典合计失真减少或者不变的情况下,一个变量允许低分辨率的字典的质心被重新更新。这种情况下,低分辨率的字典也相应地调整。
循环索引iter也相应增加(步骤56)到Niter(i,j),Niter(i,j)取决于第i阶分辨率和维数j(测试57)。一旦达到所期望的分辨率Nj(测试58),我们得到具有分辨率Nj的字典(结束步骤59),和具有分辨率ri的字典Dij的集合,i从1到Nj。
根据减少的分辨率来构造字典时,先构造最高分辨率的字典。然后使该字典保持不变,将该字典划分为根据一定的准则排列的几个子集。几个标准可用作该划分。比如说可以按照基数、学习序列中的调用(即量化区域的基数)的来处理子集,他们对总失真的贡献,或者更精确地说减少失真的贡献。也可以合并不同的标准并衡量他们各自的重要性。同样,字典的划分可以按不同的方式执行从初步的划分(每个子集中有一个元素)到更精细的划分。这个排列划分是通过排列类的累进合并来实现并建立在嵌入的字典的结构基础上的。
更为优选地是,基于扩展的元素和基于插入规则集合的子集的同样的码矢量的组合来进行基于受控扩展部分组合的PD特性来进行划分。程特别是熟悉C++语言的人可以理解,根据上下文,这些索引从0开始一直到i-1,n-1或N-1。因此,在下面将要说明的图3的例子中,分辨率从0开始后续达到的最大分辨率是Nj-1。
下文描述了一种构造拥有两个结构特点PR和PD的字典的方法,特别是构造这样架构的字典的算法。这个由2个结构特点引起的链接可以用来开发构造这些字典的算法,该算法通过改编常用的迭代结构算法如”GLA””SKA”来实现。
更一般的形式,表述如下-可用嵌入特性PR来连续构造具有不同分辨率和相同维数的相关的字典;-作为一个补充或者派生,构造不同维数的字典,这些不同维数的字典通过受控扩展的部分组合特性PD来相关;——这样就得到了拥有上述的两个结构特性PD和PR的不同维数和分辨率的字典。
更为一般地,提出了三种构造方法,根据给定的维数(PR)通过增加分辨率来构造嵌入式字典。
第一种方法是根据增加分辨率(从最小分辨率上升到最大分辨率)来构造字典。
第二种方法同第一种方法相反,根据减少分辨率(从最大分辨率下降到最小分辨率)来构造字典。
第三种方法是在一个具有中间分辨率的字典的基础上,通过降低分辨率到最小分辨率和增加分辨率到最大分辨率来构造字典。当不同分辨率的矢量量化器的标称分辨率是上述的中间分辨率时,这个过程特别有益。
对于维数j,字典的嵌入特性PR最终表示为D0j_D1j_…Dij_Dji+1…_DjNj-1其中,-Nj是分辨率数目(或者在一个可变比率编码器中的比率);-维数j的分辨率集合为Rj={r0j,r1j,…,rij,rji+1,…,rjNj-1},其中r0j<r1j<…<rij<rji+1<…<rjNj-1;
应该指出通过不同程序间的交替,可以做几次迭代。比如,嵌入字典可以按照增加分辨率的程序来构造,也可用减少分辨率的程序来构造。通过上述两个方法的结合,在具有中间分辨率ri的字典基础上构造嵌入分辨率的字典。因此首先构造第i阶字典。接着,在该字典的基础上,根据减少的分辨率的第二种方法构造低分辨率的字典,根据增加分辨率的第一种方法,构造高分辨率的字典。
更一般的,根据受控扩展的部分组合(PD特性),提出了三个方法构造不同维数的字典。
一个方法是增加维数。另外一个方法是减少维数。最后一个方法是,先构造一个中间维数的字典,然后通过连续增加和减少维数来构造高阶维数字典和低阶维数字典。从下文可以看出,受控扩展的部分组合使确定实数的有限集合和插入规则的有限集合的过程变得有序。
这里简单指出,优选地,扩展元素的比例(与字典里的基数相关的第一集合的元素的数量)随着维数而增加,所以随着维数的增加,可以降低存储第二集合的成本。通过应用程序(存储/计算能力)或者剩下的“自由度”的复杂度限制来预先设定这个比例。在后一种情况中,构造算法将适合处理包含通过受控扩展得到的元素的第一集合的元素,如下文所述。
这样,受控扩展的部分组合的第二属性PD最终表示为Dji=D′ji∪Di′j‾]]>其中-D′ji是Dij中可根据插入规则集合{Rm}将R的有限集A里面的元素插入到低维字典的码矢量中得到码矢量的集合。
是在Dji中D′ji的补集, 是Dji中那些不能通过根据插入规则集和{Rm}在低维数的码矢量中插入A中的元素来得到的码矢量的集合。
下文中描述了一个用来验证第二属性PD的插入规则的例子。
首先,定义了一个基本插入规则的集合每个基本规则是在一个矢量的给定位置插入有限实数集A中的一个且仅限一个元素。通过一对两个正整数来表示每个基本规则,一个给出了有限集合中的元素的阶数,另一个给出了插入的位置。在基本规则集的基础上,可以构造更加精细的插入元素的规则。
当然,以一种完全可逆的方式,可以定义删除规则,该删除规则是删除给定维数N的有限集合中的一个或者更多个元素来达到一个更低的维数N-n。
定义一个插入规则,其中-Na是A的基数,ai是它的第i个元素A={a0,a1,…,ai…,aNa-1},-R′(im,pm)是在位置pm插入aim的基本插入规则。
这样,如果最大维数是jmax,可能的基本规则的数量是Na*jmax。例如,对于Na=2和jmax=3,6个可能的基本规则是R′(0,0)在位置0插入a0,R′(1,0)在位置0插入a1,R′(0,1)在位置1插入a0,R′(1,1)在位置1插入a1,R′(0,2)在位置2插入a0,R′(1,2)在位置2插入a1,规则R′(0,0)和R′(0,1)结合给出了如下的规则在位置0和1插入a0。因此使得在维数为j的一个码矢量的基础上得到一个维数为j+2的代码矢量。
规则R′(1,0)和R′(0,2)结合给出了如下规则在位置0插入a1,在位置2插入a0。使得在维数为j的一个码矢量的基础上得到一个维数为j+2的码矢量。
更一般的情况下,用R(n,{(im,pm)}m=0,n=1)表示n个基本规则R′(im,pm)(从m=0到n-1)的组合,这使得在维数为j的一个码矢量的基础上得到一个维数为j+n的码矢量。应该指出,通过比较n个位置pm是完全不同的,im不一定要不同。优选地,位置pm递增排列p0<p1…<pm…<pn-1.
图4说明了在低维数字典的码矢量和插入规则的基础上,字典的码矢量的构成。
又提供了几个构造不同维数、两个不相交集合的联合的字典的实施例,第一个集合包含根据插入规则集合将实数有限集里面的元素插入到低维字典的码矢量中得到码矢量。第二集合包含那些不能通过根据上述插入规则集合在低维数的码矢量中插入上述实数有限集的元素得到的码矢量。
第一集合需要确定实数(它的基数和绝对值)的有限集合和插入规则集合。
上述有限集合的构造和插入规则的集合说明通过以下两种方式来实现一是在构造字典前确定有限集和插入规则的集合。这个选择是基于要量化的信源的统计特性分析,比如通过一个学习序列来模拟。例如,有限集合的选择可以基于信源的单维数概率密度(或者它的柱状图);另一个在构造字典后完成该确定操作,无需遵从受控扩展部分组合的规则,先构造所有维数的嵌入分辨率的字典。通过学习这些初始字典的统计特性来决定有限集合合插入规则集合的选择。
有限集合和插入规则集的选择通过对这些初始字典的统计学方法研究形成。
这两个解决方法,“在先确定”和“在后确定”可以连续和/或组合使用。比如,第一有限集合和第一插入规则集合可以通过学习序列的分析来选择。接着,这些字典的第一次构造后,对这些字典的分析可以导致有限集合A或者插入规则集的全部或者部分更新。
应该指出这个有限集合和/或插入规则集合也可以是基于维数的。对每对维数(j,j’)可以确定一个所述规则的有限集合和/或一个有限实数集,或者不同维数也可以确定一个所述规则的有限集合或者有限实数集,或者确定全局的集。这里同样的,可以在学习序列和/或字典的统计特性分析之前或者之后作出选择。
为了根据增加维数来构造字典,首先按照前述的传统的矢量量化设计程序来构造最低维的字典。然后,构造这个字典,利用多种传统构造算法构造更高一维的字典。在低维字典的基础上,通过运用插入规则,能组成所有可能的初始码矢量,可以向该字典中加入“自由”码矢量,(即不能通过扩展得到的码矢量)。应该指出,初始字典的大小可能比期望的尺寸大。在初始字典的基础上,为了构造一个矢量量化器,使用了多种迭代算法。通过学习序列的量化,构造了类,遵照对第一集合的码矢量的受控扩展的限制,更新质心。对第一个集合里的码矢量来说,可能不重新计算插入的元素,或者重新计算所有的元素并调整码矢量,因此带回根据插入规则获得元素。这样,如果字典尺寸比预计的大时,删去空的类。如果在算法的最后,字典的大小比期望的分辨率要高,用一个程序给字典的元素的分类,以便仅保留第一码矢量。可能要重新运行迭代算法。构造高维数的字典时,通过在添加了“自由”码矢量的最低维的两个字典基础上的受控扩展来构造初始字典。然后运用迭代算法来构造矢量量化器。迭代该方法,直到构造了最大的尺寸的字典。
作为一个派生,通过减少维数来构造字典时,首先构造最大维数的字典。然后,保持最大维数的字典不变,提取低维的码矢量。其优越性在于,通过修改高维数的码矢量使得这个提取过程变得容易,以便提取出元素A作为码矢量的元素。
在一个互补的派生中,一方面,根据维数的增加,通过2个结构间的交替,方便地执行几个迭代;另一方面,按照维数减少来执行迭代。
为了便于受控扩展程序的执行,本发明另外执行一个码矢量元素的变换。一个范例变换是高分辨率的标量量化。这有利于构造一个低维数的字典,即使这些维数没有直接被矢量量化用到。比如,从维数1开始,即使维数1没有被标量量化用到。同样,也有利于构造一个中间维数的字典,这些字典通常被受控扩展程序用来来降低存储和计算过程复杂度。
此外要指出,通过将构造嵌入分辨率的字典的算法和通过受控扩展的部分组合和构造字典的算法组合起来,可开发出多个构造方法。应该指出,算法是迭代的,不同技术可以替换。比如,先构造具有最大分辨率的最小维数的字典,用该字典根据减少分辨率(PR特性)推演出低分辨率的字典,然后通过PD特性的优点构造具有最大分辨率的高一维的字典,对于这个高一维,构造不同分辨率的字典。迭代这个过程,直到得到最大维数的字典(嵌入不同的分辨率)。
在下面描述的实施例中使用了一个优选的结构,这个实施例结合了根据增加维数来构造字典和和减少分辨率来构造字典的技术来构造字典集合{Dji}1=0,…,Nj-1,j=jmin,…,jmax。
下面描述了使用了本发明所述的字典的数字信号(音频、视频等)的压缩编码/译码过程。特别地,编码和解码算法使用了本发明的字典的结构(嵌入特性和受控扩展部分组合)。通常认为,根据应用的限制来对编码和/或解码器的存储/计算的折中进行最优化。
通过例子,下文考虑称为“TDAC编码器”的音频编码器,该音频编码器对抽样率为16kHz(宽频段的)的数字音频信号进行编码。这个编码器是能工作于不同比率的编码器的一种变换。特别的是,该比率可以在通信建立前固定,或者在通信的过程中,在帧之间变化。
图6给出了TDAC编码器的框图。音频信号x(n)的频段限定为7kHZ,抽样频率是16KHZ,被分成多个帧,每帧包含320个抽样点(20ms)。对具有640个抽样点输入信号的块进行修正的离散余弦变换61,每个块50%同相邻的块重叠(即每20msMDCT分析更新一次)。通过使最后31个系数为0(只有前面289个系数不为0)将得到的频谱y(k)的带宽限定为7225HZ。屏蔽模块62确定屏蔽曲线,遮蔽模块62对屏蔽参数执行零位调整。频谱被划分成不一样宽的32个频段。确定作为信号x(n)的变换系数的函数的屏蔽频段,如果有的话。对于频谱的每个频段,计算MDCT系数的能量(标量因子)。在帧中(块63),32个标量因子构成了信号的频谱的包络,该频谱包络将要被量化、编码和传输。这里的量化和编码使用了哈夫曼编码。然后计算在不同的比率下在频谱包络量化之后剩下的比特的不同数目。这些比特被分配给频谱的MDCT的系数的矢量量化65。去量化频谱包络线是用来计算频段屏蔽阈值集合。这个屏蔽曲线确定了比特的动态分配64。在量化频谱包络的基础上,逐个频段地计算该屏蔽曲线,以避免传输与二进制分配相关的辅助信息。具体地说,解码器以同编码器相同的方式比特的动态分配。通过每个频段的去量化标量因子来对其MDCT系数进行归一化,然后用可变维数和可变速率的矢量量化器对MDCT系数进行量化。最后,通过将该信息乘到66频谱包络上来构造二进制序列。这些频段归一化系数在一帧里面被编码和传输。图6中的67和68,实质上分别同检测语音或非语音的信号x(n)的步骤,和音调检测(决定音调频率)的步骤相对应。
下文描述了TDAC编码器中基于不等宽度的MDCT系数的频段的可变速率的矢量量化器。特别的是,频带归一化MDCT系数的宽频段的量化使用了本发明构造的字典。分割成不同宽度的频段实际上产生了不同维数的矢量。图7a中的序列给出了使用的分割的频段,也指出了系数矢量的维数,如同第三列指出的系数个数。
在频谱包络线的哈夫曼编码之后剩下的比特的可变数目被动态地分配给给不同的频段。图7b中的序列给出了分辨率Nj和每频段速率的集合j*Rj(每个频段分辨率的值)的数目,其中分辨率j从1到15。应该指出为了有效利用受控扩展部分组合的结构特性,构造了维数为1,2,6,11的矢量量化器,这些量化器不同任何带宽相对应,但它们的元素可以用来组成大维数的码矢量。另外需要注意的是,即使是在维数很大的情况下,也要注意分辨率要具有精细的粒度。
在模块62中的屏蔽参数的调零后需要在分析归一化的MDCT系数的过程中,作为起始集合A={0}和作为插入规则集合,对全部可能的基本插入规则的混合体的集合进行选择。这等于在任意位置插入了零。
然而,一个好的分析器,在字典中施加了额外的结构约束,该约束通过用归一化的类型II的置换码的联合形成的字典来实现,在类型II的置换码中,允许所有的排列和所有的符号。对于每一个类型II的置换码,最大的矢量,在字典编辑的意义上被称为绝对前导,这是通过降序排列各部分的绝对值来获得。字典的结构最终决定了它们归一化的绝对前导。对前导采用受控扩展就是在其后面插入多个零。
此外,固定一个失真准则,优选地,这里用欧几里德距离作为失真准则的度量。字典的归一化后,搜索同量化的输入矢量具有最小的欧几里德距离的码矢量就相当于搜索同输入矢量具有最大标量乘积的码矢量。此外当字典是置换码的联合的时候,搜索同输入矢量具有最大标量乘积的码矢量就相当于在字典的绝对前导中搜索同输入矢量的绝对前导具有最大标量乘积的绝对前导。(也可以通过其元素的绝对值的排列,以按降次的顺序来排列)。
下面是根据本发明中的矢量量化器定义的一个学习序列,如上所述,优选地,为量化器的设计定义一个学习序列。首先根据宽带音频信号的多个抽样点得到一个长序列,该序列包含多个具有289个MDCT系数的帧,用他们频段的标量因子对MDCT系数进行归一化。对每一个归一化的系数矢量,推导出器绝对前导。在不同维数的绝对前导集合的基础上,创建两种多维学习序列S0和S1-S0={S0j}j∈[1,15],,S0j是具有j个非零系数的绝对前导的前面j个系数形成的所有矢量的集合。S0j因此包括具有非零系数的j维绝对前导,维数为j+1的前导有一个为零的系数,维度为j+2前导有两个为零的系数……而维度为15的前导则有15-j个零系数。
-S1={S1j}j∈[3,4,5,7,8,9,10,12,13,14,15],S1j是具有j个系数的频段的所有绝对前导的集合。
例如,在系数归一化的矢量(0.;0.6;0.;0.;0.8)的基础上,我们可以推导出它的绝对前导矢量(0.8;0.6;0.;0.;0.),它属于序列S15,和S02(0.8;0.6)的元素,S02是由绝对前导的前两个非零的元素构成。
第一种序列优选地用来确定 的前导的初始字典。第二种序列优选地用于构造多维、多分辨率的字典,该字典拥有两种结构特性。
以第一种序列S0为基础,通过对序列S0j运用称之为k-means的传统算法,对每一维j(j从1到15),我们可以得到归一化的绝对前导的第一字典。通过参照第一元素(即最大元素)将元素抑制在一个预定阈值下,来对具有正实数元素的前导进行修正。被称之为“中间裁减”的方法可以方便的提出零,也可以提出低维的没有零元素的绝对前导。为了更好支持可控扩展,对提取出来的前导的元素进行变换,。正是为了这个目的,才使用了前导用最小的元素进行的归一化,在此之后,进行统一的标量量化,该量化有着间隔为1的整数重建级别(相当于将每个向前导中的元素凑成它最接近的整数)。由于通过在距离计算中引入矫正的归一化因子,绝对前导可以以整数的形式进行存储,这个变换使得存储空间相当大地减少。值得注意的是,对于不同的实数前导或者是基于不同序列,S0j的可能变换为一个和同样的整数前导。下面提供一个程序,用来去除可能的冗余,形成具有非零整数元素的所有绝对前导的集合L′0=∪j∈[1,.15]Lj′0,L′0j]]>是维度为j的前导的子集。这种用于构造L′0的技术是源于根据减少维度通过受控扩展的部分组合来来构造字典的技术。另外值得注意的是由于L′0的所有前导至少有一个“l”作为最后的元素,只要附加在元素“l”之后,作为先验的集合A的选择可以看作是后验的。
集合L′0用做构成前导的初始字典的基础,用于设计多维和多分辨率的矢量量化器,该量化器拥有嵌入式PR和有受控扩展PD的部分组合的两种结构特性。在序列S1的基础上,通过增加维数和减少分辨率来进行构造这些量化器的算法。
对于维度j,由L′0j所有前导和在集合L′0j的前导中插入(j-j′)个零得到低维j′(j′<j)的前导的受控扩展所得到的所有前导形成前导L′1j的初始字典。例如在维度为3时,前导的字典是由受控扩展的基础上实现的,可控扩展基于L′01={(1)},L′02={(11),(21),(31),(41),(51),(91)},其中补充了L′03的前导。
对于每个维度j,以L′1j为特征的的置换码的联合,构成了高分辨率的字典,可能比目标最大分辨率还大。这些置换码因此执行这个字典的自然划分,划分的每一个种类就是由其前导代表的置换码。通过序列S1的量化来执行同这个划分的种类相对应的最近的相邻区域的构造。根据排列码中的基数的增加对划分进行排序。在置换码的基数相等的情况下,相对于上述L′0j中的那些前导,通过受控扩展获得的前导码更为方便。在属于同一个集合(D′jNj,或 )的两个种类的基数相等的情况下,结合它们量化区域的基数和它们减少总失真的贡献来对种类的进行排序。对每个置换码计算置换码排序所依赖的基数的总和,如同每个矢量相对应的比率。我们用L1j,表示L1j中的前导排序后的集合。为了避免排列作为一个联合二进制序列的编码索引,仅选择整数的分辨率。
参考图7C中的序列,通过选择那些基数总和的比率同仅高一阶的整数最相近的不同分辨率的最后一个置换码来构成分辨率嵌入的多分辨率字典。如果以L1j为特征的字典的分辨率比期望的最大分辨率还高,去删除最后没有用的排列码。我们用Lj(_Lj1)来表示DjNj-1的前导最后排列的集合。
在维度迭代的最后,如果L′0的某些前导没有用来组成{Lj}j({3,4,5,7,8,9,10,12,13,14,15}的构造前导字符{Lj}j({3,4,5,7,8,9,10,12,13,14,15},那么删除所述没有用到的前导得到那么L′0通的过删除它们而更新。这个集合写作L0=∪j∈[1,...15]Lj0.]]>图7C和7e中的序列显示了通过嵌入特性和受控扩展的部分组合特性达到的存储量减少。图7C的序列比较了多维具有多分辨率的矢量量化器第一个量化器是排列码的简单联合,第二个量化器拥有分辨率嵌入特性。
在图7c中-j维数,-Nj维数j的分辨率数,-LDij字典Dji的前导数,-LDj字典DjNj-1的前导数, 存储维度j中所有字典中的无嵌入特性的前导所需的存储量(以字为单位),-jLDj存储维度j中所有字典中的具有嵌入特性的前导所需的存储量。
在图7d中,将这些后面的用于多维量化器,和具有受控扩展部分组合的结构特性的编码器进行了比较。
在图7d中-j维数,-LDj字典DjNj-1的前导数, 维数从1到j,最大分辨率字典的前导数目的总和, 存储这些没有受控扩展部分组合特性的前导所需的存储量,-Lj集合L0j的前导数, 维数k从1到j的集合L0k中的前导数总和, 存储维数从1到j的所有字典的具有受控扩展部分组合特性的前导所需的存储量。
图7e中的序列比较了多分辨率和多维的矢量量化器,第一个量化器是置换码的简单联合,第二个量化器拥有分辨率嵌入特性和受控扩展部分组合的特性。
在图7e中-j维数,-Nj维数j中的分辨率数目, 为分辨率为Nj存储的维数j中没有嵌入特性或受控部分扩展的特性的前导数, 存储维度j中所有字典中没有上述两个特性的前导所需的存储量(以字为单位), 存储维度从1到j中所有字典中没有上述两个特性的前导所需的存储量(以字为单位),Lj集合L0j的前导数, 维数k从1到j的集合L0k中的前导数总和, 存储维度从1到j中所有字典的具有嵌入特性和受控扩展部分组合特性的前导所需的存储量。
在这三个排列中,最后一列显示了存储量减少因子的重要性,仅嵌入特性就能在维数3中通过一个大于3的因子来减少存储量,在维数7中通过一个大于5的因子来减少存储量,在维数15中通过一个大于7的因子来减少存储量。由于嵌入特性的优点,我们仅存储DjNj-1(即Lj的前导)中的前导,而不需要对维数j中的分辨率集合,存储Dji所有的前导。附加的受控扩展部分组合特性使得存储量的进一步减少成为可能,如图7d中最后一列所示。这个特性带来的额外的节省通过维数4中大于1.5、维数8中大于3、维数15中大于7的因子来体现。
如图7e所示,至于置换码的简单联合简单构成的量化器,利用具有分辨率嵌入特性和受控扩展部分组合的特性的量化器通过维数3中的4、维数7中的13和大于11的维数中大于35的因子来减少存储量。
利用受控扩展部分组合的特性,仅需要存储L0的前导,而{Lj}的前导可以通过查找从Lj前导的索引到L0前导的索引的对应表格来获得。
我们现在介绍如何有效地实现矢量量化器。
为了实现一个j维,分辨率为ri的矢量量化器,必须解决如下三个问题-在Dji中查找到与输入矢量最接近的邻居,-查找Dji的码矢量的索引,-相反地,基于码矢量的索引查找Dji的码矢量。
考虑到指数化,已经存在许多方法来索引字典的码矢量,即II型的置换码组合。实施例中采用的编号方式是从Gosset格子的球形码中获得的灵感。
对于任一维j(j∈{3,4,5,7,8,9,10,12,13,14,15}),DjNj-1的每个码矢量通过它的置换码的偏移特性来索引,二进制的索引给出了它的符号和它在置换码中的阶数。置换码的偏移量是DjNj-1中该置换码前面的置换码的基数的总和。在置换码的编码公式中,我们选择了所谓的Schalkwijk公式。
除了DjNj-1的中码矢量的传统标号外,我们使用了从Lj前导的索引到L0前导的索引一个对应表格,其中存储了L0的前导,这样L0的索引获得了很大的自由度。例如,通过增加维数来对非零整数元素的这些前导进行分类。Lj的前导xj的索引mj与L0的前导xj′的索引lm关联在一起。在这个索引lm的基础上,我们重新得到前导xj′的维数j’和前导本身。通过插入(j-j’)个零点作为xj′的最后元素,重新得到前导xj。
图7f中的序列给出了L0的最先23个前导。通过指出扩展维数j′(j′≤j)L0j′的前导xj′来得到每个前导x3,图7g中的序列给出维数3中的字典的置换码的前导。顺便指出,当j=j’时,xj′=x3。
在图7f中-lL0中前导的索引(从516个中),-j维数,-lj在L0j前导中的索引。
在图7g中-m3前导x3在D3N3中23个前导中的索引,-i前导所属的最小分辨率的字典的索引(即x3_D3i-1和x3∈D3i),-jr1字典D3i的每个矢量的比率,-j′L0的前导xj′的维数(非零元素的个数),-lmL0的516个前导外的xj′的索引。
下文描述的是一般情况下的编码和译码算法,我们后面还可以发现增加了额外的结构上的限制(置换码联合)后更具优越性的情况。
首先指出的是,优先利用特别是由受控扩展的属性产生的字典结构,受控扩展属性可以用来降低最近邻位搜索的算法的复杂度。特别的是,同样插入原则的码矢量可以组合在一起。例如,在后面将会详述的欧几里德距离失真准则下,在维数j-n的字典Di′j-n的L个码矢量xlj-n基础上,通过同样的插入规则R(n,{(im,pm)}m=0,n-1)得到字典Dji中的j维的L个码矢量{xjl,1=0,1,…,L-1},码矢量xjl同输入矢量yDist(y,xlj)=Σk-0j-1(yk-xk,lj)2]]>的L个距离的计算可以通过以下的方式加速首先计算 然后计算码矢量xlj-n到维数为(j-n)的矢量y′的L个距离,矢量y′xjl的L距离将n个元素ypmDist(y′,xlj-n)=Σk=0j-n-l(y′k-xk,lj-n)2]]>增加到y获得。
像上文指出的,对于每个维数,仅需存储最大分辨率的字典的一部分,其他的码矢量可以在低维最大分辨率的字典的元素和插入规则的基础上推导出来。
下文给出了一个具体例子,在该例子中,插入了使用了基于本发明的字典创建方法的编码/解码压缩方案。
首先,对于被考虑的所有的维数j,本发明并不存储所有的字典{Dj1}i=1,…,Nj的集合,仅仅存储一个 和相关的对应表格。这些表格使在索引的基础上重构一个DjNj的代码矢量成为可能。就像上文描述的那样,有很多方法来描述这些表格进而存储它们。比如说,对于所有要考虑的j维数,我们可以给各自的索引mj(一个DjNj的代码矢量xj)列出三个整数标量值j′,m′和lr其中,lr是插入规则的数量,通过应用于 集合的索引中的元素的受控扩展的局部体系,插入规则使重构xj成为可能。这样,相应的表格只需要存储 个字(Tij是字典D1j的大小)。至于关心的多分辨率和维数的矢量量化器的字典正确存储问题,当一个矢量量化器没有具有精度嵌入和扩展局部体系这2个结构特点时,就需要 个字。
而具有这2个结构特点的矢量量化器的字典的存储仅仅需要 个字,其中 是集合DNj′j‾(TNj′j‾≤TjNj)]]>的大小。尽管一般而言, 远比TjNj小,因为会试图去选取关于集合 的D′jNj集合。一些量化存储的例子会在下面的一个例子给出。
搜索一个输入矢量y=(y0,…,yk,…,yj-1)在Dji中最近项xj的编码算法优选地含有以下几步骤步骤Co0)含有初始步骤,其中
对每个索引mj∈dmin=VALMAX;mmin=-1;mj=0下一个步骤Co1)含有索引mj的编码矢量xj的重构,其优选地执行如下a)在和DjNj相关的对应表格中读取三个索引j′,m′和lr。
b)在集合 中读取维数j’和索引m’的矢量c)按照索引lr的插入规则,通过将受控扩展的局部体系的特性使用到xj′中,对编码矢量xj′进行重构。
步骤Co2)按照所选的失真准则计算y和xj之间的距离d(y,xj)。
下面,在步骤CO3)和CO4)中重复操作CO1)和CO2)以识别与输入矢量的距离最小的矢量的索引。
这样如果d(y,xj)<dmin那么dmin=d(y,xj),mmin=mj之后,增加mjmj=mj+1最后,提供一个测试如果mj<Tji就跳转到步骤CO1),否则就停止。
在步骤CO5)的最后,确定离编码矢量方式输入的矢量y最近项,该最近项的索引mmin和输入矢量y的距离dmin最小。
这样,运算在步骤Co5)之后结束。
Dji中y的最近项xj是索引mmin的编码矢量。
在索引的基础上,步骤Co1)提供了搜索Dji的一个编码矢量的译码运算。特别指出,解码过程包含步骤Co1)中完全重构编码矢量xj(c操作),不考虑待译码的索引。
另一方面,编码时,重构是局部的。特别是如果步骤Co2)中距离计算中失真准则被分解成2组时,局部重构有时会出现。
此时,变型标准分为以下2组——一组只依靠插入规则的索引——另一组是编码矢量xj′
比如说,在欧几里德距离失真准则的情况下,在初始化步骤C0o)步骤中,为每个使用在Dji中的lr索引的插入规则,对距离dlr=Σm=0j-j′-1(ypm-aim)2]]>(索引lr的插入规则含有j-j′个成分,每个成分包含在位置pm插入aim的信息,m范围从0到j-j′-1)进行预运算。输入矢量y和步骤CO2)中矢量xj(j′,m′,lr)的距离的计算即计算距离d(y′,xj′)=Σk=0j′-1(y′k-xkj′)2,]]>其中——矢量xj′是步骤co1)中操作b)中得到的矢量。
——在y上增加了j-j’个ypm组分维数j’的矢量y′——距离d(y,xj)通过简单的加法d(y,xj)=dlr+d(y′,xj′)即可得到。
这就是我们在上文中定义它的原因,在编码过程中,重构一个比维数j低的维数j’的编码矢量xj′。(维数j可以是一个完全重构的编码矢量xj的维数)。
此外,如果一个矢量xj′在编码矢量Dij的组分中插入数次(不同的插入规则)。我们可以在初始化步骤中进行预计算d(y′,xj′)。所以可以发现,编码过程中存储(暂时的)/复杂度之间的折中可以按照应用的需要来做修改。
同样,指数化过程中存储(暂时的)/复杂度之间的折中可以按照应用的需要来做修改。
对于编码,一个上述的置换码合并的额外限制的情况下,最相邻项搜索算法,对于8维的规则高斯格的球形代码,使用II型置换码合并,通过简单化可以很容易地推广到这些字典里。
这样一个搜索算法特别描述成如下″Algorithme de QuantificationVectorielle Algébrique Sphérique par le Réseau de Gosset E8″,C.Lamblin,J.P.Adoul,Annales Des Télécommunications,no 3-4,1988[“通过E8高斯格″的球形代数矢量量化算法“]通过一个II型置换码的“自由度”标记,提供一个最初的简化。这是奇数个组分的高斯格的置换码所不具备的。在考虑了每个用来做标量乘积运算的前导非零项的数量后,一个后续的简化被提供。这是由编码算法的受控扩展的局部体系的特性带来的结构的应用实例。一个后续的改动将L0的前导存储成整数格式,所以使得纠正因数的标量积的计算与那些带严格正整数组分的前导的欧几里德规范的反转相同。
下文描述了一个实例,在这个例子里面,作为本发明中两个结构特性的补充,字典Dij中j维的输入矢量y的最近的相邻项的搜索使用上述结构作为置换码的一个合集。
总共三个额外的步骤被提供-用来确定绝对前导 和待编码矢量的符号矢量ε的两个预步骤(步骤CP1)和CP2))(在步骤Co1)的重建之前)。
——一个用来计算字典中最近项秩的最后步骤(步骤CP5))这个,在Dij的编码矢量Tij中(比如mj∈
)上述的搜索不再被执行。仅仅在Dij的LDji的前导的集合Lj(i),才执行搜索。(即为mj∈
的索引mj步骤CO1′)索引mj的前导的重构a)在联系了Lj和L0的前导的对应表格中,读取与Lj的索引mj的前导相关的前导xj′的索引Im,然后确定前导xj′的维数j’和读取纠正因数α(通过下列公式1α=Σk=0j′-1(xkj′)2).]]>b)在维数为j′和索引为lm的前导xj′的集合L0中进行读取。
步骤CO2)’计算在 和xj′间的修正过的标量积ps(|y~|,xj′)=αΣk=0j′-1(|y~k|·xkj′)]]>下一步骤重复操作C01’)和Co2’)来识别代码前导的索引,该前导矢量修正过的标量积,输入矢量的绝对前导是最大的。这样如果ps(|y~|,xj′)>psmax]]>那么psmax=ps(|y~|,xj′)]]>而且mmax=mj接着,我们增加了mjmj=mj+1结束测试如果mj<LDij]]>跳转到步骤CO1′),否则停止,在步骤结束时,在步骤CP3)中置换码mmax的数量、步骤CP2)中执行的置换的秩和在步骤CP1)中确定的符号矢量的基础上,通过一个置换码的合集的指数化处理,计算Dji中y的最近相邻项的索引。
应该指出,步骤CP2)可以被加速。特别是,如果nij是Lj(i)前导非零项的最大数量,它足够用来搜索|y|中最大组分nij。步骤CP3)中有几个变量依赖于存储和复杂度可以合理地折中。为了最小化计算量,我们可以对所有的L0的前导简单地将他们的维数j’和纠正因数列成表。在读对应表格时,上述步骤CP3)中提到的维数j’被确定。相反的,如果希望降低存储量,就在索引lm的基础上进行确定。同样,纠正因数的计算可在对前导xj′读取后进行。
这样,使用一个结构作为一个置换码的合集,在字典D1j中搜索j维的输入矢量Y的最近相邻项的算法,总结如下CP1)从输入矢量y=(y0,…,yk,…,yj-1)得到绝对值矢量|y|=(|y0|,…,|yk|,…,|yj-1|)和他的符号矢量ε=(ε0,…,εk,…,εj-1),其中,如果yk≥0,∈k=1,否则,∈k=-1。
CP2),通过按降序排列其中的组分,搜索|y|的前导
CP3)在Dji前导的集合Lj(i)中搜索 的最小相邻项。(实际上是从前Mji个前导中进行搜索,Mji是Dji的置换码的数量)。就像上面指出的,该步骤相当于搜索L0的前导。在L0的Mji个前导的列表中,L0的前导使修正过的标量积最大化,所述列表可通过对应表格在Lj的索引到L0的索引中推出。如果L0的前导xj′的维数是j′(j′≤j),含 的标量积的计算仅对 的前j′个组分的进行运算,然后通过xj′的欧几里德标准的反转来倍增。
CP4)在前面步骤中的置换码的个数基础上通过置换码的合集的索引的处理,计算Dij内Y的最近相邻项的秩的索引,在步骤CP2)中置换码的秩和步骤CP1)中符号矢量。
简单的说,步骤CP2)可以被加速。特别是,如果nij是前导数列Lj(i)的非零组分的最大数量,可以满足|y|的第nij大的组分的搜索。
我们描述一个解码算法,通常意义上,不一定要使用一个上述置换码集合指数化表现。解码算法的优先级采用如下方式在收到的索引mj的基础上,来确定这个与编码矢量相对应的索引是否属于 或者D′Nj-1j。
第一种情况下,mj与一个 的唯一索引相关联,编码矢量通过对对应表格的简单读取得到。
在第二种情况下,mj指向一个元素 (j′<j)和一个插入规则。
xjmj是否属于D′jNj-1或者他的补集有很多方式确定。比如,可以给每个索引使用二进制标记。对于每个分辨率ri,同样可以将Dji中补集Dji-1的元素编入索引。以属于D′ji的受控扩展得到的元素开始,跟着是属于 的自由元素。D′jNj-1或者 中的成员之后通过简单的测试被采用。同样,插入规则可以明确是否编入索引。
比如,在下面描述的具体例子中,插入规则在索引的基础上得到。可以理解,作为应用软件需求的一个功能,存储量/指数化复杂度的这种可以被修改。
我们回到被置换码合集定义的额外限制的情况优选地,这个译码算法从下面文件得到灵感″Algorithme de Quantification Vectorielle Algébrique Sphérique par leRéseau de Gosset E8″,C.Lamblin,J.P.Adoul,Annales DesTélécommunications,No.3-4,1988,额外使用从前导数Lj到前导数L0的对应表格。
基于Dji中的编码矢量的索引,可以确定Lj(i)中的前导的索引、其置换码中的秩以及其非零组分的符号。对应表格给出了L0中的前导的索引,之后通过简单地对一个存储于存储器中的表格以及其归一化因数进行读取来获得。该归一化因数使得对解码编码矢量的归一化成为可能。
下面是本发明另一个经典的实施例。这个例子同样基于TDAC型转换的编码器,但是与上面给出的使用在宽波段的TDAC编码器对数字音频信号的编码的采样率是16KHZ的情况不同,它的采样率是32KHZ,带宽15KHZ(调频频带)。
这个编码器的原理与使用在16KHZ的TDAC宽波段编码器类似。音频信号的波段被限制在16KHZ采样率是32KHZ,同样被分割成20ms帧。宽波段的分隔与宽波段TDAC编码器表现的分隔一样,使得MDCT转换之后得到了640个参数。频谱被分割成52个不等宽的部分。对宽波段的分割与宽带TDAC编码器所做相同。
图8a中的列表,给出了的分割的波段和参数的矢量的维数。(对应第三列中指出的系数的数量)频谱包络线的量化同样使用哈夫曼编码,所保留的可变比率被动态分配给基于频谱包络线的去量化的参数。
MDCT参数的量化使用按照本发明架构的字典,如前面所述的情况,字典作为置换码集合被架构。对于维数是15以下的,矢量量化器与宽波段的相同。这样,我们把字典构建成16、17、18、19、20、24维。对于维数是24时,架构结合了笛卡尔积结构。24个参数的上波段被分成2个12维的矢量,一个由偶数参数构成,一个由奇数参数构成。12维的矢量量化器已经有被使用了。
图8b中的列表给出了不同分辨率的数量和在维数为1到24时的值。
本发明提供了一个有效的方法来解决可变维数和可变比率矢量量化的问题。本发明通过一个矢量量化综合解决了可变分辨率与可变维数的2个问题。其可变维数和可变分辨率的字典具有上文所述的PR和PD两个结构特性。
对于一个指定的维数,字典的插入保证了一方面局部字典由于分辨率的作用简化了,另一方面所需的存储器储量也被显然降低了。因为,所有低分辨率的字典的元素实际上都包含在高分辨率的字典里,所以低维数字典不需要存储。比较按照图1a和图1b中树型架构的矢量量化器。字典插入的选择提供了2个优点由于增加的分辨率的作用,减少了部分字典,降低了存储量。如果需要,他可以允许高分辨率带有少于一个比特的粒度。易化了字典尺寸的选择,该尺寸不一定和2个权相同。如果不同维数和不同分辨率的不同矢量不能通过将以二进制序列排列索引的算法和基于比率量化器的非整数矢量联系起来来排列索引的来每帧量化时,良好的分辨率的粒度特别有优势。
字典隐藏的PR特性意味着仅需要存储最大分辨率的字典。
依靠第二个特性PD,存储量的量可以进一步降低。特别是,高分辨率的字典的部分元素不需要被存储。因为它们可以从高分辨率的字典的元素中推导出来。但是对于较低的维数,需要有预插入规则{Rm}。这样架构的元素比例可以很快被修改,使存储量可以很好地修改。
PR和PD两个特性产生的结构,使减少所需的存储量成为可能。通过在字典上增加额外的结构上的限制,可以更加明显。这些限制例如已经在上文介绍部分提到在先技术中提到。
首选的实施例中,使用了球形矢量量化器,上文所述的恰当结合了笛卡儿积的置换码的合集。
与代数矢量量化器比较,两个特性推导出的字典的结构提供了很好的设计的弹性,同时考虑到了维数和分辨率的选择。进一步,这些矢量量化器采用了待编码的统计量,这样就避免了在矢量量化中必须的“矢量压缩扩展”这个棘手的设计问题。这样待编码的源的分布就一致了。
权利要求
1一种包含了可变维数的编码矢量的字典,该字典将在一个设备中用于利用定义可变分辨率的可变比率的矢量量化来进行数字信号的压缩编码和/或译码,其特征在于,该字典包括—一方面,对于一个给定维数,包括一个内嵌的增加分辨率的数字字典;—另一方面,对于一个给定维数的情况,包括一个下列的合并一个第一组,该第一组包括通过按照一个预定插入规则的有限集合来将从一个有限实数组中取出的元素插入较低维数的字典的编码矢量中所构成的编码矢量;一个第二组,该第二组包括可以不是通过按照所述插入规则的集合来将从所述有限实数组中选出的元素插入在低维数的编码矢量中所构成的编码矢量。
2.根据权利要求1所述的字典,其特征在于,所述插入规则集是基于一些基本规则来表示,这些基本规则包括将一个有限实数组中单个元素插入到一个矢量的给定位置上。
3.根据权利要求2所述的字典,其特征在于,每个基本规则是被一对2个代表性的正整数定义—该元素在所述有限实数组中的秩;和—一个插入位置。
4.一种用于生成根据权利要求1~3中任意一项所述的字典的方法,该字典包含了可变维数的编码矢量,并该字典将在一个设备中用于利用定义可变分辨率的可变比率的矢量量化来进行数字信号的压缩编码和/或译码,其中,对于给定维数,保卡a)一个第一组,该第一组包括通过按照一个预定插入/删除规则的有限集合来由在低维数元素/高维数元素的字典的编码矢量中插入/删除从一组有限实数中提取的元素所生成的编码矢量;b)对所述给定维数所构建的一个第一中间字典,该第一中间字典包括至少一个所述第一组和c)为使所述字典能够适于具有至少一个给定的分辨率的用途,在中间字典的基础上,通过增加/减少分辨率的字典的嵌入/简化,来构建一个第二最终字典,所述增加分辨率的字典内嵌到从最小分辨率的字典到最高分辨率的字典。
5.根据权利要求4所述的方法,其特征在于,对于一个给定的维数Na0)获得一个原始维数n的原始字典,n小于给定的维数N;a1)一个第一组,该第一组包括通过按照一个预定插入规则的有限集合来由在所述原始字典的编码矢量中插入从一组有限实数中提取的元素来生成的维数为n+i的编码矢量;a2,一个包括维数n+i的编码矢量的第二组,其中的编码矢量可以不是通过在原始字典的编码矢量中插入按照所述插入规则的有限集合由所述有限实数组中提取的元素来生成;a3,构建一个维数n+i的中间字典,其包括所述第一组和所述第二组的合并,中间字典作为原始字典,直至所述给定维数N,步骤a1到步骤a3要至多重复N-n-1次。
6.根据权利要求4所述的方法,其特征在于,对于一个给定的维数Na’0)构建一个原始维数n的原始字典,其中,n大于所述给定维数N;a’1)一个维数为n-i的第一组,通过按照预先确定的删除规则的有限集合从n维字典里选择和提取的可能的编码矢量构成;a’2提供一个第二组,包含n-i维的编码矢量,所述编码矢量可以不是通过从所述原始字典的编码矢量中按照所述删除规则删除所述有限组的元素来获得的;a’3)构建一个n-i维的包括所述的第一组和所述第二组的合并的中间字典,重复执行步骤a’1到a’3至多n-N-1次,直至作为初始字典的中间字典维数上升至所述给定维数N。
7.根据权利要求5或6所述的方法,其特征在于,其中N个维度分别是1到N的连续的字典,是在n维的初始字典的基础上,通过在维度为n+1到N的过程中重复执行a1)到a3),以及在维数为n-1到1的过程中重复执行a’1)到a’3)来获得的。
8.根据权利要求4-7中任一项所述的方法,其特征在于,其中所述的插入/删除规则是基于下述基本原则来表示所述基本原则包括将一个有限实数组中的单个元素作为一个组分插入在一个矢量的给定位置上。
9.根据权利要求8所述的方法,其特征在于,其中每个基本原则通过两个正整数定义,分别代表——所述有限实数组中的元素的秩,——插入或者删除的位置。
10.根据权利要求4-9中任一项所述的方法,其特征在于,其中所述有限组和所述插入/删除规则集合是在通过对待量化的源进行分析以构建字典之前预先定义的。
11.根据权利要求10所述的方法,其特征在于其中所述的源被一个学习序列模拟,所述有限组和所述插入/删除规则集合的定义受对所述源的统计分析影响。
12.根据权利要求10或11所述的方法,其特征在于,其中所述有限组通过对源的单空间概率密度的估计来选择。
13.根据权利要求4-9中任一项所述的方法,其特征在于,在通过嵌入和简化一组对应连续分辨率的字典来构建字典之后,定义所述有限组和所述插入/删除规则集合,接着,对这样构建的字典进行统计性分析。
14.根据权利要求10或权利要求13所述的方法,其特征在于,——通过分析学习序列,选择一个第一组和插入/删除规则的一个第一集合,以构建一个或多个中间字典;——所述第一组和/或所述插入/删除规则的第一集合中的至少一部分在对所述一个或多个中间字典的后续分析中被更新;——组成所述一个或多个中间字典的编码矢量组中的至少一部分也被更新。
15.根据权利要求4-14中任一项所述的方法,其特征在于,其中步骤c)由以下几个操作构成c0)构建一个原始分辨率rn的原始字典,rn比给定的分辨率rN更低;c1)在原始字典的基础上,一个比原始分辨率rn还高的rn+1的分辨率的中间字典被构建;c2)重复c1的操作直到达到给定的分辨率rN。
16.根据权利要求15所述的方法,其特征在于对于每次的c1操作,都提供了一个有阶层和质心的结构,其中,至少属于比当前分辨率ri高的分辨率的字典的质心被重新计算并更新。
17.根据权利要求16所述的方法,其特征在于,仅当所有较低分辨率的字典的总失真从一次更新到下次更新的过程中减少了,比当前分辨率ri低的分辨率的字典的质心才被更新。
18.根据权利要求4-14中任一项所述的方法,其特征在于,步骤c)包括以下操作c’0)构建一个比所述给定分辨率rN高的原始分辨率rn的原始字典;c’1)在原始字典的基础上,通过将一个原始字典按照一个预先确定的标准划分成几个规则的子集,构建一个比初始分辨率rn低的分辨率为rn-1的中间字典;c’2)重复操作c’1直到达到给定的分辨率rN。
19.如权利要求18所述的方法,其特征在于,所述的预先确定的标准提取自子集的主干,一个学习序列中的子集的调用,所述子集对全失真的贡献,或者优选地,减少失真。
20.根据权利要求18或19所述的方法,其特征在于,所述分割至少使用了部分所述插入/删除规则。
21.根据权利要求15或18所述的方法,其特征在于,在中间分辨率rn的原始字典的基础上,在分辨率从rn+1增加到rn的过程中重复步骤c1,以及在分辨率从rn-1减到r1的过程中重复步骤c’1,得到分辨率分别为r1到rN的N个连续的字典。
22.根据权利要求4-21中任一项所述的方法,其特征在于为了使所述字典适用于编码矢量的一个给定维数N,一方面是a)和b)步骤,另一方面是c)步骤,被全部颠覆—基于一个分辨率为rn维数为N’的原始字典,通过对分辨率增加/减少的字典进行插入/简化,以构建一个维数为N’而分辨率为更高或更低的rN的第一中间字典,以充分获得所述第一中间字典的分辨率;—在步骤a)中,为得到给定的维数N,构建一个第一组,其中包括通过在维数低于/高于所述给定维数N的维数为N’的第一中间字典的编码矢量中,插入/删除根据预先确定的插入/删除规则的有限集合从一个有限实数组中提取的元素所生成的编码矢量;—在步骤b)中,在可能的确定分辨率rN的步骤后,为所述维数N构建一个至少包括所述第一组的第二最后字典。
23.根据权利要求4-22中任一项所述的方法,其特征在于,被每个索引(lr)分别标识的所述插入/删除规则的集合被存储在存储器中,对于一个给定的维数——所述的第二组可能不是由通过按照插入/删除规则对比给定维数低/高的编码矢量进行插入/删除操作所生成的编码矢量组成的;——利用至少一个对应表格,通过使用插入/删除规则集的索引和用来标识所述第二组中的元素的索引可以重新构建任何一个给定维数的字典的代码矢量;因此,通过简单地存储所述的第二组的元素和到达相关元素和相应插入/删除规则的对应表格中的链接,可以避免存储给定维数的全部字典。
24.如权利要求23所述的方法,其特征在于,这个相应表格先前被规范化了,对于给定了维数(j)字典(Djnj)中的每个编码矢量(xj)的各自的索引(mj),可以在当前维数(j’)的第二组的当前索引(m’)的元素基础上,通过3个整数标量值表示——一个所述第二组的当前维数(j’)——一个第二组的元素的当前索引(m’)——一个插入/删除规则索引(lr)所述插入/删除规则至少可以用于通过对所述当前维数j’的当前索引m’的元素的插入/删除来重新构建所述给定维数的字典(DJnj)的编码矢量(xj)。
25.一种根据权利要求23或24所述的方法的得到的字典的应用,其特征在于,在数字信号的编码/译码的压缩中,通过不同比率矢量量化定义一个可变分辨率,搜索编码矢量(xj),(xj)是输入矢量|y|=(|y0|,…,|yk|,…,|yj-1|)在给定维数(j)的字典(Dij)中的最近相邻项,包括下列步骤CO1)对于所述的要检索的编码矢量的一个当前索引(mj),至少通过对相应表格中的索引(j’,m’,lr)的预读取,重构至少一部分与所述的当前索引(mJ)相符合的索引(m’)的编码矢量,这使得所述字典被表示成为可能;CO2)至少在编码上,输入矢量和编码矢量间距离的计算在CO1)步骤中重新进行;CO3)至少在编码上,为所述字典中的所有索引,步骤CO1)和CO2)如此往复;CO4)至少在编码上,识别至少部分重组了的编码矢量的索引(mmin),所述编码矢量的距离(dmin)在一个迭代步骤CO2)中被计算过,其输入矢量是最小的;CO5)至少在解码中,作为编码矢量(xj)的输入矢量(y)的最近的相邻项的确定,其中所述编码矢量的索引在步骤CO4)中被识别。
26.根据权利要求25的应用,其特征在于,至少在编码中,步骤CO1)包括步骤CO11),在相应表格中读取索引,所述索引代表了到所述的第二组和到插入规则的链接的索引,这些索引包括——一个所述第二组的一个当前维数的索引;——一个当前所述子集的元素的索引;——用来在所述元素的基础上用来重构给定维数的字典的编码矢量的合适的插入规则的索引。CO12)在当前的维数标识的子集中进行读取元素,所述元素被它本身的当前的索引识别;在步骤CO13)中,通过对所述的步骤CO12)中读取的元素应用在步骤CO11)中读取的索引所识别的插入/删除规则,来重构所述给定维数的编码矢量。
27.根据权利要求25所述的应用,其特征在于,所述步骤CO1)包含CO11)在包括到所述第二组和到插入规则链接的索引的对应表格中读取索引,包括—一个所述的第二组的子集的一个当前维数的索引;—一个当前所述子集的元素的索引;—用来在所述元素的基础上用来重构给定维数的字典的编码矢量的合适的插入规则的索引;CO12)在由其当前维数标识的子集中,读取由其当前索引标识的元素,在步骤CO2)中,所述距离被计算作为一个失真准则的函数,作为下列的函数——一个插入/删除规则的索引;——当前索引识别的子集的元素;因而有可能通过保留仅用于解码的完全重建,只部分构建步骤CO1)中的给定维数的编码矢量。
28.根据权利要求25-27中任意一项所述方法的使用方法,其特征在于CP1)在输入信号的基础上,生成了一个由绝对值矢量|y|=(|y0|,…,|yk|,…,|yj-1|)和一个符号矢量ε=(ε0,…,εk,…,εJ-1)(其中εk=±1)定义的输入矢量y=(y0,…,yk,…,yj-1);CP2)矢量|y|的组分按递减排列,通过置换,得到一个前导矢量 CP3)前导矢量 的最接近项是从在一个维数为j的字典DJi的前导中确定的;CP4)确定所述字典DJ1中最接近项xj’的秩的索引CP5)一个编码/译码的有效值被使用到输入矢量中,该有效值依赖于所述的在步骤CP4)中确定的索引,在步骤CP2)中确定的所述置换,以及在步骤CP1)中确定的所述符号矢量。
29.根据权利要求25-28中任一项所述的应用,其特征在于,至少所述对应表格被存储在一个编码/译码设备的存储器中。
30.一个存储在处理单元的存储器中,特别是一个计算机或者移动终端中,或者一个可移动存储介质中,与所述处理单元的读取器合作的计算机程序,其特征在于,它包括权利要求4-24中任一项所述的方法的执行指令。
31.一个存储在处理单元的存储器中,特别是一个计算机或者移动终端中,或者在一个可移动的存储介质中,与所述处理单元的读取器合作的计算机程序,其特征在于,包括权利要求25-29中任一项所述的编码/译码压缩的应用执行指令。
全文摘要
本发明涉及数字信号编码或者解码的压缩,特别是通过定义了可变分辨率的矢量量化的方法的数字信号的编码或者解码的压缩,针对这个目的,提供了一个数据字典,该字典包括对于一个给定维数,包括一个内嵌的增加分辨率的数字字典;对于一个给定维数的情况,包括一个下列的合并;一个第一组,该第一组包括通过按照一个预定插入规则(F)的有限集合(A)来将从一个有限实数组中取出的元素插入较低维数的字典的编码矢量中所构成的全体编码矢量(Di’<SP>N</SP>);一个第二组,该第二组包括可以不是通过按照所述插入规则(F1)的集合来将从所述有限实数组中选出的元素插入在低维数的编码矢量中所构成的全体编码矢量(Y’)。
文档编号G10L19/08GK1906855SQ200480041141
公开日2007年1月31日 申请日期2004年1月30日 优先权日2004年1月30日
发明者克洛德·朗布兰, 达维德·维雷特, 巴拉兹斯·科韦西, 多米尼克·马萨卢 申请人:法国电信
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1