编码方法和装置、以及程序的制作方法

文档序号:7514059阅读:289来源:国知局
专利名称:编码方法和装置、以及程序的制作方法
技术领域
本发明涉及在音频、图像等的无损编码中广泛使用的熵编码,并且也涉及用于实现高编码效率的编码方法和设备,并且涉及用于该编码方法和设备的程序。

背景技术
在音频、图像等的无损编码中广泛使用的熵编码,具体而言,Golomb-Rice编码,是高速和简单的技术,即,可以仅仅使用诸如移位计算和比特屏蔽计算的容易的计算来执行所述熵编码。以下述方式来设计这种方法在特定的比特位置独立地划分信号,对高位比特进行可变长度编码,并且对低位比特进行固定长度编码。对于可变长度编码,经常使用一种方法,其中,由高位比特表示的数值与编码的字长度成比例(参见例如日本未审查专利申请公开第2006-140772号)。


发明内容
在如上所述的Golomb-Rice编码中,一般,基于信号的平均幅度来确定执行划分的比特位置,并且使其适合于所述信号的分布。但是,因为比特位置处于整数数值,因此,对于实际分布而言,多个过量比特被分配到高位比特或者低位比特,结果导致降低了编码效率的风险。
期望提供一种能够改善编码效率的编码方法和设备以及用于该编码方法和设备的程序。
基于本发明的实施例,提供了一种编码方法,其用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码方法包括以下步骤导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;并且执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
基于本发明的另一实施例,提供了一种编码方法,其用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码方法包括以下步骤导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;并且执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
基于本发明的另一实施例,提供了一种编码设备,其用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码设备包括导出部件,用于导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;获得部件,用于获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;以及编码部件,用于执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
基于本发明的另一实施例,提供了一种编码设备,其用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码设备包括导出部件,用于导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;获得部件,用于获得通过使用所述参考整数I来除由比特串表示的数值而确定的商和余数;以及编码部件,用于执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
基于本发明的另一实施例,提供了一种程序,用于使得计算机执行下述处理在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述处理包括步骤导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;获得通过使用所述参考整数I来除由比特串表示的数值而确定的商和余数;并且执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
基于本发明的另一实施例,提供了一种程序,其用于使得计算机执行下述处理在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述处理包括步骤导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;并且执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
基于本发明的另一实施例,提供了一种用于解码代码字的解码方法,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码方法包括以下步骤从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,并且在所述组合余数中组合了对应于所述商的余数;基于比特数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;基于所述参考整数I将所述组合余数划分为两个余数;并且通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
基于本发明的另一实施例,提供了一种用于解码代码字的解码方法,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码方法包括以下步骤从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数内组合了对应于所述商的余数;基于比特的数量x(x=m/n,m是自然数)来导出所述参考整数I;基于所述参考整数I将所述组合余数划分为n个余数;并且通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
基于本发明的另一实施例,提供了一种用于解码代码字的解码设备,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码设备包括解码部件,用于从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;导出部件,用于基于比特的数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;余数划分部件,用于基于所述参考整数I将所述组合余数划分为两个余数;以及产生部件,用于通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
基于本发明的另一实施例,提供了一种用于解码代码字的解码设备,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码设备包括解码部件,用于从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;导出部件,用于基于比特的数量x(x=m/n,m是大于等于0的整数)来导出所述参考整数I;余数划分部件,用于基于所述参考整数I将所述组合余数划分为n个余数;以及产生部件,用于通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
基于本发明的另一实施例,提供了一种程序,用于使得计算机执行下述处理解码代码字,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述处理包括以下步骤从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;基于比特数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;基于所述参考整数I将所述组合余数划分为两个余数;并且通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
基于本发明的另一实施例,提供了一种程序,用于使得计算机执行下述处理解码代码字,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述处理包括以下步骤从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;基于比特数量x(x=m/n,m是大于等于0的整数)来导出所述参考整数I;基于所述参考整数I将所述组合余数划分为n个余数;并且通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
基于本发明的实施例,通过实际上将离开比特串的最低有效比特的比特位置x设置为m/n使得细分所述比特串,相对于信号的分布,有可能向高位比特或者低位比特分配适当数量的比特,使得有可能改善编码效率。



图1是示出了编码器的配置的框图; 图2是示出了熵编码器的配置的框图; 图3是示出了熵编码器的处理的流程图; 图4是示出了解码器的配置的框图; 图5是示出了熵解码器的配置的框图;以及 图6是示出了熵解码器的处理的流程图。

