CN102460976A - 用于可变长度编码的方法和设备 - Google Patents
用于可变长度编码的方法和设备 Download PDFInfo
- Publication number
- CN102460976A CN102460976A CN2010800299437A CN201080029943A CN102460976A CN 102460976 A CN102460976 A CN 102460976A CN 2010800299437 A CN2010800299437 A CN 2010800299437A CN 201080029943 A CN201080029943 A CN 201080029943A CN 102460976 A CN102460976 A CN 102460976A
- Authority
- CN
- China
- Prior art keywords
- variable
- symbol
- value
- vlc
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
- H03M7/42—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
- H04N19/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本公开涉及的是可变长度编码和解码。可以通过如下操作对符号进行可变长度编码:基于变量的值从一组可变长度码字表中选择可变长度码字表;基于所述符号而从所选择的可变长度码字表中选择码字;通过比较所述符号与所述变量之间的对应关系来更新所述变量的值。如果该比较表明所述变量的值小于所述符号,则递增所述变量的值;否则,如果该比较表明所述变量的值大于所述符号,则递减所述变量的值;否则,不修改所述变量的值。
Description
技术领域
本发明提供了一种用于选择可变长度编码表的方法,一种用于选择可变长度解码表的方法,一种设备,一种编码器以及一种解码器。
背景技术
在使用可能具有不同长度的码字来编码源符号时,源符号将被转换成唯一的码字。这种编码可以被称为可变长度编码(VLC)。这种编码处理被设计为使得利用较短码字表示较大概率符号,以及利用较长码字表示较小概率符号。在传送码字时,与较长码字相比,较短的码字可以用较少比特表示。可变长度编码的一个目标在于:与以这种方式编码符号的状况相比,减少表示这些符号所需要的信息量。换句话说,在将一组符号转换成码字时,与源相比,最终得到的编码表示应该包含较少比特。这组符号可以包括多种信息。例如,其中一组符号可以是由字节组成的文件、诸如视频流或音频流之类的信息流、图像等等。
可变长度码字的设计可以取决于源符号所代表的源的概率统计信息。为了获取一组用于可变长度编码的码字,可以从某些代表性的源材料中收集概率统计信息,并围绕这些统计信息设计码字。这种处理的效果很好,但在很多情况中,统计信息并不固定,其有可能随时间变化,并且具有固定的码字集合未必会产生很好的压缩。为了实现更好的压缩,可变长度码字集合可以不断地局部调适以适应于观察到的源的统计信息。
一种用于执行调适的方法是记录符号频率以及在编码符号时使用该频率来即时限定可变长度码字集合。这种完全调适是一种很复杂的操作,在源符号范围很大的时候尤其如此。在实际的实现中,所执行的是某种形式的次最优调适。例如,编码器可以使用多个预先限定的可变长度码字集合,并且基于局部统计信息估计来选择这其中的一个集合。在另一种实现中,编码器可以逐步调适该集合的码字,由此使得每次只改变集合中的少量单独码字,以使每个编码码字的复杂度全都很低。
对于可变长度码字集合的生成而言,有很多方式可以执行该处理。一种示例的方式是使用霍夫曼方法或是其自适应版本。另一种方法是使用所谓的通用码(例如指数哥伦布变长编码(exp-colomb))来形成可变长度码字集合。通用码字的创建是有规律的,因此,这些码字是很容易解码的。但是,在很多情况下,可能并未实现最优编码处理,并且必须依照符号频率来保持符号的排序。
发明内容
本发明提出了一种通过提供两个或更多可变长度码字表来进行可变长度编码的方法,其中所述码字表中的一个表将被选择以便编码一个符号。通过使用变量来估计例如符号概率分布,基于该变量来选择可变长度码字表,以及在对符号编码之后更新该变量,来实现对所述可变长度码字表的选择。
根据本发明的一个示例实施例,提供了一种用于为符号选择可变长度码字的方法。
根据本发明的第一方面,提供了一种对符号执行可变长度编码的方法,该方法包括:
基于变量的值而从一组可变长度码字表中选择可变长度码字表;
基于所述符号而从所选择的可变长度码字表中选择码字;
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果该比较指示该变量的值小于所述符号,则递增所述变量的值;否则
如果该比较指示变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
根据本发明的第二方面,提供了一种用于对码字执行可编码长度解码的方法,该方法包括:
基于变量的值来从一组可变长度码字表中选择可变长度码字表;
使用所述码字来从所选择的可变长度码字表中找出与所述码字相对应的符号;以及
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果该比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果该比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
根据本发明的第三方面,提供了一种设备,该设备包括:
码字表选择器,被配置成基于变量的值来从一组可变长度码字表中选择可变长度码字表;
码字选择器,被配置成基于符号来从所选择的可变长度码字表中选择码字;
更新元件,被配置成通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果该比较指示所述变量的值小于所述符号,则更新元件被配置成递增所述变量的值;否则
如果该比较指示所述变量的值大于所述符号,则更新元件被配置成递减所述变量的值。
根据本发明的第四方面,提供了一种设备,该设备包括:
码字表选择器,用于根据变量的值来从一组可变长度码字表中选择可变长度码字表;
符号确定器,被配置成从所选择的可变长度码字表中选择与所述码字相对应的符号;
更新元件,用于通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果该比较指示所述变量的值小于所述符号,则更新元件被配置成递增所述变量的值;否则
如果该比较指示所述变量的值大于所述符号,则更新元件被配置成递减所述变量的值。
根据本发明的第五方面,提供了一种存储介质,其中在该存储介质上存储了供编码器使用的计算机可执行程序代码,所述程序代码包括用于执行下列处理的指令:
基于变量的值而从一组可变长度码字表中选择可变长度码字表;
基于所述符号而从所选择的可变长度码字表中选择一个码字;
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果该比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果该比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
根据本发明的第六方面,提供了一种存储介质,其中在该存储介质上存储了供编码器使用的计算机可执行程序代码,所述程序代码包括用于执行下列处理的指令:
基于变量的值来从一组可变长度码字表中选择可变长度码字表;
使用所述码字来从所选择的可变长度码字表中找出与所述码字相对应的符号;以及
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果该比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果该比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
附图说明
图1作为简化框图描述了其中将信息从编码器传送到解码器的系统的示例实施例;
图2作为简化框图描述了根据本发明示例实施例的编码器;
图3作为简化框图描述了根据本发明示例实施例的解码器;
图4作为流程图描述了根据本发明示例实施例的编码方法;
图5作为流程图描述了根据本发明示例实施例的解码方法。
具体实施方式
以下将会更详细地描述图1的系统。由编码器1从源2接收将要编码和传送的信息。举例来说,该信息可以是视频信息、音频信息、静止图像、文本等等。该信息还可以是两个或更多不同类型的信息的组合。于是,在这里可以为每一种类型的信息提供不同的编码器和解码器,或者相同的编码器和/或解码器可以处理不同类型的信息。举例来说,源2可以是摄像机2.1、静照相机2.2、麦克风2.3、能够回放诸如数字多用途光盘(DVD)的设备2.4、存储介质2.5等等。关于信息和源2的上述示例仅仅用于举例说明本发明,而不是限制本发明的范围。来自源2的信息由第一设备8的编码器1进行编码。经过编码的信息可以存储至存储器4和/或由发射器9传送到传输信道15。第二设备10的接收器14可以接收所传送的信息。所述第二设备10包括对接收到的信息进行解码的解码器11。经过解码的信息可以进行后处理,例如将已解码信息存入第二设备的存储器12,在该信息包含视觉信息的情况下用显示器显示该信息,在该信息包含音频信息的情况下将其变换成音频信息等等。
在图2中描述了编码器1的一个示例实施例。编码器1具有用于接收将要传送的信息的输入端1.1。如果该信息是模拟形式的,那么它会由例如模数转换器3转换成数字形式。模数转换器3基于模拟信息形成样本。这些样本代表处于某些时间间隔的模拟信号。但是,该信息有可能已经处于可被编码器处理的形式。因此,模数转换器3未必是必需的。
处于编码器输入端1.1的信息可以被排列成样本帧。每个帧都代表了某个时间间隔的模拟信号。在一个示例实施例中,一个帧可以包括代表20ms周期的输入信号的样本。在另一个实施例中,该帧由代表10ms周期的输入信号的样本组成。此外,其他值在这里也是有可能的。这些样本可以存储在位于编码器1内部或是其外部的样本缓存器4.1中。
在上文中,假设来自源2的信息是视频、音频序列等类型的流传输信息,但是来自源2的信息也可以代表非交错(non-alternating)信息,例如静止图像或数据文件。在这种情况下,信息可以分成更小的部分来进行编码,或者信息也可以按照逐个符号的方式来进行编码。
无论该信息是来自流传输信息源还是来自固定信息源,编码器1都会对这些样本进行编码以便形成码字。在下文中,将会参考图4的流程图以及图2的编码器1来更详细地描述编码处理。此处假设一些统计信息参数可以从将要编码的信息中估计得到。例如,通过使用一些判据,可以知道或者估计出代表信息的符号的概率分布。在本发明中,提供了两个或更多不同的可变长度码字集合,从中可以选择用于待编码的符号的可变长度码字。码字集合可以被认为是形成了不同的可变长度码字表5.1-5.M(VLC表),其中行代表的是符号至码字映射。在本说明书中,可变长度码字表也被称为码字表。在实际应用中有很多实施码字表的可能性。在本说明书中将会在稍后对此进行更详细的论述。
根据本发明示例实施例的编码器1以如下方式执行编码处理。在编码处理的开始时,一些变量被初始化成其初始值。这种处理例如是由编码器的控制器1.4执行的,其中该控制器将一些存储器位置设置成选定状态。这些存储器位置可以处于存储器4中,或者它们也可以处于例如控制器1.4的内部。在图2的示例实施例中,变量被存入控制器1.4的内部寄存器1.4.1。这个初始化阶段是用图4的流程图中的方框401以及图2的初始化部件1.3描述的。
在初始化阶段之后,可以开始对符号的编码处理。控制器1.4指示输入端1.1将一个或多个样本从样本缓存器4.1读入符号形成部件1.2(图4中的方框402)。一个符号可以代表信息的一个样本或是一个以上的样本。例如,三个样本可以形成一个符号,其中该符号形成部件1.2使用来自样本缓存器4.1的三个连续样本来构造一个符号。
在下文中,假设一个符号代表一个样本并且符号只具有几个可能的值。然而,在实际应用中,与以下公开的内容相比,符号可以具有更大的可能值范围。
如果输入编码器1的信息已经是符号形式,则不需要符号形成部件1.2。
该编码处理使用了在编码处理的进行过程中被调适的变量k。在初始化阶段,该变量k可以被设定成如下初始值。
k=K
初始化常数K可以具有反映了预期概率分布的值。
为了对符号进行编码,码字表选择器1.5对来自码字表集合的码字表进行选择(图4中的方框403)。通过使用变量来估计例如符号的概率分布,基于该变量来选择码字表,以及更新变量k,来实现对可变长度码字表的选择。虽然图4的流程图描述的是在对符号进行编码之后更新变量k,但是顺序也可以与此不同。例如,该变量可以在对符号进行编码期间或是在此之前进行更新。
假设s是将要编码的符号。这些符号可以是例如字母表的任何事物,但是为了举例说明本发明,在这里将其表示成数字0,1,…,N-1,其中N是唯一符号的数量。符号可以从符号集合中选出,在该集合中,符号具有共同排序(mutual order),并且在符号集合中,一个符号代表了最大符号值,另一个符号则代表了最低符号值。码字表选择器1.5使用了变量k和交叉引用表6在码字表集合5.1-5.M中选择一个码字表,以便可以将符号s映射到码字。该交叉引用表6将变量k的值映射到码字表编号t,其中所述编号指示的是选择用于编码处理的码字表。与变量k的不同的值的数量相比,所述交叉引用表6具有与之一样多的行。这些行指示的是变量k的值与码字表5.1-5.M的编号之间的对应关系。举个例子,如果k的值是0,那么选择的是交叉引用表6中的第一行所指示的码字表,如果k的值是1,那么所选择的是交叉引用表6的第二行所指示的码字表,等等。以下在表1中描述交叉引用表6的一个非限制性示例:
表1-table_num
k | T |
0 | 0 |
1 | 1 |
2 | 1 |
3 | 1 |
4 | 1 |
5 | 2 |
6 | 2 |
7 | 2 |
在这个示例中,k的值可以从0到7,并且不同码字表的数量是3,也就是说,在这个非限制性示例中,M是3。然而,在另一示例实施例中,变量可以具有小于符号集合中的最大符号值的上限。在又一个实施例中,变量可以具有大于符号集合中的最小符号值的下限。此外,也存在已经针对变量k限定了下限和上限两者的一些实施例。
交叉引用表6的列t指示的是将要选择的码字。码字表选择器1.5使用了处于交叉引用表6中表编号列t的第k行的值作为码字表索引。举个例子,如果第k行的值是0,那么所选择的是第一个码字表5.1,如果值是1,那么所选择的是第二码字表5.2等等。在表1的示例中,当变量k是0时,所选择的是第一码字表5.1,当变量k是1、2、3或4时,所选择的是第二码字表5.2,以及当变量k是5、6或7时,所选择的是第三码字表5.M。
码字表选择器1.5将所选择的码字表告知码字选择器1.6。这种处理可以例如采用使得码字表选择器1.5将参数t的值存入存储器4或是控制器1.4的一个或多个寄存器中的方式来执行。码字选择器1.6则使用参数t的值以在选择表示符号s的码字的过程中使用所选择的码字表(图4中的方框404)。码字表选择器1.6使用符号s和所选择的码字表来确定码字。换句话说,符号s的值指示了所选择的码字表中的码字。下表2描述了提供三个不同码字表(t=0,t=1,t=2)的码字表集合的一个示例。
表2-code_word(二进制格式)
此外,还可以具有用于每个码字表6的码字长度表7,其中该表指示的是每个码字的长度。码字长度指示器1.7可以使用符号s和参数t来获取知识所选择码字的长度的值(图4中的方框405)。下表3描述了提供三个不同码字长度表7.1-7.M的码字长度表集合的一个示例(t=0,t=1,t=2)。
表3-cw_length
如上所述的码字表选择、码字选择以及码字长度确定可以采用如下方式来定义。
t=table_num[k]
cw=code_word[t, s]
len=cw_length[t,s]
其中table_num是选择要使用那个可变长度码字表的阵列(交叉引用表6),code_word是将符号s映射到码字的阵列(码字表5.1-5.M),以及cw_length是相应码字长度值的阵列(码字长度表7.1-7.M)。长度为len的最终得到的码字cw将被发送到其目的地,例如用于存储或传输。
在已经对符号进行编码之后,例如由控制器1.4根据以下等式来更新变量k(图4中的方框406)。
其中L是正整数。这意味着如果变量k与符号s是相同的,那么变量k将不会改变,否则,如果变量k小于符号s,则将变量k递增正整数L,或者如果变量k大于符号s,则将变量k递减正整数L。参数L限定了在确定应该修改变量时用以修改该变量的偏移量。在上文中,假设修改量是恒定地,但在本发明的另外的示例实施例中,该偏移量可以根据例如符号s与变量k之差而改变。例如,当该差很大时,该偏移量可以较大,而当该差较小时,该偏移量可以较小。
图4中的方框407确定是否还有更多符号要被编码。如果是的话,则该操作通过输入下一个符号而从方框402开始继续进行,直至为将要编码的所有符号全都选择了码字。
为了进一步说明以上给出的示例实施例,在下文中将会提供一个数字示例。我们选择值为3的初始常数,整数L的值为2,以及符号序列示例3、1、5、4、2。由此,在编码处理的开端,变量k得到值K=3。交叉引用表6指示(k=3)待选择的码字表是第二(t=1)码字表。将要编码的第一个符号是3。在第二码字表5.2中,符号3被映射到码字011。由于k=s,因此在这个阶段不会修改k的值。然后,下一个符号(1)将被输入以进行编码。相同的码字表仍被使用,其中符号1被映射到码字11。该符号的值要小于变量k,其中变量k将被递减整数L的值,也就是说,新的k值是1(=3-2)。将通过使用第二码字表5.2来编码的下一个符号是5。符号5被映射到码字0011。该符号的值要大于变量k的当前值,其中变量k的值将会递增L,也就是说,k=3。接下来的符号是4。第二码字表将被选择,由此将符号4映射到码字0010。由于k<s,因此变量k的值同样会递增2,由此导致变量k得到值5。这意味着下一个符号将会用第三码字表编码的。所述符号是2,其中该符号将被映射到码字010。在编码了这个示例序列中的最后一个符号(2)之后,变量k的值会再次递减L,即k=3。编码结果,即可变长度码字比特流,是0111100110010010。这个比特流可以存储在存储介质中,或者可以被发送到发射器9,以便传送到另一个设备,例如图1的第二设备10。举例来说,发射器9可以包括用于对比特流执行信道编码的信道编码器9.1,所述比特流会由传输部件9.2变换成例如射频信号。
交叉引用表6、码字表5.1-5.M以及码字长度表7.1-7.M的设计可以是特定于应用的,举例来说,在这里不必使用单个表集合用于每种使用情形。但是,上表1、2和3示出的是可能使用的一种可能的表设计。
在更常见的情形中,符号至码字的映射并不是固定的。举个例子,如果符号s的值是0,那么用于符号s的码字未必是表中的第一条目。在这种情况下,符号值不能直接被用于获取码字值,并且需要额外的表来表示这种映射。符号的编号处理则可以如下进行。
n=cw_num[s]
t=table_num[k]
cw=code_word[t,n]
len=cw_length[t,n]
其中cw_num是将符号值映射成码字编号的表。然后,码字编号将被用于获取实际码字。
在已经对符号进行了编码之后,变量k将被更新:
编码器1.4可以包括用于更新变量k以及可能的其他一些变量的值的更新元件1.8。
在先前示例中,所有变量都是整数。在替换的实施方式中,k和L是浮点或固定点值,并且在使用k来获取表编号之前,k被四舍五入到最近的整数值,或者被截断成整数值。用于表示源的信息的符号未必是数字,而是可以包括其他类似的元素,例如字母符号。符号集合中的可用符号可以具有一个共同排序。例如,数字0到N-1可以是升序或降序排序的。在上文中,假设在变量k的值与符号之间存在一一对应。换句话说,变量k可以具有与可能的符号相对应的值。在上述示例中,k的值可以是0,1,……,N-1(k∈0,1,…N-1)。因此,变量k的值可以与符号s相比较,以便确定变量k是小于、大于还是等于符号s。由此,即使所有符号都是数字元素,也可以使用这种共同排序来确定变量k是小于、大于还是等于符号s。举个例子,如果符号集合包括字母A到F,那么可以将变量k设置成与字母A、B、C、D、E或F相对应的值。此外,还可以定义用于可能的符号值与变量k的值之间的对应关系的交叉引用表(未示出)。例如,该交叉引用表可以指示符号A到F分别与变量k的值10到15相对应。
此外,在先前示例中,码字是从例如驻留在存储器4中的预定义表加载的。然而,在一些情况中,码字可以是即时产生的,由此不必将码字存储在存储器中。当编码器需要获取码字时,它会使用表编号和码字编号以便使用预定算法来产生码字。此外,还有可能的是,交叉引用表6由一种基于变量k来产生码字表索引的算法所取代。
码字表5.1-5.M、交叉引用表6以及码字长度表7.1-7.M的存储可以用很多方式实施。它们可以被存入例如第一设备8的存储器4中。每行都可以存储在连续的存储器位置,由此每一个值都具有某个长度的比特,或者由此在每个值之后都具有将不同的列相互分离的字段分隔符。此外,表的值还可能是逐列存储的。
在上文中,从编码器的角度讨论了本发明的一些原理,但是解码器的实施也是非常相似的,其区别在于码字处理是相反的,也就是说,接收到的码字将被用于确定相应的符号。现在将参考图3的解码器以及图5的流程图来对此进行更详细地说明。第二设备10(图1)接收所传送的信息,在接收机14中执行例如射频信号至低频信号(例如基带信号)的转换14.1,并且通过对低频信号执行信道解码14.2和/或其他一些操作来从接收到的信号中获取码字。接收到的码字可以存储在第二设备的存储器12中,以便进行更进一步的处理。在本示例中,使用与上文中结合编码处理给出的比特流相同的比特流,即0111100110010010。
解码器11的初始化部件11.3对变量k进行初始化(k=K)(图5中的方框501)。该解码器11访问与编码器表相对应的表。例如,解码器11具有与编码器1的码字表5.1-5.M相类似的码字表集合17.1-17.M。解码器11还具有与编码器的交叉引用表6相对应的交叉引用表13。该表可以在解码器的存储器12中形成,或者解码器11可以包含一些算法用以取代表。
符号确定部件11.2使用变量k的当前值以及交叉引用表13来选择码字表(图5中的方框502)。该操作被描述为图3中的表选择器11.4。在这个示例中,k被初始设置成3(=K),其中交叉引用表13指示在将码字映射成符号的过程中使用第二码字表17.2。
所接收到的比特是例如逐一地或者以较大的部分被输入解码器11的输入端11.1的,而比特会从所述输入端被递送到符号确定部件11.2(图5中的方框503)。接收到的比特流的第一个比特(即本示例实施例中的最左边的比特)是0。符号确定部件11.2检查第二码字表17.2的码字以确定在第二码字表中是否存在这样的码字(图5中的方框504和505)。如果该检查指示存在所述码字,则可以使用以这种方式获取的码字来确定符号。然而,在这个示例实施例中,比特图案0并不是第二码字表17.2中的码字。因此,下一个比特也被输入,并且与第一个比特相结合。所述组合是01,并且符号确定部件11.2确定是否该组合是一个有效码字。在本示例中,这个比特图案同样不是第二码字表17.2中的码字,因此,下一个比特将被输入符号确定部件11.2。现在,这些比特的组合是011。这个码字在第二码字表17.2中是存在的。因此,相应的符号可以基于第二码字表来确定(图5中的方框506)。第一列指示符号确定部件11.2在解码器的输出端11.5输出的相应符号是3。该符号还可以存储在符号缓存器中,所述符号缓存器例如可以在第二设备10的存储器12中实施。该符号例如可被存储到存储器12中。并且符号确定单元11.2可以包括对码字以及码字表17中的相应符号进行检查的符号选择器11.5。
在从输入比特流中找到了码字之后,可以更新变量k的值(图5中的方框507)。用于更新变量k的规则与在编码器中使用的规则是相同的,即
符号确定部件11.2可以包括用于更新变量k以及有可能的其他一些变量的值的更新元件11.5。
所确定的符号是3,这与变量k的当前值是相等的。因此,变量k不修改,并且在解码下一个码字的过程中将会使用相同的码字表。
虽然图5的流程图描述是在已经对符号进行解码之后更新变量k,但是顺序也可以不同于此。例如,该变量可以在对符号进行解码期间或是在其后进行更新。
该过程例如通过检查是否还有更多待检查的比特而继续进行(图5中的方框508)。如果是的话,则该操作将会通过基于变量k和交叉引用表13选择码字表而继续进行(在方框502中)。在这个示例中,接下来的比特是1。该比特并不是第二码字表中的有效比特,因此将会输入下一个比特。现在,待由符号确定部件11.2检查的比特组合是11,并且该组合是第二码字表中的一个有效码字。其相应的符号则是1。
在这里应该指出,还存在从码字中解码符号的其他可能性。这种解码未必是按逐个比特的方式进行的,而是可以在这个上下文中使用任何类型的用于找出匹配码字的方法。例如,比特流的某个部分被输入到解码器11的输入端11.1,并且比特将被从所述输入端递送到符号确定部件11.2。该符号确定部件11.2则从所选择的可变长度码字表中检查比特流的所述部分是否包含所述可变长度码字表中的码字。如果检查指示比特流的所述部分包含所选择的所述可变长度码字表中的码字,那么符号确定部件11.2将会确定所选择的所述可变长度码字表中的哪个符号与码字相对应的,并且输出该符号。如果该检查指示比特流的所述部分不包含所选择的所述可变长度码字表中的任何码字,那么该比特流的下一部分被输入到解码器11的输入端11.1,并且被递送到符号确定部件11.2,以便进行更进一步的检查。上述步骤将会重复执行,直至从所选择的可变长度码字表中发现有效码字。
此外,还存在在解码处理过程中找出匹配码字的其他可能性,例如使用查找表或是使用二元树。
通过重复该处理,可以正确地解码比特流,从而得到相同的被传送符号流,在本范例中,最终得到的符号流是3,1,5,4,2。
在以上示例中,编码器1和解码器11的功能部件是作为单独的部件来描述的。然而,在实际的实现中,这些功能元件或者其中一些可以以编码器1的控制器1.4和/或解码器11的控制器11.4的硬件来实现或者作为其程序代码来实现。控制器1.4、11.4可以是数字信号处理器或其他处理器,其包含了用于执行程序代码的其他装置的程序代码解释器。这些程序代码既可以存储在存储器4、12之类的存储介质中,也可以存储在例如CDROM之类的磁盘中,还可以存储在别的类型的载体中。
无论码字值是如何产生的,本发明都可以作为一种方法和一种设备来实施,其中所述设备包含了至少一种用于确定可变长度码字表编号以及更新变量k的装置。然后,所确定的可变长度码字表编号和待解码的符号可以通过码字而被用于表示符号。相应地,在解码阶段,可以通过使用码字和所确定的可变长度码字表编号找到所述符号。
本发明可以在使用数据压缩例如以便压缩视频信号的应用中使用。在视频编码中,已经可以观察到对于至少在宏块模式、编码块图案(cbp)以及经过离散余弦变换(DCT)变换的块中的最后一个非零系数位置处的编码处理而言,本方法是非常有益的。
在一个示例实施例中,码字长度是从表的开始到结尾单调递增的(也就是说,码字的长度大于或等于表中处于该码字之前的任何码字的长度),但在本发明的范围以内也可以使用其他类型的码字表设计原理。
在下文中,公开了交叉引用表6的另一个示例:
表4-table_num
K | t |
0 | 0 |
1 | 0 |
2 | 1 |
3 | 2 |
4 | 3 |
5 | 3 |
6 | 3 |
7 | 3 |
8 | 3 |
9 | 3 |
在本示例中,有四个码字表,并且在下表中公开了其中一个的示例:
表5-code_word(二进制形式)
与表5的码字表相对应的长度表可以包括下列值:
表6-cw_length
包含编码器1的第一设备8可以是例如无线通信设备、计算机、服务器、CDROM播放器、DVD播放器等等。包含解码器11的第二设备10可以是例如无线通信设备、计算机、服务器、CDROM播放器、DVD播放器等等。传输信道15可以包括通信网络,例如无线通信网络、局域网、第一设备9与第二设备10之间的有线或无线连接等等。
本发明并不仅限于上述示例,而是可以在权利要求书的范围以内改变。
Claims (27)
1.一种用于对符号进行可变长度编码的方法,包括:
基于变量的值从可变长度码字表集合中选择可变长度码字表;
基于所述符号从所选择的可变长度码字表中选择码字;
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果所述比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果所述比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
2.根据权利要求1所述的方法,还包括:
重复上述步骤,以便对另一个符号进行编码。
3.根据权利要求1所述的方法,还包括:
限定用于所述变量的修改的偏移量,其中如果所述比较指示应该修改所述变量,则由所述偏移量来限定所述变量的修改幅度。
4.根据权利要求3所述的方法,还包括:
确定所述符号与所述变量之之差,其中所述偏移量取决于所确定之差。
5.根据权利要求1所述的方法,还包括:
从待编码的信息中估计统计参数;
基于所估计的统计参数来限定所述可变长度码字表中的码字。
6.根据权利要求5所述的方法,其中所述估计包括确定代表信息的符号的概率分布。
7.根据权利要求1所述的方法,还包括:
从符号集合中选择所述符号。
8.根据权利要求1所述的方法,还包括:
限定从符号集合中选择的一组符号,其中所述符号具有共同排序,并且一个符号代表所述符号集合中的最大符号值,另一符号代表所述符号集合中的最小符号值。
9.根据权利要求8所述的方法,还包括以下其中至少一项:
为变量k选择上限,所述上限小于所述符号集合中的最大符号值;或者
选择下限,所述下限大于所述符号集合中的所述最小符号值;或者
为变量k选择上限和下限两者,所述上限小于所述符号集合中的所述最大符号值,以及所述下限大于所述符号集合中的所述最小符号值的。
10.一种用于对码字进行可变长度解码的方法,包括:
基于变量的值从可变长度码字表集合中选择可变长度码字表;
使用所述码字从所选择的可变长度码字表中找出与所述码字相对应的符号;以及
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果所述比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果所述比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
11.根据权利要求10所述的方法,还包括:
重复上述步骤,以便对另一个符号进行解码。
12.根据权利要求10所述的方法,还包括:
限定用于所述变量的修改的偏移量,其中如果所述比较指示应该修改变量,则由所述偏移量来限定所述变量的修改幅度。
13.根据权利要求12所述的方法,还包括:
检测所述符号与所述变量之差,其中所述偏移量取决于所确定之差。
14.根据权利要求10所述的方法,还包括:
输入来自比特流的比特;
从所选择的可变长度码字表中检查所述比特是否与所选择的所述可变长度码字表中的码字相对应;
如果所述检查指示所述比特与所选择的所述可变长度码字表中的码字相对应,则确定所选择的所述可变长度码字表中的哪个符号与码字相对应,并且输出所述符号;否则
如果所述检查指示所述比特不与所选择的所述可变长度码字表中的码字相对应,则输入来自所述比特流的下一比特,并且在所述检查阶段中使用输入比特的组合;以及
重复以上步骤,直至已经从所选择的可变长度码字表中找到有效码字。
15.根据权利要求10所述的方法,还包括:
输入比特流的至少一部分;
从所选择的可变长度码字表中检查比特流的所述部分是否包括所选择的所述可变长度码字表中的码字;
如果所述检查指示比特流的所述部分包括所选择的所述可变长度码字表中的码字,则确定所选择的所述可变长度码字表中的哪个符号与所述码字相对应,并且输出所述符号;否则
如果所述检查指示比特流的所述部分不包含所选择的所述可变长度码字表中的任何码字,则输入所述比特流的下一部分;以及
重复以上步骤,直至从所选择的可变长度码字表中找到有效码字。
16.一种设备,包括:
码字表选择器,被配置成基于变量的值从可变长度码字表集合中选择可变长度码字表;
码字选择器,被配置成基于符号从所选择的可变长度码字表中选择码字;
更新元件,被配置成通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果所述比较指示所述变量的值小于所述符号,则所述更新元件被配置成递增所述变量的值;否则
如果所述比较指示所述变量的值大于所述符号,则所述更新元件被配置成递减所述变量的值。
17.根据权利要求16所述的设备,包括用于所述变量的修改的偏移量,其中所述更新元件被配置成在修改所述变量时使用所述偏移量。
18.根据权利要求17所述的设备,其中所述更新元件被配置成确定所述符号与所述变量之差,并且进一步被配置成基于所确定之差确定修改幅度。
19.根据权利要求16所述的设备,包括:选择器,用于从符号集合中选择符号以代表来自源的信息。
20.根据权利要求19所述的设备,其中所述符号集合中的符号具有共同排序,并且一个符号代表最大符号值,另一符号代表最小符号值。
21.根据权利要求20所述的设备,包括以下其中至少一项:
用于变量k的上限,其小于所述符号集合中的最大符号值;或者
下限,其大于所述符号集合中的最小符号值;或者
用于所述变量k的上限和下限两者,所述上限小于符号集合中的最大符号值,以及所述下限大于符号集合中的最小符号值。
22.一种设备,包括:
码字表选择器,用于根据变量的值从一组可变长度码字表中选择可变长度码字表;
符号确定器,被配置成从所选择的可变长度码字表中选择与所述码字相对应的符号;
更新元件,用于通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果所述比较指示所述变量的值小于所述符号,则所述更新元件被配置成递增所述变量的值;否则
如果所述比较指示所述变量的值大于所述符号,则所述更新元件被配置成递减所述变量的值。
23.根据权利要求22所述的设备,包括用于所述变量的修改的偏移量,其中所述更新元件被配置成在修改所述变量时使用所述偏移量。
24.根据权利要求23所述的设备,其中所述更新元件被配置成确定所述符号与所述变量之差,并且进一步被配置成基于所确定之差来确定修改幅度。
25.根据权利要求22所述的设备,包括:
输入端,被配置成输入来自比特流的比特;
所述符号确定器,被配置成:
从所选择的可变长度码字表中检查所述比特是否与所选择的所述可变长度码字表中的码字相对应;
如果所述检查指示所述比特与所选择的所述可变长度码字表中的码字相对应,则确定所选择的所述可变长度码字表中的哪个符号与所述码字相对应,并且输出所述符号;否则
如果所述检查指示所述比特不与所选择的所述可变长度码字表中的任何码字相对应,则检查来自所述比特流的下一比特,并且在所述检查阶段中使用输入比特的组合;以及
重复以上步骤,直至已经从所选择的可变长度码字表中找到有效码字。
26.一种存储介质,其中在所述存储介质上存储了供编码器使用的计算机可执行程序代码,所述程序代码包括用于执行下列操作的指令:
基于变量的值从一组可变长度码字表中选择可变长度码字表;
基于所述符号从所选择的可变长度码字表中选择码字;
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果所述比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果所述比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
27.一种存储介质,其中在所述存储介质上存储了供编码器使用的计算机可执行程序代码,所述程序代码包括用于执行下列操作的指令:
基于变量的值从一组可变长度码字表中选择可变长度码字表;
使用所述码字从所选择的可变长度码字表中找出与所述码字相对应的符号;以及
通过比较所述符号与所述变量之间的对应关系来更新所述变量的值,其中
如果所述比较指示所述变量的值小于所述符号,则递增所述变量的值;否则
如果所述比较指示所述变量的值大于所述符号,则递减所述变量的值;否则
不修改所述变量的值。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17948409P | 2009-05-19 | 2009-05-19 | |
US61/179,484 | 2009-05-19 | ||
PCT/FI2010/050398 WO2010133763A1 (en) | 2009-05-19 | 2010-05-18 | Method for variable length coding and apparatus |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102460976A true CN102460976A (zh) | 2012-05-16 |
CN102460976B CN102460976B (zh) | 2016-02-10 |
Family
ID=43124231
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080029943.7A Active CN102460976B (zh) | 2009-05-19 | 2010-05-18 | 用于可变长度编码的方法和设备 |
Country Status (10)
Country | Link |
---|---|
US (1) | US8350735B2 (zh) |
EP (1) | EP2433367B1 (zh) |
KR (1) | KR20120018360A (zh) |
CN (1) | CN102460976B (zh) |
CA (1) | CA2762782C (zh) |
MX (1) | MX2011012250A (zh) |
RU (1) | RU2011150914A (zh) |
TW (1) | TW201128965A (zh) |
WO (1) | WO2010133763A1 (zh) |
ZA (1) | ZA201109232B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626184B2 (en) | 2013-06-28 | 2017-04-18 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
CN112699639A (zh) * | 2021-02-09 | 2021-04-23 | 北京微步在线科技有限公司 | 基于字节数组的整数变长有序编码方法、装置及存储介质 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9490839B2 (en) | 2011-01-03 | 2016-11-08 | Qualcomm Incorporated | Variable length coding of video block coefficients |
CN102122960B (zh) * | 2011-01-18 | 2013-11-06 | 西安理工大学 | 一种针对二进制数据的多字符组合无损数据压缩方法 |
TWI524681B (zh) * | 2011-04-26 | 2016-03-01 | 晨星半導體股份有限公司 | 霍夫曼解碼器及其解碼方法 |
US9516316B2 (en) | 2011-06-29 | 2016-12-06 | Qualcomm Incorporated | VLC coefficient coding for large chroma block |
US9338456B2 (en) * | 2011-07-11 | 2016-05-10 | Qualcomm Incorporated | Coding syntax elements using VLC codewords |
US20130099946A1 (en) | 2011-10-21 | 2013-04-25 | International Business Machines Corporation | Data Compression Utilizing Variable and Limited Length Codes |
DK3416292T3 (da) | 2012-04-15 | 2020-03-09 | Samsung Electronics Co Ltd | Videoafkodningsapparat ved anvendelse af parameteropdatering til de-binærisering af en entropikodet transformationskoefficient og indkodnings-fremgangsmåde anvendende det samme til binærisering |
CN102664636B (zh) * | 2012-05-16 | 2016-03-23 | 苏州大学 | 一种变长编码、解码方法及装置 |
KR102027354B1 (ko) * | 2015-10-13 | 2019-11-04 | 후아웨이 테크놀러지 컴퍼니 리미티드 | 디코딩 장치 및 방법과 신호 전송 시스템 |
CN111200733B (zh) * | 2018-11-20 | 2021-10-26 | 福州依影健康科技有限公司 | 一种远程眼底筛查和健康大数据系统中的隐私保护方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997035383A1 (en) * | 1996-03-15 | 1997-09-25 | Philips Electronics N.V. | Method of and device for coding a digital information signal |
WO1998036574A1 (en) * | 1997-02-14 | 1998-08-20 | At & T Corp. | Video coder having scaler dependent variable length coder |
CN1126270C (zh) * | 1997-07-11 | 2003-10-29 | 皇家菲利浦电子有限公司 | 使用可变长度编码器的传输系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4862167A (en) * | 1987-02-24 | 1989-08-29 | Hayes Microcomputer Products, Inc. | Adaptive data compression method and apparatus |
US5400075A (en) * | 1993-01-13 | 1995-03-21 | Thomson Consumer Electronics, Inc. | Adaptive variable length encoder/decoder |
KR100209877B1 (ko) * | 1994-11-26 | 1999-07-15 | 윤종용 | 복수개의 허프만부호테이블을 이용한 가변장부호화장치 및 복호화장치 |
MXPA04000912A (es) * | 2001-11-22 | 2004-04-02 | Matsushita Electric Ind Co Ltd | Metodo de codificacion de longitud variable y metodo de decodificacion de longitud variable. |
JP4130780B2 (ja) * | 2002-04-15 | 2008-08-06 | 松下電器産業株式会社 | 画像符号化方法および画像復号化方法 |
JP4442891B2 (ja) * | 2004-11-30 | 2010-03-31 | キヤノン株式会社 | 可変長符号化装置及び可変長符号化方法 |
JP2010045598A (ja) * | 2008-08-12 | 2010-02-25 | Fujitsu Ltd | 可変長復号装置、及び、符号化装置 |
US8180774B2 (en) * | 2008-10-03 | 2012-05-15 | Seomoz, Inc. | Web-scale data processing system and method |
-
2010
- 2010-05-18 WO PCT/FI2010/050398 patent/WO2010133763A1/en active Application Filing
- 2010-05-18 KR KR1020117030180A patent/KR20120018360A/ko not_active Application Discontinuation
- 2010-05-18 RU RU2011150914/08A patent/RU2011150914A/ru not_active Application Discontinuation
- 2010-05-18 EP EP10777425.9A patent/EP2433367B1/en active Active
- 2010-05-18 TW TW099115797A patent/TW201128965A/zh unknown
- 2010-05-18 CN CN201080029943.7A patent/CN102460976B/zh active Active
- 2010-05-18 CA CA2762782A patent/CA2762782C/en active Active
- 2010-05-18 MX MX2011012250A patent/MX2011012250A/es active IP Right Grant
- 2010-05-19 US US12/783,067 patent/US8350735B2/en active Active
-
2011
- 2011-12-14 ZA ZA2011/09232A patent/ZA201109232B/en unknown
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1997035383A1 (en) * | 1996-03-15 | 1997-09-25 | Philips Electronics N.V. | Method of and device for coding a digital information signal |
WO1998036574A1 (en) * | 1997-02-14 | 1998-08-20 | At & T Corp. | Video coder having scaler dependent variable length coder |
CN1126270C (zh) * | 1997-07-11 | 2003-10-29 | 皇家菲利浦电子有限公司 | 使用可变长度编码器的传输系统 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9626184B2 (en) | 2013-06-28 | 2017-04-18 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
US10261788B2 (en) | 2013-06-28 | 2019-04-16 | Intel Corporation | Processors, methods, systems, and instructions to transcode variable length code points of unicode characters |
CN112699639A (zh) * | 2021-02-09 | 2021-04-23 | 北京微步在线科技有限公司 | 基于字节数组的整数变长有序编码方法、装置及存储介质 |
CN112699639B (zh) * | 2021-02-09 | 2022-03-04 | 北京微步在线科技有限公司 | 整数数据的存储方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102460976B (zh) | 2016-02-10 |
ZA201109232B (en) | 2013-05-29 |
US8350735B2 (en) | 2013-01-08 |
CA2762782A1 (en) | 2010-11-25 |
RU2011150914A (ru) | 2013-06-27 |
MX2011012250A (es) | 2012-03-07 |
EP2433367B1 (en) | 2019-02-20 |
CA2762782C (en) | 2015-09-29 |
KR20120018360A (ko) | 2012-03-02 |
EP2433367A4 (en) | 2013-11-20 |
TW201128965A (en) | 2011-08-16 |
EP2433367A1 (en) | 2012-03-28 |
US20100295712A1 (en) | 2010-11-25 |
WO2010133763A1 (en) | 2010-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102460976B (zh) | 用于可变长度编码的方法和设备 | |
TWI453734B (zh) | 用以將符號編碼之方法、用以將符號解碼之方法、用以將符號從發送器發送至接收器之方法、編碼器、解碼器、及用以將符號從發送器發送至接收器之系統 | |
JP4801776B2 (ja) | データ圧縮 | |
CN105103549A (zh) | 根据重要系数的参数的重要系数编码和解码 | |
JP6045123B2 (ja) | エンコーダ、デコーダ及び方法 | |
EP2462698A1 (en) | Encoder and decoder using arithmetic stage to compress code space that is not fully utilized | |
CN107612866A (zh) | 一种基于离散余弦变换的信号调制解调方法及装置 | |
CN103873877A (zh) | 远程桌面的图像传输方法及装置 | |
KR20160123302A (ko) | 데이터의 소스-인코딩 및 디코딩 디바이스 및 방법 | |
CN103650037A (zh) | 采样率可分级的无损音频编码 | |
CN107682298A (zh) | 一种基于离散小波变换的信号调制解调方法及装置 | |
WO1997033254A1 (en) | System and method for the fractal encoding of datastreams | |
CN103036641A (zh) | 数据交换方法、系统及反序列化方法 | |
RU2709656C2 (ru) | Кодер, декодер и способ, использующие модовые символы | |
CN109981108B (zh) | 数据压缩方法、解压缩方法、装置及设备 | |
US6208274B1 (en) | Transmission system using a variable length encoder | |
CN101980464A (zh) | 数据编码方法、解码方法、编码器和解码器 | |
KR101541869B1 (ko) | 가변길이코딩을 이용한 인코딩 방법, 디코딩 방법, 및 그 시스템 | |
KR970073120A (ko) | 블럭 단위의 벡터 양자화된 신호의 복호화 방법 | |
Sarkar et al. | A novel data compression approach to reduce string size for PLCC based DAS | |
Sarkar et al. | Comparison of the performance of DCSK for PLCC with and without data compression | |
KR890004316B1 (ko) | 복합 코드 부호화 방법 | |
CN104811207A (zh) | 传送器装置、接收器装置、数据压缩及数据解压缩方法 | |
KR20170034465A (ko) | 이진데이터의 실시간 압축전송 방법 및 그 장치 | |
JP2010021620A (ja) | データ処理装置およびデータ処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
C41 | Transfer of patent application or patent right or utility model | ||
GR01 | Patent grant | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20160118 Address after: Espoo, Finland Applicant after: Technology Co., Ltd. of Nokia Address before: Espoo, Finland Applicant before: Nokia Oyj |