具体实施例方式 下面参考附图来详细说明本发明的具体实施例。意图将本发明主要用于音频和图像等的数字信号经过无损编码的情况。通过实际上将离开最低有效比特的比特位置x设置为m/n(m是大于等于0的整数,n是大于等于2的整数)以便进行细分,相对于信号的分布,向高位比特或者低位比特分配适当数量的比特。在此,首先说明在n=2的情况下的音频信号的编码和解码。接着,将说明n为大于等于3的整数的情况。
编码处理 图1是示出了编码器10的配置的框图。编码器10包括输入端11,向其输入音频信号x[i];短期(short-term)预测单元12,用于基于短期预测系数αp从接近的样本预测当前信号;短期预测系数导出单元13,用于导出短期预测系数αp;加法器14,用于基于来自输入端11的音频信号x[i]和来自短期预测单元12的输出信号而计算预测残差信号r[i];熵编码器15,用于基于比特位置m/2而将所述预测残差信号r[i]转换为代码字Iγ;参考值导出单元16,用于导出离开最低有效比特的比特位置m/2,在该比特位置m/2处将要编码预测残差信号r[i];短期预测系数编码器17,用于将短期预测系数αp转换为代码字Iα;以及多路复用器18,用于多路复用代码字Iγ、参考比特位置m和代码字Iα。
以预定帧长度N为间隔划分的音频信号被输入到输入端11。一般,所述音频信号是这样的信号,即,在该信号中,接近的样本之间的相关性较高。作为由去除该相关性的短期预测单元12和加法器14执行的短期预测处理的结果,获得预测残差信号r[i]。
在此,x[i]表示音频信号,r[i]表示预测残差信号,αp表示短期预测系数,并且P表示短期预测系数的阶。
以下述方式确定短期预测系数αp在短期预测系数导出单元13内去除所述音频信号的短期相关性。对于该计算,使用Levinson-Durbin算法。短期预测系数αp被短期预测系数编码器17转换为代码字Iα,并且被发送到多路复用器18。
参考值导出单元16计算充当编码参考的、预测残差信号r[i]的离开最低有效比特的比特位置m/2。对于这个计算,例如,可以使用表达式(2)。

在表达式(2)中,左侧表示预测残差信号r[i]的平均幅度。参考值导出单元16确定满足这个不等式的最小整数m,并且将其发送到熵编码器15。而且,将比特位置m/2发送到多路复用器18。为了导出m,可以使用另一种方法。
熵编码器15如下所述地基于所述比特位置m/2将预测残差信号r[i]转换为代码字Iγ。将代码字Iγ传送到多路复用器18。
多路复用器18执行代码字的多路复用,并且输出多路复用后的数据。
接着,将参见图2详细说明熵编码器15。图2是示出了熵编码器15的配置的框图。
熵编码器15包括正负符号去除单元21,用于将预测残差信号r[i]转换为不带正负符号的信号y[i];LSB提取单元22,用于提取m的LSB(最低有效比特);开关23,用于按照m的LSB来切换不带正负符号的信号y[i]的输出目的地;信号划分单元(signal dividing unit)24,用于基于比特位置m/2来执行不带正负符号的信号y[i]的移位计算,并且用于将所述信号y[i]划分为高位比特和低位比特;信号除法运算单元(signal dividing-operation unit)25,用于使用接近2m/2的整数I来对于不带正负符号的信号y[i]执行除法运算;参考整数导出单元26,用于导出接近2m/2的整数I;可变-固定长度编码器27,用于将信号划分单元24内的商pi和余数qi、信号除法运算单元25内的商p2i和p2i+1以及余数组合单元28内的余数q2i和q2i+1的组合余数Qi转换为代码字Iγ;以及余数组合单元28,用于将信号除法运算单元25内的所述余数q2i和q2i+1转换为组合余数Qi。
正负符号去除单元21基于表达式(3)将预测残差信号r[i]转换为不带正负符号的信号y[i]。
关于m的值是偶数还是奇数,LSB提取单元22检查最低有效比特(LSB)并且提取它。当m是0时,将其处理为偶数(下文中适用相同处理)。当m是偶数时,开关23被切换为使得不带正负符号的信号y[i]的输出目的地变为信号划分单元24。而且,当m是奇数时,开关23被切换为使得不带正负符号的信号y[i]的输出目的地变为信号除法运算单元25。
(1)当m是偶数时 当m是偶数时,即当比特位置m/2是整数时,不带正负符号的信号y[i]被输入到信号划分单元24。在此,因为表达式(2)的右侧变为2的整数次方,设置m/2=m’,并且使用2m’来除不带正负符号的信号y[i]的值,由此确定商pi和余数qi。实际上,执行信号的除法,使得不带正负符号的信号y[i]被向右移位m’比特,从而确定商pi,并且提取低位的m’比特以获得余数qi。由信号划分单元24获得的商pi和余数qi被输出到可变-固定长度编码器27。

可变-固定长度编码器27执行商pi的可变长度编码,并且使用m’比特来执行余数qi的固定长度编码,从而将它们转换为代码字Iγ。
如上所述,当m是偶数时,对于每个不带正负符号的信号y
确定商pi和余数qi,以便将它们转换为代码字Iγ。
(2)当m是奇数时 当m是奇数时,即当比特位置m/2是小数时,不带正负符号的信号y[i]被输入到信号除法运算单元25。在表达式(2)的右侧,参考整数导出单元26导出不超过

的m次方的整数I。

但是,整数I可以是接近

的m次方的值。
信号除法运算单元25基于表达式(6)通过使用整数I来除不带正负符号的连续信号y[2i]和y[2i+1](i=0...N/2-1),以便获得商p2i和p2i+1以及余数q2i和q2i+1。在表达式(6)的上部和下部,使用同一整数I,但是不必是同一整数。
在表达式(6)内确定的商p2i和p2i+1被输出到可变-固定长度编码器27,并且余数q2i和q2i+1被输出到余数组合单元28。以与当m是偶数时相同的方式对被输出到可变-固定长度编码器27的商p2i和p2i+1进行可变长度编码。
余数组合单元28将两个余数q2i和q2i+1的值组合,以便将其转换为组合余数Qi。考虑到余数的属性,余数q2i和q2i+1不超过整数I。
0≤q2i,q2i+1<I (7) 基于表达式(7),余数q2i和q2i+1被转换为组合余数Qi。
0≤Qi=q2i+I·q2i+1<I2<2m (8) 这意味着可以在m比特内存储组合了余数q2i和q2i+1的组合余数Qi。这个组合余数Qi被输出到可变-固定长度编码器27。
可变-固定长度编码器27执行商p2i和p2i+1的可变长度编码,通过使用m个比特来执行组合余数Qi的固定长度编码,并且产生和输出代码字Iγ。
以如上所述的方式,当比特位置m/2是小数时,基于表达式(6),将不带正负符号的连续信号y[2i]和y[2i+1](i=0...N/2-1)除以整数I,获得商p2i和p2i+1以及余数q2i和q2i+1。将余数q2i和q2i+1的两个值组合并将其转换为组合余数Qi,并且将商p2i和p2i+1以及组合余数Qi转换为代码字Iγ。
接着,将参考图3中的流程图来说明熵编码器15的处理。在步骤S31中,正负符号去除单元21基于上面的表达式(3)将预测残差信号r[i]转换为不带正负符号的信号y[i]。
在步骤32中,LSB提取单元22基于最低有效比特(LSB)确定m的值是偶数还是奇数。当m是偶数,即m是0时,处理进行到步骤S33,在此,LSB提取单元22切换开关23,使得不带正负符号的信号y[i]的输出目的地变为信号划分单元24。而且,当m是奇数,即m是1时,处理进行到步骤S35,在此,LSB提取单元22切换开关23,使得不带正负符号的信号y[i]的输出目的地变为信号除法运算单元25。
当m是偶数时,在步骤S33中,信号划分单元24将比特位置设置为m/2=m’,并且使用2m’来除不带正负符号的信号y[i]的值,以便确定商pi和余数qi(步骤S34),使得所述信号被划分为高位和低位比特。商pi和余数qi被输出到可变-固定长度编码器27。
在步骤S38中,可变-固定长度编码器27执行商pi的可变长度编码,使用m’比特来执行余数qi的固定长度编码,并且将它们转换为代码字Iγ。
而且,当m是奇数时,在步骤S35中,参考整数导出单元26导出整数I,其不超过表达式(2)的右侧中的

的m次方。
在步骤S36中,信号除法运算单元25基于上面的表达式(6)使用整数I来除不带正负符号的连续信号y[2i]和y[2i+1](i=0...N/2-1),由此获得商p2i和p2i+1以及余数q2i和q2i+1。
在步骤S37中,余数组合单元28将两个余数q2i和q2i+1的值组合,并且将它们转换为组合余数Qi。
在步骤S38中,可变-固定长度编码器27执行商p2i和p2i+1的可变长度编码,通过使用m个比特来执行组合余数Qi的固定长度编码,并且产生和输出代码字Iγ。
如上所述,当m是偶数时,将比特位置设置为m/2=m’,并且将不带正负符号的信号y[i]的值除以2m’,以便确定商pi和余数qi。当m是奇数时,使用接近2m/2的整数I来除不带正负符号的连续信号y[2i]和y[2i+1](i=0...N/2-1),并且将两个余数q2i和q2i+1的值组合并将其转换为组合余数Qi,使得有可能设置将比特串划分为1/2单元的比特位置,并且使得有可能改善编码效率。
在信号除法运算单元25内,使用上面的表达式(6)来执行除法。或者,可以将在上面的表达式(5)内所示的整数I的倒数预先形成为表格。结果,可以减少计算的次数。
将更具体地进行说明。由下面的表达式(9)来表示上述的表达式(5)的倒数。可以以表格形式将对应于表达式(9)的值I’和E形成为整数。

当基于表达式(9)来修改表达式(6)时,获得表达式(10)。
如上所述,如果以表格形式将对应于表达式(9)的值I’和E形成为整数,则有可能确定所述值,而不执行除法运算或者余数的计算。一般,当除法变得必要时,计算的次数增加。以如上所述的方式,通过预先存储与整数I的倒数相对应的整数,可以使用乘法,使得有可能减少计算的次数。
此外,通过校正上述的表达式(10),有可能防止由于将表达式(9)形成为整数而导致的影响。像在表达式(7)内那样,余数q2i和q2i+1大于或者等于0,并且小于整数I。在表达式(10)的余数q2i和q2i+1的计算中,存在它们变得大于或者等于整数I的可能性。在此情况下,执行下面的表达式(11)的校正计算。
在此,因为对于2i和2i+1两者执行相同的处理,2i和2i+1被设置为i。对于所述校正计算,当余数qi小于0时,相对于从商pi减去1,将整数I加到余数qi上。当余数qi大于或者等于整数I时,相对于向商pi加1,从余数qi减去整数I。结果,像在表达式(7)内那样,余数q2i和q2i+1可以被设置为大于或者等于0并且小于整数I,由此改善编码效率。
而且,在为m设置阈值M并且m大于阈值M的情况下,即在离开最低有效比特的比特数量x(x=m/2)是小数并且大于预定阈值X(X=M/2)的情况下,可以预先将不带正负符号的信号y[i]划分为低位的(m-M)/2比特ti和比其高的高位比特y’[i]。
ti=y[i]&(2(m-M)/2-1),y′[i]=y[i]>>((m-M)/2) (12) 以这种方式获得的低位比特ti作为(m-M)/2比特长度的数据被发送到多路复用器18,在此,通过在表达式(6)或者表达式(10)内设置m=M,对高位比特y’[i]进行转换处理。结果,不必提供对应于整数I的倒数的值的表格。
解码处理 下面将说明用于解码上述的编码数据的处理。图4是示出了解码器的配置的框图。解码器40包括去多路复用器41,用于去多路复用被多路复用的数据以便将其解码为代码字Iγ、参考比特位置m/2和代码字Iα;熵解码器42,用于基于所述参考比特位置m/2来将代码字Iγ转换为预测残差信号r[i];短期预测系数解码器43,用于将所述代码字Iα转换为短期预测系数αp;加法器44,用于从组合了预测残差信号r[i]和样本之间的相关性的过去音频信号(past audio signal)来计算音频信号x[i];以及短期组合单元45,用于基于所述短期预测系数αp来产生其中组合了接近的样本之间的相关性的音频信号。
将输入到去多路复用器41的多路复用数据去多路复用,以便将其解码为单独的代码字。由去多路复用器41解码的代码字Iγ和比特位置m/2被输入到熵解码器42,以解码出解码残差信号r[i]。
短期预测系数解码器43对短期预测系数的代码字Iα进行解码,产生短期预测系数αp,并且将其发送到短期组合单元45。在加法器44和短期组合单元45中,按照表达式(13)基于短期预测系数αp和过去解码信号而产生音频信号x[i]。
以如上所述的方式,以无损的方式来解码信号变得有可能。
接着,将参考图5来详细说明熵解码器42。图5是示出了熵解码器42的配置的框图。
熵解码器42包括可变-固定长度解码器51,用于确定m是偶数还是奇数,并且用于将代码字Iγ转换为商pi和余数qi或者商p2i和p2i+1与组合余数Qi;信号组合单元52,用于相对于商pi和余数qi、基于m来组合高位比特和低位比特,以便产生不带正负符号的信号y[i];参考整数导出单元53,用于导出接近

的m次方的整数I;余数划分单元54,用于从组合余数Qi中解码出余数q2i和q2i+1;信号多路复用器55,用于从商p2i和p2i+1、余数q2i和q2i+1以及m中解码出不带正负符号的信号y[2i]和y[2i+1];LSB提取单元56,用于提取m的最低有效比特(LSB);开关57,用于按照m的LSB来转换不带正负符号的信号y[i]的输出源;以及正负符号恢复单元58,用于将所述不带正负符号的信号y[i]转换为解码残差信号r[i]。
(1)当m是偶数时 当m是偶数时,即当比特位置m/2是整数时,通过设置m/2=m’,可变-固定长度解码器51将输入代码字Iγ转换为商pi和余数qi。因为m’是整数,因此信号组合单元52对每个样本执行移位操作,以便解码出不带正负符号的信号y[i]。
(2)当m是奇数时 当比特位置m是奇数时,即当比特位置m/2是小数时,可变-固定长度解码器51将输入代码字Iγ转换为商p2i和p2i+1与组合余数Qi。因为m/2是小数,因此对于两个样本一起解码出不带正负符号的信号y[2i]和y[2i+1](i=0...N/2-1)。
参考整数导出单元53基于表达式(15)来确定接近

的m次方的整数I。如果整数I是通过与编码器10的方法相同的方法而确定的,则可以使用另一种方法。

余数划分单元54通过使用下面的表达式(16)来从组合余数Qi中解码出余数q2i和q2i+1。
信号多路复用器55通过使用表达式(17)基于商p2i和p2i+1、余数q2i和q2i+1以及整数I来解码出信号y[2i]和y[2i+1](i=0...N/2-1)。
LSB提取单元56提取m的最低有效比特(LSB),以便确定m是否是偶数。然后,当m是偶数时,LSB提取单元56使开关57连接到上部,使得不带正负符号的信号y[i]的输出源变为信号组合单元52。当m是奇数时,LSB提取单元56使开关57连接到下部,使得不带正负符号的信号y[2i]和y[2i+1](i=0...N/2-1)的输出源变为信号多路复用器55。
正负符号恢复单元58基于表达式(18)将不带正负符号的信号y[i]转换为解码残差信号r[i]。

即,当不带正负符号的信号y[i]的最低有效比特是1时,所述信号被向右移位一个比特,其后,执行比特求反(bit inversion)。当最低有效比特是0时,执行仅仅向右移位一个比特,从而恢复正负符号。
接着,将参考图6所示的流程图来描述熵解码器42的处理。在步骤S61中,可变-固定长度解码器51解码代码字Iγ,并且确定m是偶数还是奇数(步骤S62)。
当m是偶数时,处理进行到步骤S63,在此,将比特位置设置为m/2=m’,并且信号组合单元52组合高位比特和低位比特,以便解码出不带正负符号的信号y[i](步骤S64)。
当m是奇数时,处理进行到步骤S65,在此,参考整数导出单元53导出接近

的m次方的整数I。在步骤S66,余数划分单元54通过使用整数I基于表达式(16)从组合余数Qi中解码出余数q2i和q2i+1。在步骤S67,基于表达式(17)从商p2i和p2i+1、余数q2i和q2i+1以及整数I中解码出信号y[2i]和y[2i+1](i=0...N/2-1)。
在步骤S68,正负符号恢复单元58基于表达式(18)将不带正负符号的信号y[i]转换为解码残差信号r[i]。
以如上所述的方式,当m是偶数时,将比特位置设置为m/2=m’,组合高位比特和低位比特,并且解码出不带正负符号的信号y[i]。当m是奇数时,通过使用整数I,从组合余数Qi中解码出余数q2i和q2i+1,并且从商p2i和p2i+1、余数q2i和q2i+1以及整数I中解码出不带正负符号的信号y[2i]和y[2i+1](i=0...N/2-1),使得有可能执行以1/2单元设置比特位置的解码。
在余数划分单元54内,使用除法。或者,通过将与像在表达式(19)内的整数I的倒数相对应的值I’预先形成为表格,也可以使用乘法。

而且,依据表达式(19)可以将表达式(16)的第一表达式改变为表达式(20)。
而且,因为由表达式(19)表示的值I’被形成为整数,因此当出现误差时,优选的是,执行由下面的表达式(21)表示的校正。
当在编码器内为m设置阈值M并且将不带正负符号的信号y[i]划分为低位(m-M)/2比特ti和比其高的高位比特y’[i]的情况下,如果m大于预定阈值M,则从自去多路复用器41获得的代码字中解码出ti。即,在离开最低有效比特的比特数量x是小数并且大于预定阈值X(X=M/2,M是正奇数)时,通过将比特数量设置为x=X,产生高位比特串y’[i],并且对(m-M)/2比特长度的数据进行固定长度编码,由此产生低位比特串ti。更具体地,在将通过M来替换上述表达式(15)-(17)内的m而确定的结果设置为y’[i]之后,通过使用表达式(22)来解码出y[i]。
一般实施例 在上述的编码方法中,已经描述了n=2的情况,其中,实际上将离开最低有效比特的比特位置设置为m/2。在此,将描述一般编码方法,其中,n超过2。在此情况下,将像在下面的表达式内那样确定m。

然后,在m/n是整数的情况下,像在现有技术中那样执行Gobomb-Rice编码。但是,在m/n是小数的情况下,如下所示地引入整数I。

在此,如下所示地分解不带正负符号的信号y[n·i]和y[n·i+1]...y[n·i+n-1]。
pn·i+k=y[n·i+k]/I,qn·i+k=y[n·i+k]%I (0≤k<n) (25) 而且,从余数qn·i+k确定组合余数Qi。
对于上述情况,当k=0时,将余数qn·i+0带入组合余数Qi,0内,并且在从k=1开始的序列中,将组合余数Qi·k-1乘以I倍,同时加上余数qn·i+k。
另一方面,在解码中,相反,按照下面的表达式来从组合余数Qi确定余数qn·i+k。
以如上所述的方式,通过实际上将离开最低有效比特的比特位置设置为m/n,来将信号细分。因此,相对于信号的分布,有可能向高位比特或者低位比特内分配适当数量的比特,由此使得有可能改善编码效率。
本发明不仅仅限于上述实施例。当然,在本发明的精神和范围内,各种改变是可能的。例如,在上述实施例中,本发明已经被描述为硬件的配置,但是不限于此。可以通过使中央处理单元(CPU)执行计算机程序来实现任何期望的处理。在此情况下,计算机程序可以以被记录在记录介质上的方式来被提供,并且也可以通过经由诸如因特网的传输介质被传送而被提供。
编码的具体示例 接着,下面将通过使用具体示例来说明上述的熵编码方法。在此,当在参考值导出单元16中从输入信号r
确定m=8和m=9的情况下,要对r[2i]=-19和r[2i+1]=7进行编码。
假设表达式(4)和(6)中的商pi在可变-固定长度编码器27内经过可变长度编码,如表1所示的编码表中所示。
表1 编码表 基于表达式(3),将预测残差信号r[2i]和r[2i+1]转换为不带正负符号的信号y[i]。
此处,当m=8时,因为m’=m/2=4时,因此基于表达式(4)来如下所示地划分y[i]。

因此,基于表1,这两个样本的代码字Iγ变为例如下述内容,并且使用总共12比特来表示,其中r[2i]为7比特和r[2i+1]为5比特。
IY=(0b001,0b0101,0b1,0b1110) 而且,当m=9时,因为基于表达式(5)整数I=22是满足的,因此基于表达式(6)来对于y[2i]和y[2i+1]执行除法运算。
而且,基于表达式(8)来确定组合余数Qi。
Qi=15+22·14=323=0b101000011 因此,基于表1,这两个样本的代码字Iγ变为例如下述内容,并且使用总共12比特来表示r[2i]和r[2i+1]。
IY=(0b01,0b1,0b101000011) 解码的具体示例 接着,将说明用于解码上述的、两个样本的代码字的过程。当查看表1的商pi的项目和代码字Iγ的项目时,在所述代码字的1出现之前的0的数量与商pi的值相匹配,并且通过使用该匹配,从代码字确定商pi。
当m=8时,因为在1首次出现之前商p2i的代码字Iγ具有两个比特的0,因此确定商p2i=2,并且通过随后的4个比特来确定余数q2i=5。类似地,在商p2i+1的代码字Iγ中,因为随后紧接着出现1,因此确定商p2i+1=0,并且通过随后的4个比特来确定余数q2i+1=14。然后,基于上述的表达式(17)来解码出y[2i]和y[2i+1]。
而且,当m=9时,因为在1首次出现之前在代码字Iγ内存在1比特的0,因此确定商p2i=1。因为随后紧接着出现1,因此确定商p2i+1=0,并且通过随后的4个比特来确定Qi=323。因为基于表达式(15)I=22,因此基于表达式(16)来解码出余数q2i和q2i+1。
然后,基于表达式(17)来解码出y[i]。
而且,基于表达式(18)来解码出解码残差信号r[2i]=-19和r[2i+1]=7。
在为m设置阈值M的情况下的处理的具体示例 将说明在当阈值M=27时m=29的情况下的编码。此处,当对于解码残差信号r[2·i]=79680和r[2·i+1]=-137735基于表达式(3)而确定不带正负符号的信号时,获得y[2·i]=159360和y[2·i+1]=275469。
基于表达式(5)来确定整数I。

而且,基于上述的表达式(12)来将信号划分为高位比特和低位比特。此处,低位比特是(m-M)/2=1比特。

基于表达式(6)来计算商p2i和p2i+1以及余数q2i和q2i+1。
基于表达式(8)来将组合余数Qi获得为27比特数据。
Qi=q2·i+I·q2·i+1=10170+11585*10299=119324085 以如上所述的方式,确定下面的5个变量。
(p2·i,p2·i+1,Qi,t2·i,t2·i+1)=(6,11,119324085,0,1) 接着,下面说明用于解码所述5个变量的处理。首先,基于从比特流获得的m(=29>M)来确定整数I。

基于表达式(16)从组合余数Qi确定余数q2i和q2i+1。
基于表达式(17)来确定不带正负符号的信号y’[2i]和y’[2i+1]。
基于表达式(22),使用低位比特t2i和t2i+1(在此为1比特)来解码出不带正负符号的信号y[2i]和y[2i+1]。
基于表达式(18)来解码出正负符号,从而基于表达式(18)来获得r[2·i]=79680和r[2·i+1]=-137735。
本发明的应用示例1 本发明可以被应用到用于44kHz、16比特或者96kHz、24比特立体声源的无损压缩技术。在此,验证在应用Golomb-Rice编码的现有技术的情况下和在应用本发明的情况下的压缩效率。
表2示出了其中对于使用44kHz、16比特立体声源测量压缩效率大约10-30秒的结果。基于下面的表达式来定义压缩效率(比率ratio)。
在此,original_file_size是原始声音的文件大小,并且compressed_file_size是压缩文件的大小。示出了所述比率越高,则压缩效率越高。
表2 在所提出的方法和现有技术的方法之间的压缩效率的比较
如表2中所示,通过应用本发明,可以将压缩效率提高0.1%或者更多。作为本发明应用的结果,在解码器的计算次数上的增加大致为在fs=44.1kHz的0.3-0.5MIPS到在fs=96kHz的0.7-1.0MIPS,它们是很小的。
本发明的应用示例2 接着,将验证当应用本发明时的优点的示例。在此,对于由44.1kHz、16比特的N=2048个样本形成的目标信号的特定帧,将验证在下述情况下的可变长度编码和固定长度编码从表达式(2)确定的m在现有技术的Golomb-Rice编码的值内是24(m/2=12),而在所提出的方法内是23(m/2=11.5)。
表3示出了对于2048个样本的商pi而确定的频率分布,对所述2048个样本执行了可变长度编码。在此假定,与Golomb-Rice编码类似,商pi的代码字的比特长度是pi+1比特。
表3 特定帧的可变长度编码的比特数量的比较

当向此添加固定长度编码的比特数量时,因为在现有技术中m/2=12,因此达到3311+2048·12=27887比特。另一方面,在所提出的方法内,因为m/2=11.5,因此达到4061+2048·11.5=27613比特,因此可以在该帧内可以节省274比特(0.84%)。
本领域技术人员应当明白,根据设计要求和其他因素,可以发生各种修改、组合、子组合和替代,只要它们在所附的权利要求或者其等同物的范围内即可。
权利要求
1.一种编码方法,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码方法包括以下步骤
导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;
获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;并且
执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
2.如权利要求1所述的编码方法,其中,在所述获得步骤内,将所述数值乘以与所述参考整数I的倒数相对应的整数。
3.如权利要求2所述的编码方法,其中,在所述获得步骤内,通过使用所述参考整数I来对所述商和所述余数执行校正。
4.如权利要求3所述的编码方法,其中,当比特数量x是小数并且大于预定阈值X(X=M/2,M是正奇数)时,通过将比特数量设置为x=X,对所述高位比特串进行编码,并且通过将所述低位比特串处理为(m-M)/2比特长度的数据来对所述低位比特串进行固定长度编码。
5.如权利要求1所述的编码方法,其中,在所述编码步骤中,基于下面的表达式(1)来组合所述余数,
Qi=q2i+I·q2i+1(1)
其中,Qi表示所述组合余数,并且q2i和q2i+1表示所述两个连续比特串的余数。
6.一种编码方法,用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码方法包括以下步骤
导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;
获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;并且
执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
7.一种编码设备,用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码设备包括
导出部件,用于导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;
获得部件,用于获得通过使用所述参考整数I对由比特串表示的数值执行除法运算而确定的商和余数;以及
编码部件,用于执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
8.一种编码设备,用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码设备包括
导出部件,用于导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;
获得部件,用于获得通过使用所述参考整数I来除由比特串表示的数值而确定的商和余数;以及
编码部件,用于执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
9.一种程序,用于使得计算机执行下述处理在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述处理包括以下步骤
导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;
获得通过使用所述参考整数I来除由比特串表示的数值而确定的商和余数;并且
执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
10.一种程序,用于使得计算机执行下述处理在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述处理包括以下步骤
导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;
获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数;并且
执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
11.一种用于解码代码字的解码方法,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码方法包括以下步骤
从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,并且在所述组合余数中组合了对应于所述商的余数;
基于比特数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;
基于所述参考整数I将所述组合余数划分为两个余数;并且
通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
12.如权利要求11所述的解码方法,其中,在所述余数划分步骤中,将所述组合余数乘以与所述参考整数I的倒数相对应的整数。
13.如权利要求12所述的解码方法,其中,在所述余数划分步骤中,通过使用所述参考整数I来对每个余数执行校正。
14.如权利要求13所述的解码方法,其中,当比特数量x是小数并且大于预定阈值X(X=M/2,M是正奇数)时,通过将比特数量设置为x=X,产生高位比特串,对(m-M)/2比特长度的数据进行固定长度解码,产生低位比特串。
15.如权利要求11所述的解码方法,其中,在所述余数划分步骤中,基于下面的表达式(2)来划分所述组合余数,
其中,Qi表示所述组合余数,并且q2i和q2i+1表示所述两个连续比特串的余数。
16.一种用于解码代码字的解码方法,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码方法包括以下步骤
从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数内组合了对应于所述商的余数;基于比特的数量x(x=m/n,m是自然数)来导出所述参考整数I;
基于比特数量x(x=m/n,m是自然数)来导出所述参考整数I;
基于所述参考整数I将所述组合余数划分为n个余数;并且
通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
17.一种用于解码代码字的解码设备,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码设备包括
解码部件,用于从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;
导出部件,用于基于比特数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;
余数划分部件,用于基于所述参考整数I将所述组合余数划分为两个余数;以及
产生部件,用于通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
18.一种用于解码代码字的解码设备,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码设备包括
解码部件,用于从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;
导出部件,用于基于比特数量x(x=m/n,m是大于等于0的整数)来导出所述参考整数I;
余数划分部件,用于基于所述参考整数I将所述组合余数划分为n个余数;以及
产生部件,用于通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
19.一种程序,用于使得计算机执行下述处理解码代码字,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述处理包括以下步骤
从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;
基于比特数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;
基于所述参考整数I将所述组合余数划分为两个余数;并且
通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
20.一种程序,用于使得计算机执行下述处理解码代码字,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述处理包括以下步骤
从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;
基于比特数量x(x=m/n,m是大于等于0的整数)来导出所述参考整数I;
基于所述参考整数I将所述组合余数划分为n个余数;并且,
通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
21.一种编码设备,用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码设备包括
导出单元,被配置为导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;
获得单元,被配置为获得通过使用所述参考整数I对由比特串表示的数值执行除法运算而确定的商和余数;以及
编码单元,被配置为执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
22.一种编码设备,用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码设备包括
导出单元,被配置为导出接近2x(x=m/n,m是大于等于0的整数,n是大于等于3的整数)的参考整数I;
获得单元,被配置为获得通过使用所述参考整数I来除由比特串表示的数值而确定的商和余数;以及
编码单元,被配置为执行n个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
23.一种用于解码代码字的解码设备,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码设备包括
解码单元,被配置为从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由两个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;
导出单元,被配置为基于比特数量x(x=m/2,m是大于等于0的整数)来导出所述参考整数I;
余数划分单元,被配置为基于所述参考整数I将所述组合余数划分为两个余数;以及
产生单元,被配置为通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
24.一种用于解码代码字的解码设备,在所述代码字中,在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,对所述高位比特串进行了可变长度编码,并且对所述低位比特串进行了固定长度编码,所述解码设备包括
解码单元,被配置为从所述代码字中解码出商和组合余数,所述商是通过使用参考整数I对由n(n是大于等于3的整数)个连续比特串分别表示的数值中的每个数值执行除法运算而获得的,在所述组合余数中组合了对应于所述商的余数;
导出单元,被配置为基于比特数量x(x=m/n,m是大于等于0的整数)来导出所述参考整数I;
余数划分单元,被配置为基于所述参考整数I将所述组合余数划分为n个余数;以及
产生单元,被配置为通过将所述商与所述参考整数I相乘和通过向结果加上对应于所述商的余数来产生比特串。
全文摘要
一种编码方法,用于在与最低有效比特相距x比特的位置处将输入信号的比特串划分为高位比特串和低位比特串,执行所述高位比特串的可变长度编码,并且执行所述低位比特串的固定长度编码,所述编码方法包括以下步骤导出接近2x(x=m/2,m是大于等于0的整数)的参考整数I;获得通过使用所述参考整数I对分别由比特串表示的数值执行除法运算而确定的商和余数并且执行两个连续比特串的商中的每个商的可变长度编码,组合对应于所述商的余数并执行结果的固定长度编码,并且产生代码字。
文档编号H03M7/40GK101420231SQ20081016912
公开日2009年4月29日 申请日期2008年10月27日 优先权日2007年10月25日
发明者前田佑儿 申请人:索尼株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1