本申请是申请日为2003年3月13日、申请号为No.03800330.9、题为“可变长度编码方法,可变长度译码方法,存储介质,可变长度编码设备,可变长度译码设备,和位流”的中国专利申请的分案申请。
发明内容
本发明的一个目的是要提高在图像压缩之类的领域中使用的可变长度编码方法的压缩效率。
本发明的另一个目的是要正确地译码由具有提高了压缩效率的可变长度编码方法编码的数据。
根据本发明的一个方面,一种可变长度编码方法在参考参数表的同时给一个由多个子数据构成的单元数据编码,该方法包括步骤:
将一个参数表设定到初始值;
对有关初始化的参数表的信息编码;
从参数表获得要在子数据编码中使用的编码参数;
参考获得的编码参数执行子数据的可变长度编码;和
将有关初始化的参数表的编码信息放置在一个可以在该编码的单元数据之前获得这个信息的位置。
应当注意,编码参数是指,指示数据的发生频率的,和从参数表得到的,并且在子数据的编码过程中参考的信息。在算术编码的情况下,尽管参数表对应于一个概率表,并且在这里编码参数对应于概率,但是,本发明不限于此。
通过这种编码方法,由于在子数据的编码中使用了从参数表获得的编码参数,所以当编码单元数据时提高了压缩效率。此外,由于将有关初始化的参数表的信息编码并放置在一个可以在编码单元数据之前获得信息的位置上,所以,可以利用参数表作为初始值,在译码过程中正确地对编码单元数据译码。
根据本发明的另一方面,可变长度编码方法根据编码子数据值更新参数表,并且从更新的参数表获得编码参数。
通过这种编码方法,由于根据编码子数据值更新了参数表,所以在编码单元数据时提高了压缩效率。
根据本发明的又一个方面,可变长度编码方法根据紧接着编码子数据之前的值,从参数表获得要在子数据编码步骤中使用的编码参数的初始值。
通过这种编码方法,由于根据紧接着编码子数据之前的值从参数表获得编码参数的初始值,所以可以实时得到编码参数并且提高了编码速度。
根据本发明的再一个方面,可变长度编码方法根据要编码的编码子数据的值,从参数表获得子数据编码步骤中的编码参数的初始值。
通过这种编码方法,根据要编码的编码子数据的值,从参数表获得子数据编码步骤中的编码参数的初始值,并且即使在子数据与紧接着子数据之前的内容大大不同的情况下,也能有高的压缩效率。
根据本发明的再一个方面,可变长度编码方法在子数据编码步骤中,参考编码参数执行子数据的算术编码。
由于把算术编码用作编码子数据的方法,所以通过这种编码方法可以获得良好压缩效率。应当注意,参数表对应于一个概率表,并且编码参数对应于概率。
根据本发明的再一个方面,可变长度编码方法中的有关参数表的信息是参数本身。
根据本发明的再一个方面,在可变长度编码方法的信息编码步骤中,仅对参数表的一部分执行编码。
通过这种编码方法,仅对初始化的参数表的一部分,而不是整个初始化参数表执行编码,因此,可以减小编码量。
根据本发明的再一个方面,可变长度编码方法中的参数表的一部分是对应于具有高概率的编码数据的参数部分。
通过这种编码方法,由于仅对对应于具有高概率的编码数据的初始化参数表的一部分执行编码,从而能够在保证译码过程中满意的正确译码的同时,减小编码量。
根据本发明的再一个方面,可变长度编码方法中的有关参数表的编码信息是指示参数表的信息。
通过这种编码方法,由于仅对指示参数表的编码信息,而不是参数表本身执行编码,因此能够减小编码量。
根据本发明的再一个方面,在可变长度编码方法的编码信息放置步骤中,把指示编码参数表的编码信息作为单元数据的公用数据部分放置。
通过这种编码方法,把指示参数表的信息作为单元数据中的一个公用部分放置,并且在其中发挥一个部分的功能,因此,可以减少编码量。
根据本发明的再一个方面,在可变长度编码方法的信息编码步骤中,用一种固定编码方法编码有关参数表的信息。
通过这种编码方法,由于使用了一种固定编码方法,因此静态地编码有关初始化参数表的信息,并且因此可以可靠地译码有关初始化参数表的信息。
根据本发明的再一个方面,可变长度编码方法进一步包括确定是否编码了有关初始化参数表的信息的编码确定步骤,和将标识该确定的结果的标志放置到一个可以在编码单元数据之前获得标志的位置的标志放置步骤。
通过这种编码方法,利用放置在一个可以在编码单元数据之前获得标志的位置的标志,可以确定是否编码了有关编码参数表的信息。应当注意,当,例如,直到初始化下一个概率表之前的数据量足够大时(也就是说,学习所需的数据量与总数据量的比例足够小,并且因此学习效率好时),或是当用作初始值的参数表实际上与通过学习得到的最佳参数表一致时,不对有关用作初始值的参数表的信息执行编码。
根据本发明的再一个方面,可变长度编码方法中的数据的单元是图像数据中的一个画面。
通过这种编码方法,使所有图像数据的编码参数表的频率最佳化,因此,由于用高的频率给编码概率表译码,所以即使在传输错误中丢失了应当在学习中使用的编码数据部分,并且在译码时不能重放与编码时相同的概率表,也不会出现图像不能播放超过数秒钟的情况。此外,不会出现大量的冗余参数表数据。
根据本发明的再一个方面,可变长度编码方法中的数据单元是图像数据中的一个片段。
通过这种编码方法,使编码参数表的频率对所有图像数据最佳,因此,由于用高的频率给编码概率表译码,所以即使在传输错误中丢失了应当在学习中使用的编码数据部分,并且在译码时不能重放与编码时相同的概率表,也不会出现图像不能播放超过数秒钟的情况。此外,不会出现大量的冗余参数表数据。
根据本发明的再一个方面,可变长度编码译码方法参考参数表对单元数据流译码,单元数据是由多个子数据构成的,该方法包括步骤:
对与流的参数表有关的编码信息译码;
根据有关参数表的译码信息设置参数表的初始值;
从参数表获得要在译码子数据中使用的编码参数;和
参考得到的编码参数执行流的子数据的可变长度译码。
通过这种译码方法,由于对有关参数表的信息译码,和,根据译码信息,将得到的参数表设置为初始值,可以正确地译码单元数据。
根据本发明的再一个方面,可变长度译码方法根据译码子数据值更新参数表,和从更新参数表获得编码参数。
根据本发明的再一个方面,可变长度译码方法参考子数据译码步骤中的编码参数执行子数据的算术译码。
根据本发明的再一个方面,可变长度译码方法在封闭的信息译码步骤中,利用一种固定译码方法对包括的有关参数表的信息译码。
根据本发明的再一个方面,一种存储介质存储用于在计算机上执行可变长度编码的程序。可变长度编码是一种在参考参数表的同时给多个子数据构成的单元数据编码的可变长度编码方法,并且包括步骤:
将一个参数表设置到初始值;
对有关初始化参数表的信息编码;
从参数表获得要在子数据编码中使用的编码参数;
参考获得的编码参数执行子数据的可变长度编码;和
把有关编码参数表的信息放置到一个可以在编码单元数据之前获得信息的位置。
通过这种存储介质,可以通过把存储的程序装载到计算机,在计算机上处理可变长度编码。由于在这个处理过程中,在编码子数据中使用了从参数表获得的编码参数,从而可以在编码单元数据时提高压缩效率。此外,由于对与初始化参数表有关的信息编码,并放置到可以在编码单元数据之前获得信息的位置,所以,当利用这些用作初始值的参数译码时,可以正确地译码编码单元数据。
根据本发明的再一个方面,存储介质存储了用于在计算机上执行可变长度译码的程序。可变长度译码是一种参考参数表对单元数据流译码的可变长度译码方法,单元数据是由多个子数据构成的,该方法包括步骤:
对与流的参数表有关的编码信息译码;
根据有关参数表的译码信息,设置参数表的初始值;
从参数表获得要在译码子数据中使用的编码参数;和
参考获得的编码参数执行流的子数据的可变长度译码。
通过这种存储介质,可以通过把存储的程序装载到计算机上,在计算机上处理可变长度译码。在这个处理过程中,由于译码了有关参数表的信息,可以正确地译码单元数据,并且根据信息,把获得的参数表设置为初始值。
根据本发明的再一个方面,一种可变长度编码方法在切换可变长度代码表的同时,编码由多个子数据构成的单元数据,并且包括步骤:
将一个可变长度代码表设置到初始值;
编码指示初始化可变长度代码表的信息;
选择一个要在编码子数据中使用的可变长度代码表;
参考选择的可变长度代码表执行子数据的编码;和
把指示初始化可变长度代码表的编码信息放置到一个可以在编码单元数据之前获得信息的位置。
通过这种编码方法,由于在编码子数据中使用了选定的可变长度代码表,因此在编码单元数据时提高了压缩效率。此外,由于编码了指示初始化可变长度代码表的信息,并且放置在可以在单元数据之前获得该信息的位置上,因此在译码中使用信息指示的可变长度代码表作为初始值正确地译码编码单元数据。
根据本发明的再一个方面,可变长度编码方法根据编码子数据值选择可变长度代码表。
通过这种编码方法,由于根据编码子数据值选择可变长度代码表,因此在编码单元数据时提高了压缩效率。
根据本发明的再一个方面,要在可变长度编码方法的子数据编码步骤中用于编码的可变长度代码表是根据紧接着编码子数据之前的值选择的可变长度代码表。
通过这种编码方法,由于子数据是根据基于紧接着子数据之前的值选择的可变长度代码表编码的,因此可以实时执行编码并且提高了编码速度。
根据本发明的再一个方面,要在可变长度编码方法的子数据编码步骤的编码中使用的可变长度代码表是根据要编码的编码子数据的值选择的可变长度代码表。
通过这种编码方法,由于子数据是根据基于要编码的编码子数据的值选择的可变长度代码表编码的,因此即使在子数据和紧接着子数据之前的内容大大不同时,也具有高的压缩效率。
根据本发明的再一个方面,在信息编码步骤中,可变长度编码方法利用一种固定编码方法执行编码。
通过这种编码方法,由于使用了固定编码方法,因此能够可靠地译码指示初始化可变长度代码表的信息。
根据本发明的再一个方面,可变长度编码方法进一步包括步骤:确定是否编码了指示初始化可变长度代码表的信息;和把标识确定的结果的标志放置在可以在编码单元数据之前获得该标志的位置上。
通过这种编码方法,通过把一个标志放置在能够在编码单元数据之前获得该标志的位置上,可以确定是否编码了指示初始化可变长度代码表的信息。应当注意,例如,在直到初始化下一个可变长度代码表之前的数据量足够大(也就是说,学习所需的数据量对数据总量的比例足够小,因此学习的效率好)的情况下,或在用作初始值的可变长度代码表与通过学习获得的最佳可变长度代码表实际上一致的情况下,不编码指示用作初始值的可变长度代码表的信息。
根据本发明的再一个方面,可变长度编码方法中的数据单元是图像数据中的一个画面。
通过这种编码方法,用于编码指示可变长度代码表的信息的频率对于所有图像数据都是最佳的,因此即使在传输错误中丢失了一部分编码信息数据,不能播放图像不会超过数秒。此外,不会有大量的冗余编码信息数据。
根据本发明的再一个方面,可变长度编码方法的数据单元是图像数据中的一个片段。
通过这种编码方法,用于编码指示可变长度代码表的信息的频率对于所有图像数据都是最佳的,因此即使在传输错误中丢失了一部分编码信息数据,不能播放图像不会超过数秒。此外,不会有大量的冗余编码信息数据。
根据本发明的再一个方面,可变长度编码方法的子数据的多个句法元素包括用一种其中切换可变长度代码表的可变长度编码方法编码的部分,和用一种固定编码方法编码的部分。
通过这种编码方法,例如,对于图像数据,通过其中切换可变长度代码表的可变长度编码方法可以取得高的压缩效率,并且可以容易地用一种固定编码方法编码共用数据首部。应当注意,由于首部的压缩效率总是很低,因此在使用固定编码方法中不存在特殊的障碍。
根据本发明的再一个方面,一种可变长度译码方法在切换可变长度代码表的同时译码单元数据流,单元数据是由多个子数据构成的,该方法包括步骤:
对指示流的可变长度代码表的编码信息译码;
根据指示可变长度代码表的译码信息设置可变长度代码表的初始值;
选择一个要在译码子数据中使用的可变长度代码表;和
参考选择的可变长度代码表执行流的子数据的可变长度译码。
通过这种译码方法,由于对有关可变长度代码表的编码信息译码,并且把信息指示的可变长度代码表设置为初始值,因此可以正确地对编码单元数据译码。
根据本发明的再一个方面,一个存储介质,存储用于在计算机上执行可变长度编码的程序。可变长度编码是一种在切换可变长度代码表的同时编码由多个子数据构成的单元数据的可变长度编码方法,并且包括步骤:
把一个可变长度代码表设置到初始值;
对指示初始化可变长度代码表的信息编码;
选择一个要在编码子数据中使用的可变长度代码表;
参考选择的可变长度代码表执行子数据的编码;和
把指示编码可变长度代码表的编码信息放置在可以在编码单元数据之前获得该信息的位置。
通过这种存储介质,由于在通过计算机上存储的程序,在编码子数据的过程中使用了一个选择的可变长度代码表,因此在编码单元数据时提高了压缩效率。此外,由于把有关初始化可变长度代码表的信息编码并且放置在一个可以在编码单元数据之前获得信息的位置,因此当利用信息指示为初始值的可变长度代码表译码时,可以正确地译码编码单元数据。
根据本发明的再一个方面,一种存储介质,存储用于在计算机上执行可变长度译码的程序。可变长度译码是一种在切换可变长度代码表的同时对一个单元数据流译码的可变长度译码方法,单元数据是由多个子数据构成的,并且包括步骤:
对指示流的可变长度代码表的编码信息译码;
根据指示可变长度代码表的译码信息设置可变长度代码表的初始值;
选择一个要在对子数据译码中使用的可变长度代码表;和
参考选择的可变长度代码表执行流的子数据的可变长度译码。
通过这种存储介质,由于译码了指示代码表的信息,并且在通过存储在计算机上的程序译码的过程中把信息指示的可变长度代码表设置为初始值,因此可以正确地译码编码单元数据。
根据本发明的再一个方面,一种可变长度编码设备在参考参数表的同时编码由多个子数据构成的单元数据,并且包括初始化装置、参数表信息编码装置、参数获得装置、子数据编码装置、和编码信息放置装置。初始化装置把一个参考表设置到初始值。参数表信息编码装置编码有关初始化参数表的信息。参数获得装置从参数表获得要在子数据的编码中使用的编码参数。子数据编码装置参考获得的编码参数执行子数据的可变长度编码。编码信息放置装置把有关编码参数表的信息放置在一个可以在编码单元数据之前获得信息的位置。
通过这种编码设备,由于在子数据编码装置编码在数据时使用了从参数表获得的编码参数,因此可以在编码单元数据时提高压缩效率。此外,由于通过参数表信息编码装置编码了有关初始化参数表的信息,并且通过编码信息放置装置放置在一个可以在编码单元数据之前获得信息的位置,因此,可以根据该信息,在译码过程中获得参数表,和利用参数表作为初始值正确地对编码单元数据译码。
根据本发明的再一个方面,一种可变长度译码设备参考参数表对单元数据流译码,单元数据是由多个子数据构成的。设备包括参数表信息译码装置、参数表初始化装置、参数获得装置、和子数据译码装置。参数表信息译码装置译码有关流的参数表的编码信息。参数表初始化装置根据有关参数表的译码信息设置参数表的初始值。参数获得装置从参数表获得要在译码子数据中使用的编码参数。子数据译码装置参考获得的编码参数执行流的子数据的可变长度译码。
通过这种译码设备,由于对有关参数表的编码信息译码,并且把根据信息获得的参数表设置为初始值,因此可以正确地对单元数据译码。
根据本发明的再一个方面,一种可变长度编码设备在切换可变长度代码表的同时编码由多个子数据构成的单元数据。设备包括初始化装置、信息编码装置、可变长度代码表选择装置、子数据编码装置、和编码信息放置装置。初始化装置把一个可变长度代码表设置到初始值。信息编码装置编码指示初始化的可变长度代码表的信息。可变长度代码表选择装置选择一个要在编码子数据中使用的可变长度代码表。子数据编码装置参考选择的可变长度代码表执行子数据的编码。编码信息放置装置把指示编码可变长度代码表的编码信息放置在可以在编码单元数据之前获得信息的位置。
通过这种编码设备,由于在子数据编码装置编码子数据时使用了一个选择的可变长度代码表,因此在编码单元数据时可以提高压缩效率。此外,由于通过参数表信息编码装置编码指示可变长度代码表的信息,和通过编码信息放置装置放置在一个可以在编码单元数据之前获得信息的位置,因此,可以在译码过程中获得该信息指示的可变长度代码表,并且可以利用该可变长度代码表作为初始值正确地译码编码单元数据。
根据本发明的再一个方面,一种可变长度译码设备在切换可变长度代码表的同时对编码单元数据流译码。设备包括可变长度代码表信息译码装置、一个可变长度代码初始化装置、一个可变长度代码表选择装置、和一个子数据译码装置。可变长度代码表信息译码装置译码指示流的一个可变长度代码表的编码信息。可变长度代码表初始化装置根据指示可变长度代码表的译码信息设置一个可变长度代码表的初始值。可变长度代码表选择装置选择一个要在译码子数据中使用的可变长度代码表。子数据译码装置参考选择的可变长度代码表执行流的子数据的可变长度译码。
通过这种译码设备,由于译码了有关可变长度代码表的编码信息,并且根据该信息选择了可变长度代码表,因此可以正确地译码单元数据。
根据本发明的再一个方面,通过一个用于在参考参数表的同时编码单元数据的可变长度编码方法产生一个位流。产生位流的可变长度编码方法是作为本发明的各个方面说明的任何一种可变长度编码方法。
利用一个位流可以获得这些可变长度编码方法的效果,例如,在编码单元数据时提高压缩效率。
具体实施方式
1.第一实施例
(1)可变长度编码设备的构造
[1]根据本发明的可变长度编码设备
图1是根据本发明的一个实施例的可变长度编码设备1的总体构造的方框图。可变长度编码设备是用于执行对输入数据的可变长度编码和建立位流的设备。更具体地讲,可变长度编码设备1的特征在于,它使用了算数编码作为主要编码方法。应当注意,算数编码是指一种通过响应实际产生的符号的概率动态地更新概率表提高编码效率的编码方法。
对于可变长度编码设备1可以有各种不同类型的输入数据,但是,将把本实施例作为一种输入图像数据的设备加以说明。也就是说,可变长度编码设备1具有对已经变换成数据的图像信号执行熵编码的功能。特别是对于MPEG方案,输入到可变长度编码设备1的图像数据是诸如量化的DCT系数和运动向量之类的图像数据。
可变长度编码设备1包括一个数据编码单元2和一个首部编码器3。
数据编码单元2是一个用于对每个单元数据的不是首部的数据执行算数编码的设备,并且带有算数编码器7,概率表更新单元8,和初始化单元9。应当注意,在图像数据的情况下,将这里称为单元数据的定义为一个画面或一个片段(slice)。此外,每个单元数据是由多个子数据的集合构成的。当数据的单元是一个画面时,子数据是片段、宏数据块、或数据块,当数据的单元是一个片段时,子数据是宏数据块或数据块。
算数编码器7是一个用于在数据输入之后把产生的数据输出到概率表更新单元8,和用于根据从概率表更新单元8输出的概率表,即,码字,编码数据的设备。
概率表更新单元8具有更新概率表的功能,并且是一个用于在响应从算数编码器7输出的产生的数据的概率更新概率表的同时,把概率表,即,码字,输出到算数编码器7的设备。
初始化单元9是一个用于把概率表初始化指令输出到概率表更新单元8的设备。
首部编码器3是一个用于以一种固定编码方法编码首部数据的设备。固定编码方法是指一种在编码过程中每个代码的码字不变的方法,并且包括固定长度编码方法和固定可变长度编码方法。由于使用了一种固定编码方法,因而可以容易地编码首部数据。
另一方面,把一种其中对应于每个代码的码字是改变的编码方法称为自适应编码方法。此外,在自适应编码方法内,有其中简单地切换指示代码与对应于代码的码字之间的关系的表的静态编码方法,和其中连续地更新码字本身的动态编码。也就是说,这意味着静态编码方法不是动态编码方法(一种诸如其中代码和对应于那些代码的码字之间的对应关系动态地改变的算数编码之类的编码方法)。结果,利用动态编码方法可以比利用静态编码方法更大地提高压缩比。
可变长度编码设备1进一步带有一个概率表编码器6。概率表编码器6是一个用于利用一种固定编码方法编码从概率表更新单元8输出的概率表的设备。由于它使用了一种固定编码方法,因此可以容易地编码概率表。
多路复用器4是一个用于多路复用从首部编码器3输出的编码首部数据、从算数编码器7输出的不是首部的编码数据、和从概率表编码器6输出的编码概率表数据,并且也用于产生代码串(位流)和把这些代码串输出到一个传输线路的设备。
[2]标准图像编码设备
在这里,使用图2的方框图说明一个标准图像编码设备100的构造。标准图像编码设备100包括运动估算/补偿单元(ME/MC)102,减法器103,转换编码单元104,转换译码单元105,加法器106,和熵编码单元107。应当注意,前面说明的数据编码单元2相当于熵编码单元107。
运动估算/补偿单元102接收输入的画面数据PicIn,并且产生要在要编码的画面中编码的数据块的预测数据块数据。运动估算/补偿单元102包括运动估算单元(ME)111,运动补偿单元(MC)112,和画面存储器113。
运动估算单元111接收输入的画面PicIn,并且计算运动向量MV,运动向量MV是画面存储器113中的重构图像的输入画面PicIn的运动。运动估算单元11把运动向量MV输出到运动补偿单元112,画面存储器113,和熵编码单元107。根据来自运动估算单元111的运动向量MV,运动补偿单元112从存储在画面存储器113中的重构画面,产生(补偿移动)作为对应于移动的参考画面的画面数据,并且将其输出到减法器103和加法器106。画面存储器113存储重构画面,并且通过运动估算单元111和运动补偿单元112读出重构画面。应当注意,当画面内编码时,把运动补偿参考画面的像素值取为0,并且减法器103和加法器106不经减法或加法运算地输出输入的数据。
减法器103确定输入画面PicIn的目标数据与来自运动补偿单元112的参考画面之间的差分值,并且把对应于这些差分值的差分数据输出到转换编码单元104。
转换编码单元104对来自减法器103的差分数据执行数据压缩处理,并且输出压缩数据。转换编码单元104包括一个正交变换单元114和一个量化单元115。正交变换单元114对来自减法器103的差分数据执行离散余弦变换处理(DCT处理),并且把该数据输出到量化单元115。DCT处理是其中把空域数据转换到频域数据的正交变换处理的一种类型。量化单元115通过一个量化步骤量化来自正交变换单元114的DCT数据,并且把量化系数输出到转换译码单元105和熵编码单元107。
转换译码单元105对来自转换编码单元104的输出执行数据扩展处理,并且输出扩展的数据。转换译码单元105包括一个逆量化单元116,和一个逆正交变换单元117。逆量化单元116用上述的量化步骤逆量化来自转换编码单元104的输出,并且将其输出到逆正交变换单元117。逆正交变换单元117对来自逆量化单元116的输出执行逆离散余弦变换处理(IDCT处理),并且把扩展的数据作为预测残留信号输出到加法器106。IDCT处理是一个其中把频域数据变换到空域数据的处理过程。
当宏数据块已经受到帧间运动补偿预测编码时,加法器106把通过将来自转换译码单元105的预测残留信号与来自运动补偿单元112的参考画面相加得到的画面数据,作为重构画面输出到画面存储器113。
熵编码单元107对来自DCT编码单元104的量化后DCT数据执行熵编码。熵编码是指其中利用位串的统计特性,把“0”与“1”的位串变换成一个较短的位串的编码。
(2)可变长度编码设备的操作
[1]数据编码单元和概率表编码器的操作
图3是显示数据编码单元2和概率表编码器6的操作的概况的流程图;
在步骤S1,初始化单元8把初始化指令输出到概率表更新单元8,概率表更新单元8把每个单元数据的概率表设置到初始值。在这个初始化操作中,初始化单元9和概率表更新单元8根据首部中的初始化数据执行概率表初始化。可以把所有单元数据共同的数据用作概率表中的初始化数据。当数据的单元是一个画面时,初始化的有效共用数据的例子包括图像编码类型(编码内画面,预测编码画面,和双预测编码画面之间的区别),和画面量化参数的初始值。应当注意,与初始化没有多大关系的共用数据包括诸如图像编码顺序、画面显示顺序、运动向量、和图像尺寸之类的参数。当数据的单元是一个片段时,例子包括片段编码类型(编码内片段、预测编码片段、和双预测片段之间的区别),和片段量化参数的初始值。
在步骤S2,算数编码器7和概率表更新单元8协同操作,以执行子数据的算数编码。更具体地讲,根据从概率表更新单元8输出的概率,算数编码器7从概率表获得子数据编码中使用的概率,并且参考这些概率编码子数据。更具体地讲,数据的单元是画面或片段,并且编码作为子数据的宏数据块或数据块。
在步骤S3,根据产生的数据,由概率表更新单元8更新产生的数据的概率表。在本实施例中,当对下一个子数据执行算数编码时使用更新的概率表。
在步骤S4,确定所有子数据的编码是否完成。如果确定所有子数据的编码没有完成,那么过程返回到步骤S2,并且重复上述操作。
在步骤S5,确定是否要编码概率表,如果要编码概率表,那么过程前进到步骤S6,如果不要编码,那么跳过步骤S6。算数编码器7产生一个用于标识确定结果的标志,并且把这个标志与编码数据一同输出到多路复用器4。应当注意,例如,在直到初始化下一个概率表之前的数据量足够大(也就是说,学习所需的数据量对被占据的数据总量的比例足够小,因此学习效率高)的情况下,或在用作初始值的概率表与通过学习获得的最佳概率表基本上或完全一致的情况下,不对用作初始值的概率表编码。
在步骤S6,通过概率表编码器6编码概率表更新单元8的概率表。
由于除了子数据的第一编码之外,根据编码子数据值更新概率表,并且从概率表获得概率,所以通过上述编码方法可以提高压缩效率。更具体地讲,由于要在编码子数据中使用的概率表是一个通过在前子数据的算数编码更新的概率表,因此可以实时取得编码,并且可以提高编码速度。此外,由于画面的空间和时间相关,可以获得良好的压缩效率。
应当注意,可以利用通过执行单元数据的初始值的算数编码获得的概率表执行算数编码。在这种情况下,即使当单元数据与在前单元数据的内容之间存在大的差别时,也有高的压缩效率。
图4中所示的流程图是图3中所示的流程的改进,并且是一种当在步骤S6中通过概率表编码器6编码概率表更新单元8的代码表时,仅对概率表的一部分编码的情况。在这种情况下,可以减少代码量,此外,通过使用一种其中仅对获得的概率表中的具有高概率的编码数据部分进行编码的方法,在译码时可以取得足够正确的译码。具有低概率的数据部分利用初始值初始化。在步骤S7,利用初始值初始化概率表中没有编码的部分。即,当仅对概率表的重要部分编码时,通过用初始值初始化没有编码的部分,当不依赖于直到此时的概率表的值指定用于编码的概率表时,可以把概率表的所有比率设置到规定值,并且可以使编码设备和译码设备的概率表匹配。
[2]首部编码单元的操作
首部编码器3编码输入的首部数据,并且把编码的首部数据输出到多路复用器4。
[3]多路复用器的操作
多路复用器从算数编码器7、首部编码器3、和概率表编码器6输出的数据产生一个位流,并且将其输出到一个传输线路。
图5示出了一个画面数据流的结构的例子。如图5中所示,流是由诸如首部之类的共用数据区和GOP(画面组)区构成的。GOP区是由诸如首部之类的共用数据区和多个画面区构成的。画面区是由诸如首部之类的共用数据区和多个片段数据区构成的。片段数据区是由诸如首部之类的共用数据区和多个宏数据块数据区构成的。
此外,流不必是一个连续的位流。当在(最终的分割数据单元)数据包中发送时,那么可以分离首部部分和数据部分,并且分离地发送。在这种情况下,首部部分和数据部分不是像图5中所示的一个单独的位流。但是,在数据包的情况下,尽管首部部分和数据部分的发送序列不是连续的,对应的数据部分和它们的对应首部部分简单地在分离的数据包中发送,并且即使这不是一个单一的位流,但概念与图5中所示的位流相同。
图6示出了画面数据流的结构的另一个例子。这个流的结构与图5中所示的流的结构基本相同,因此下面仅就不同点进行说明。在这个流的结构中,GOP和画面没有首部。只有片段具有首部。GOP和画面在它们的前导部分中具有作为共用数据的各种参数。参数相当于一个首部,但是差别在于只要参数不被更新,那么参数对于后续画面也是有效的。例如,这意味着对应于一个画面首部的参数是直到对应于下一个画面首部的参数被发送之前的所有画面的画面首部。
图7示出了在上述单元数据是一个画面的画面数据时,从多路复用器4输出的一个位流的数据结构。画面一般是由一个首部,和作为编码子数据的多个片段构成的。首部指示一个画面的编码数据的开始,并且主要是由每个片段的共用数据构成的(例如,图像编码类型[编码内画面和预测编码画面之间的区别],和诸如指示画面编码的顺序或显示顺序的数字字类的参数)。
一个初始值标志放置在首部。初始值标志是一个用于标识用作初始值的概率表是否要编码的标志。如果要编码概率表,那么标志是“1”,如果不要编码,那么标志是“0”。
此外,如图7(a)中所示,编码概率表数据放置在首部作为概率表初始值。当不要编码概率表时,不把概率表编码数据从概率表编码器6输出到多路复用器4,其结果是,如图7(b)中所示,概率表编码数据没有被放置在位流中。
如上所述,首部包括首部编码器3编码的(原来在首部部分中的)共用数据部分,算术编码器7产生的初始值标志,和概率表编码器6编码的编码概率表数据。更具体地讲,共用数据部分被划分成一个前导部分方和一个画面数据方,插在它们之间的顺序是初始值标志和编码概率表数据。
图8示出了当数据的单元是图像数据的片段时,从多路复用器4输出的位流的数据结构。片段一般是由一个首部,和作为编码子数据的多个数据块(或宏数据块)构成的。首部指示一个片段的编码数据的开始,并且主要是由每个片段的共用数据(诸如开始代码和量化标度之类的参数)构成的。此外,初始值标志放置在首部。初始值标志是一个用于标识是否要编码用作初始值的概率表的标志。如果要编码概率表,那么标志是“1”,如果不要编码,那么标志是“0”。
此外,如图8(a)中所示,编码的概率表数据放置在首部内,作为概率表初始值。当不要编码概率表时,不把编码概率表数据从概率表编码器6输出到多路复用器4,结果是,如图8(b)中所示,编码概率表数据没有放置在位流中。
如上所述,首部包括首部编码器3编码的(原来在首部部分中的)共用数据部分,算术编码器7产生的一个初始值标志,和概率表编码器6编码的编码概率表数据。更具体地讲,共用数据部分被划分成一个前导部分方和一个画面数据方,插在它们之间的顺序是初始值标志和概率表编码数据。
应当注意,在本实施例中,概率表本身被编码并且作为概率表有关的数据插在首部中,但是,代替这种情况,可以编码指示获得的概率表的信息(例如,公式、指示概率表的标志、或指示这些组合的信息),并且***到首部。在这种情况下,由于概率表本身没有被编码,因此可以减少编码量。
作为指示获得的概率表的信息的另一例子,可以使用首部中的共用数据的一部分。在这种情况下,由于数据在单元数据中也发挥一部分共用数据的功能,因此可以进一步减少编码量。当数据的单元是一个画面时,共用数据的例子包括图像编码类型(编码内画面,预测编码画面,和双预测画面之间的区别),和画面量化参数的初始值。应当注意,与初始化没有多大关系的共用数据包括诸如图像编码顺序、画面显示顺序、运动向量、和图像尺寸之类的参数。当数据的单元是一个片段时,例子包括片段编码类型(编码内片段、预测编码片段、和双预测片段之间的区别),和片段量化参数的初始值。此外,通过保证初始值总是更新,即,通过保证总是发送初始值,可以省去初始值标志。
(3)可变长度译码设备的构造
[1]根据本发明的可变长度译码设备
图9是显示根据本发明的一个实施例的可变长度译码设备11的总体构造的方框图。例如,可变长度译码设备11是一个用于译码已经由可变长度编码设备1编码的数据的设备。当对象是图像数据时,可变长度译码设备11具有执行数据的熵译码,和获得变换的图像数据的功能。
可变长度译码设备11主要带有一个数据译码单元12,和一个首部译码单元13。
数据译码单元12是一个用于对不是每个单元数据的首部的数据执行算术译码的设备,并且带有算术译码器17、概率表更新单元18、和初始化单元19。应当注意,在这里所指数据的单元,在图像数据情况下,意味着一个画面或一个片段。
算术译码器17是一个用于在输入了编码数据之后,把产生的数据输出到概率表更新单元18,并且根据从概率表更新单元18输出的概率表数据,即,码字,译码编码数据的设备。
概率表更新单元18具有更新概率表的功能,并且是一个用于在响应从算术译码器17输出的产生的数据的概率更新概率表的同时,把概率表,即,码字,输出到算术译码器17的设备。
初始化单元19是一个用于把来自概率表的初始化指令输出到概率表更新单元18的设备。
首部编码器13是一个用一种固定译码方法译码编码首部数据的设备。
可变长度译码设备11进一步带有一个概率表译码器16。概率表译码器16是一个用一种固定译码方法译码编码概率表数据的设备。
多路分解器14是一个用于把位流多路分解为编码首部数据、不是首部的编码数据、和编码概率表数据并且输出的设备。
[2]标准图像译码设备
在这里用图10的方框图说明一个标准图像译码设备200的内部构造。图像译码设备200包括预测数据产生单元202,转换译码单元204,加法器206,和熵译码单元207。应当注意,前面提到的数据译码单元12相当于熵译码单元207。
熵译码单元207根据概率表执行输入的流数据的熵译码,并且把该数据输出到转换译码单元204和预测数据产生单元202。熵译码是一种熵编码反方向的处理过程,并且在本实施例中是指算数译码。
预测数据产生单元202包括一个运动补偿单元212和一个画面存储器213。把从加法器206输出的画面作为参考画面输出,并且存储在画面存储器213中。根据熵译码单元207译码的运动向量MV,运动补偿单元212从存储在画面存储器213中的参考画面产生对应于运动向量MV的作为预测画面(运动补偿)的画面数据,并且将其输出到加法器206。应当注意,当编码内编码画面时,运动补偿参考画面的像素值取为0,并且加法器206不执行加法地输出输入的数据。此外,把译码的运动向量存储在画面存储器213中。
转换译码单元204对来自熵译码单元207的输出执行数据扩展处理,并且输出扩展的数据。转换译码单元204包括一个逆量化单元214和一个逆正交变换单元215。逆量化单元214反向量化来自熵译码单元207的输出,并且将其输出到逆正交变换单元215。逆正交变换单元215对来自逆量化单元214的输出执行逆离散余弦变换处理(IDCT处理),并且把扩展的数据输出到加法器206。IDCT处理是一个其中把频域数据变换成时域数据的处理过程。
加法器206把通过将来自转换编码单元204的画面数据和与来自运动补偿单元212的估算画面相加的画面数据相加获得的画面数据作为输出画面输出,并且也把结果输出到画面存储器213。
(4)可变长度译码设备的操作
[1]多路分解器的操作
多路分解器14多路分解一个位流,把编码首部输出到首部译码器13,把不是首部的编码数据输出到算数译码器15,并且当存在编码概率表数据时,把编码概率表数据输出到概率表译码器16。应当注意,首部译码器13把首部的译码初始值标志输出到初始化单元19。
[2]首部译码器的操作
首部译码器13译码从多路分解器14输出的编码首部数据,并且输出首部数据。
[3]数据译码单元和概率表编码器的操作
图11是显示数据译码单元12和概率表译码器16的操作的概况的流程图。
在步骤S21,初始化单元19初始化概率表更新单元18,以便把概率表设置到初始值。
在步骤S22,根据嵌在首部中的初始值标志,初始化单元19确定是否要编码概率表。如果确定要编码概率表,那么过程前进到步骤S23,如果确定不编码概率表,那么过程跳过步骤S23,并且前进到步骤S24。
在步骤S23,概率表更新单元18用从概率表译码器16输出的概率表更新概率表。输入到概率表译码器16的编码概率表数据有时是整个概率表,有时是概率表的一部分。即使在仅是概率表的一部分被编码时,如果编码的是对应于获得的概率表中具有高概率的编码数据部分,那么在译码操作中,可以取得适当的译码(以后将要说明)。应当注意,当仅有代码表的一部分被编码时,用与步骤S21中相同值初始化未编码的概率表。
应当注意,当编码指示概率表的信息,而不是概率表本身时,那么首先对信息译码,然后概率表更新单元18选择该数据指示的概率表。
在步骤S24,算数译码器17和概率表更新单元18协同操作,以对子数据执行算数译码。更具体地讲,根据来自概率表更新单元18的概率表,算数译码器17译码编码子数据,并输出数据。例如,当数据的单元是一个画面时,对片段译码。在步骤S16,把算数译码器18的产生的数据输出到概率表更新道元18,概率表更新单元18用产生的数据重写概率表。在步骤S24中,在下一个子数据的译码中使用更新的概率表。
在步骤S25,确定是否所有子数据的译码已经完成。如果确定所有子数据的译码没有完成,那么过程返回到步骤S24,并且重复上述操作。
(5)上述编码方法和译码方法的效用
[1]由于子数据是根据通过算数编码获得的概率表编码的,因此通过上述编码和译码方法提高了压缩效率。也就是说,通过这些编码和译码方法,即使总数据量小,并且因此惯用方法直到通过学习获得最佳编码之前所需的编码数据量的比例相当大时,由于高的学习效率,也可以提高压缩效率。
此外,由于初始化的概率表被编码并且被放置在编码单元数据的首部,因此在利用该概率表作为初始值译码的过程中,可以正确地译码编码单元数据。
[2]由于概率表是以画面或片段单元编码的,因此通过上述编码和译码方法,编码概率表的频率是适当的。首先,即使在传输错误中丢失了应当在学习中使用的一部分编码数据,并且在译码时不能复制与编码时相同的概率表,由于编码概率表是用高频率译码的,所以图像不能播放的状态不会延续超过数秒钟。如果以流或GOP单元编码,那么编码概率表的频率低,并且当在传输错误中丢失了应当在学习中使用的一部分编码数据和不能复制概率表时,产生了图像不能播放超过数秒钟的条件。第二,不会有大量的冗余概率表数据。如果以数据块(或宏数据块)单元编码,那么初始化数据的冗余将会太大。
[3]在上述编码和译码方法中,通过算数编码取得了对图像数据的主要部分的高压缩率。与此相反,作为共用数据的首部是用一种固定编码方法简单和静态地编码的。更具体地讲,首部中原始首部部分是用一种固定编码方法编码的,并且***的概率表初始值也是用一种固定编码方法编码的。由于与图像数据的主要部分相比,首部的压缩效率总是低的,因此就总体压缩效率而言,使用固定编码方法没有特别大的问题。
2.第二实施例
(1)可变长度编码设备的构造
图12是根据本发明的一个实施例的可变长度编码设备21的总体构造的方框图。可变长度编码设备21是一个用于执行对输入数据的可变长度编码,并且建立位流的设备。更具体地讲,可变长度编码设备21的特征在于,作为一种主要编码方法,它在多个可变长度代码表之间切换。可变长度编码的一个典型例子是Huffman编码,并且以下的说明将使用Huffman编码作为一个例子。
可以把各种不同类型的输入数据用于可变长度编码设备21,但是把本实施例作为一个输入图像数据的设备描述。也就是说,可变长度编码设备21具有一种对已经转换成数据的画面信号执行熵编码的功能。特别是对于MPEG方案,输入到可变长度编码设备21的画面数据是量化DCT系数和运动向量。
可变长度编码设备21包括一个数据编码单元22和一个首部编码器23。
数据编码单元22是一个用于执行每个单元数据的不是首部的数据的Huffman编码的设备,并包括可变长度编码器27、代码表选择单元28、和初始化单元29。应当注意,单元数据是由多个子数据的集合构成的,并且当数据的单元是一个画面时,子数据是片段、宏数据块、或数据块。此外,数据编码单元22相当于图2中所示的标准图像编码设备100中的熵编码单元107。
可变长度编码器27是一个用于在数据输入之后把产生的数据输出到代码表选择单元28,和用于根据代码表选择单元28切换的可变长度代码表30,即,码子,编码数据的设备。
代码表选择单元28是一个用于响应从可变长度编码器27输出的产生的数据的概率,把一个代码表选择信号输出到转换开关25的设备。
转换开关25是一个用于根据从代码表选择单元28输出的代码表选择信号,切换在可变长度编码器27编码数据时使用的可变长度代码表30的设备。
初始化单元29是一个用于把代码表选择信号的初始化指令输出到代码表选择单元28的设备。
图13示出了可变长度代码表30的特定例子。可变长度代码表30a至30c中的每一个都是由数据与对应于该数据的位串的组合构成的。在可变长度代码表30a至30c的白的部分中使用了共用位串(在代码表30a中从数据1,在代码表30b中从数据2,和在代码表30c中从数据4)。此外,在共用部分中使用了不同位串(代码表30a中的数据0,代码表30b中的数据0和1,和代码表30c中的数据0至3)。共用部分的数据是具有比较高的概率的数据。如果可以处理具有高概率的一位数据,那么选择代码表30a,如果可以处理具有高概率的两位数据,那么选择代码表30b,如果可以处理具有高概率的三位数据,那么选择代码表30c。与此相反,白的部分的代码是用于具有比较低的概率的数据。以这种方式,通过排列具有比较低的概率的数据的位串,可以用小的数据量准备不同的可变长度代码表,以减小存储器,此外,使编码操作更容易。
首部编码器23是一个用固定编码方法编码首部数据的设备。
可变长度编码设备21进一步带有一个选择信号编码器26。选择信号编码器26是一个用一种固定编码方法编码从代码表选择单元28输出的代码表选择信号的设备。
多路复用器24是一个用于多路复用从首部编码器23输出的编码首部数据,从可变长度编码器27输出的不是首部的编码数据,和从选择信号编码器26输出的编码选择信号数据,并且产生代码串(位串)和把这些代码串输出到一个传输线路的设备。
(2)可变长度编码设备的操作
[1]数据编码单元和选择信号编码设备的操作
图14是显示数据编码单元22和选择信号编码器26的操作的概况的流程图。
在步骤S31,初始化单元29把一个初始化指令输出到代码表选择单元28,代码表选择单元28将一个代码表选择信号输出到转换开关25。这个结果是,转换开关25选择一个可变长度代码表30作为单元数据的编码的初始值。在这个初始化操作中,初始化单元29和代码表选择单元28根据首部中的初始化数据选择一个可变长度代码表30。应当注意,在图12中省略了通过其将首部数据发送到初始化单元29和代码表选择单元28的线路。
在步骤S32,可变长度编码器27和代码表选择单元28协调操作,以执行子数据的Huffman编码。更具体地讲,代码表选择单元28根据直到该点产生的数据,把一个代码表选择信号输出到转换开关25。根据代码表选择信号,转换开关25切换可变长度代码表30,并且可变长度编码器27利用选择的可变长度代码表30的码字编码子数据。此外,每个单元数据是由多个子数据的集合构成的。更具体地讲,当数据的单元是一个画面时,将片段、宏数据块、或数据块作为子数据编码,当数据单元是一个片段时,把宏数据块或数据块作为子数据编码。
在步骤S33,将子数据输出到代码表选择单元28,代码表选择单元28更新子数据的产生频率,其指示当转换开关25下一次执行切换时,应当选择哪一个代码表。在本实施例中,当对下一个子数据执行可变长度编码时,使用这个代码表。
在步骤S34,确定所有子数据的编码是否已经完成。如果确定所有子数据的编码没有完成,那么过程返回到步骤S32,并且重复上述操作。
在步骤S35,确定是否要编码指示用作初始值的可变长度代码表30的信息(即,代码表选择信号)。如果要对这个信息进行编码,那么过程前进到步骤S36,如果不要编码这个信息,那么跳过步骤S36。应当注意,例如,在直到初始化下一个可变长度代码表之前的数据量足够大(也就是说,学习所需的数据量与总数据量的比例足够小,并且因此学习效率高)的情况下,或是在用作初始值的可变长度代码表与通过学习选择的最佳代码表一致的情况下,不编码用作初始值的可变长度代码表。可变长度编码器27产生一个用于标识确定结果的初始值标志,并且把这个标志与编码数据一同输出到多路复用器24。
在步骤S36,将代码表选择单元28通过其指示有关可变长度代码表的代码表选择信号输出到选择信号编码器26。
由于除了子数据的第一编码之外,可变长度代码表是根据编码子数据值选择的,因此,通过上述编码方法提高了子数据的压缩效率。特别是,由于编码子数据中使用的可变长度代码表是一个通过在前子数据的Huffman编码选择的可变长度代码表,因此可以实时地取得编码,并且可以提高编码速度。此外,通过画面的空间和时间相关,可以获得良好的压缩效率。
[2]首部编码单元的操作
首部编码器23编码输入的首部数据,并且将其输出到多路复用器24。
[3]多路复用器的操作
多路复用器24从自可变长度编码器器27、首部编码器23、和选择信息编码器26输出的数据产生一个位流,并且将其输出到一个传输线路。
图15示出了当数据的单元是一个图像数据的画面时,从多路复用器24输出的位流数据结构。画面一般是由一个首部,和多个作为编码子数据的片段构成的。首部指示一个画面的编码数据的开始,并且具有每个片段的共用数据(例如,图像编码类型[编码内画面、预测编码画面、和双预测编码画面之间的区别],和画面量化参数的初始值)。应当注意,与初始化没有多大关系的共用数据包括诸如图像编码顺序、画面显示顺序、运动向量、和图像尺寸之类的参数。
一个初始值标志放置在首部。初始值标志是一个用于标识是否要编码指示可变长度代码表的信息的标志。如果要编码指示可变长度代码表的信息,那么标志是“1”,如果不编码,那么标志是“0”。
此外,如图15(a)中所示,将指示要使用的可变长度代码表的编码选择信号数据(例如,一个公式、一个指示一个概率表的标志、或指示这些组合的信息)放置在首部中。应当注意,当不编码指示可变长度代码表的信息时,不把编码选择信号数据从选择信号编码器26输出到多路复用器24,因此结果是不把编码选择信号数据放置在位流中,如图15(b)中所示。
如上所述,首部包括由首部编码器23编码的共用数据部分(原来在首部部分中),一个由可变长度编码器27产生的初始值标志,和由选择信号编码器26编码的编码选择信号数据。更具体地讲,共用数据部分被划分成一个前导部分方和一个画面数据方,顺序插在它们之间的是初始值标志和编码选择信号数据。
图16示出了当数据的单元是图像数据的一个片段时,从多路复用器24输出的位流的数据结构。片段一般是由一个首部和多个作为编码子数据数据块(或宏数据块)构成的。首部指示一个片段中编码数据的开始,并且主要是由每个片段的共用数据(诸如开始代码的参数之类的参数,和一个量化标度)构成的。
共用数据的例子包括片段编码类型(内编码片段、预测编码片段、和双预测编码片段之间的区别),和片段量化参数的初始值。
此外,一个初始值标志放置在首部中。初始值标志是一个用于标识是否要编码指示可变长度代码表的信息的标志。如果要编码指示可变长度代码表的信息,那么标志是“1”,如果不编码,那么标志是“0”。
此外,如图16(a)中所示,指示要使用的可变长度代码表的编码选择信息信息放置在首部中。应当注意,当不编码可变长度代码表编时,不把编码选择信号数据从选择信号编码器26输出到多路复用器24,因此,结果是没有把编码选择信号数据放置到位流中,如图16(b)中所示。
如上所述,首部包括由首部编码器23编码的共用数据部分(其原来在首部部分中),由可变长度编码器27产生的一个初始值标志,和由选择信息编码器27编码的编码选择信息数据。更具体地讲,共用数据部分被划分成一个前导部分方和一个画面数据方,顺序插在它们之间的是初始值标志和编码选择信号信息。
应当注意,在本实施例中,可变长度代码表本身不编码和***到首部中,而是把指示要使用的可变长度代码表的信息***到首部中。结果,由于不编码可变长度代码表本身,因此可以减少编码量。
作为指示要使用的可变长度代码表的编码选择信号信息的又一个例子,可以使用首部中的共用数据的一部分。在这种情况下,由于该数据在数据的单元中也发挥共用数据的一部分的功能,因此可以进一步减少编码量。当数据的单元是一个画面时,共用数据的例子包括图像编码类型(编码内画面、预测编码画面、和双预测编码画面之间的区别),和画面量化参数的初始值。应当注意,与初始化没有多大关系的共用数据包括图像编码顺序、画面显示顺序、运动向量、和图像尺寸之类的参数。当数据的单元是一个片段时,例子包括片段编码类型(编码内片段、预测编码片段、和双预测编码片段之间的区别),和片段量化参数的初始值。
此外,通过保证初始值总是被更新,可以省略初始值标志。
(3)可变长度译码设备的操作
图17是显示根据本发明的一个实施例的可变长度译码设备31的总体构造的方框图。可变长度译码设备31是,例如,一个用于译码已经由可变长度编码设备21编码的数据的设备。当对象是图像数据时,可变长度译码设备31具有执行数据的熵译码,和获得变换的图像数据的功能。
可变长度译码设备31包括一个数据译码单元32和一个首部译码单元33。
数据译码单元32是一个用于对不是每个单元数据的首部的数据进行Huffman译码的设备,并且带有一个可变长度译码设备37,和一个选择信号译码器36。应当注意,在图像数据的情况下,这里使用的数据的单元是指一个画面或一个片段。此外,数据译码单元32相当于图10所示的标准编码设备200中的熵译码单元207。
可变长度译码设备37是一个用于根据由一个转换开关35切换的可变长度代码表30的码字对编码数据的设备译码。
选择信号译码器36是一个用一种固定译码方法译码从多路分解器34输出的编码选择信号数据,并且将其输出到转换开关35的设备。
转换开关35是一个用于根据从选择信号译码单元36输出的代码表选择信号,切换在可变长度译码单元37译码数据时使用的可变长度代码表30的设备。
初始化单元39是一个用于把初始化指令输出到选择信号译码单元36的设备。
首部译码器33是一个用一种固定译码方法译码编码首部数据的设备。
多路分解器34是一个用于将位流多路分解为编码首部数据、不是首部的编码数据、和编码选择信号数据,并输出的设备。
(4)可变长度译码设备的操作
[1]多路分解器的操作
多路分解器34多路分解一个位流,把编码首部数据输出到首部译码器33,把不是首部的编码数据输出到可变长度译码设备37,和当存在编码选择信号数据时,把编码选择信号数据输出到选择信号译码器36。应当注意,首部译码器33把首部的初始值标志输出到初始化单元39。
[2]首部译码器的操作
首部译码器33译码从多路分解器34输出的编码首部数据,并输出首部数据。
[3]数据译码单元的操作。
图18是显示数据译码单元32的操作的概况的流程图。
在步骤S51,初始化单元39把初始化指令输出到选择信号译码器36,选择信号译码器36将一个代码表选择信号输出到转换开关35。结果是转换开关35选择用于译码单元数据的作为初始值的可变长度代码表30。
在步骤S52,可变长度译码单元37根据插在首部中的初始值标志,确定是否要编码指示要使用的可变长度代码表的信息。如果确定要编码指示可变长度代码表的信息,那么过程前进到步骤S53,如果确定不编码,那么过程跳过步骤S53,并且前进到步骤S54。
在步骤S53,转换开关35选择由选择信号译码器36输出的选择信号指示的可变长度代码表30。
在步骤S54,可变长度译码设备37执行对子数据的Huffman译码。更具体地讲,根据转换开关35选择的可变长度代码表30,可变长度译码设备37译码编码子数据,并且输出数据。例如,当单元数据是一个画面时,对片段译码。在步骤S56,可变长度译码设备37经过转换开关35选择具有产生的数据的可变长度代码表30。在步骤S54,在下一个子数据的译码中使用选择的可变长度代码表30。
在步骤S55,确定所有子数据的译码是否已经完成。如果确定没有完成所有子数据的译码,那么过程返回到步骤S52,并且重复上述操作。
(5)上述编码方法和译码方法的效用
[1]由于子数据是根据通过Huffman编码获得的可变长度代码表编码的,因此通过上述编码和译码方法提高了压缩效率。也就是说,即使总数据量小,并且因此直到通过学习获得最佳编码时惯用方法所需的编码数据量的比例相当大的情况下,通过这些编码和译码方法,也可以通过高的学习效率提高压缩效率。
此外,由于指示初始化代码表的信息被编码并且放置在编码单元数据的首部,因此,在利用该信息指示的可变长度代码表作为初始值译码的过程中,可以正确地译码编码单元数据。
[2]由于可变长度代码表是以画面或片段单元编码的,因此,通过上述编码和译码方法,编码指示可变长度代码表的信息的频率是适当的。首先,由于编码概率表是以高的频率编码的,因此,即使当在传输错误中丢失了编码选择信号数据时,图像不能播放决不会超过数秒钟。当以流或GOP单元编码时,指示可变长度代码表的信息是以低的频率编码的,并且当在传输线路错误中丢失了编码选择信号数据时,图像不能播放将会超过数秒钟。第二,将不会有大量的指示可变长度代码表的冗余信息。当以数据块(或宏数据块)单元编码时,冗余初始化数据变的过大。
[3]在上述编码和译码方法中,通过在多个可变长度代码表之间的Huffman编码切换,对图像数据的主要部分取得了高的压缩效率。与此相反,(作为共用数据的)首部是使用一种固定编码方法编码的。更具体地讲,首部中原始首部部分是用一种固定编码方法编码的,并且指示可变长度代码表的***信息也是用一种固定编码方法编码的。由于与图像数据的主要部分相比,首部的压缩效率总是比较低,因此,就总体压缩效率而言,在使用固定编码方法中不存在特别大的问题。
3.存储介质实施例
通过把执行上述实施例中所示的可变长度编码方法或可变长度译码方法的一个程序存储在诸如软盘之类的存储介质上,可以容易地在一个独立的计算机***上执行实施例中所示的处理过程。
图19示出了利用其上存储了上述实施例的可变长度编码方法或可变长度译码方法的软盘,在一个计算机***上执行本发明的情况。
图19(b)示出了一个软盘的外观的前视图,其横截面图,和一个软盘。图19(a)示出了(作为存储介质的主要部分的)一个软盘的物理格式的例子。软盘FD安装在外壳F中,并且盘的表面上从外边缘到内边缘同心地形成有多个磁道Tr。每个磁道在角度方向上被划分成16个扇区Se。因此,通过一个存储着上述程序的软盘,把可变长度编码方法或可变长度译码方法作为上述程序记录在软盘FD的指定区域上。
此外,图19(c)示出了一个用于记录和重放软盘FD上的程序的装置。当把程序记录到软盘FD上时,经过一个软盘驱动器从一个计算机***写入可变长度编码方法或可变长度译码方法。此外,当凭借软盘上的程序在计算机***上构造可变长度编码方法或可变长度译码方法时,通过软盘驱动器从软盘读出程序,并且传送到计算机***。
应当注意,将软盘用作存储介质来举例说明上述的解释,但是,也可以同样地使用光盘。此外,存储介质不限于上述例子,并且只要它是一种可以在其上进行记录的介质,例如,CD-ROM,存储卡,或ROM盒,就可以用相同的方式执行程序。
4.本发明的示例应用和利用它们的***
以下说明上述实施例中显示的运动图像编码方法和运动图像译码方法的示例应用,以及利用它们的***。
图20是显示一个实行内容提供服务的内容提供***ex100的整体构造的方框图。提供通信服务的区被划分成希望的大小,并且把(作为固定无线台的)基站ex107至ex110安装在对应的蜂窝内。
例如,内容提供***ex100经过基站ex107至ex110,连接因特网ex101上的一个因特网服务提供商ex102,和一个电话网ex104,以及诸如计算机ex111,PDA(个人数字助理)ex112,摄像机113,移动电话ex114,和装备有照相机的移动电话ex115之类的各种设备。
但是,内容提供***ex100并不限于图17中所示的布置,并且可以布置和连接这些设备的任意组合。此外,可以不经过(作为固定无线站的)基站ex107至ex110,直接通过电话网ex104连接各个设备。
摄像机ex113是一个像能够捕获运动图像的数字视频照相机这样的设备。此外,移动电话可以是在诸如PDC(个人数字通信),CDMA(码分多址),W-CDMA(宽带码分多址),或GSM(全球移动通信***),PHS(个人手持电话***)之类的协议上操作的设备。
此外,一个流服务器ex103可以经过基站ex109和电话网ex104连接到摄像机ex113,并且使用摄像机ex113的用户可以进行基于编码数据的现场转播。编码捕获数据的处理可以通过摄像机ex113,或通过服务器之类的发送数据的设备执行。此外,可以经过计算机ex111把照相机ex116捕获的运动图像数据发送到流服务器ex103。照相机ex116是一个可以捕获静止图像和运动图像的数据照相机之类的设备。在这种情况下,可以通过照相机ex116或计算机ex111执行运动图像数据的编码。此外,编码处理通过提供在计算机ex111或照相机ex116中的LSI芯片ex117执行。应当注意,可以把用于编码/译码图像的软件结合到能够由计算机ex111等读出的任何存储介质上(例如,CD-ROM,软盘,和硬盘)。此外,可以通过装备有照相机的移动电话ex115发送运动图像数据。当这样作时,运动图像数据是由提供在移动电话ex115中的LSI芯片编码的数据。
通过内容提供***ex100,把用户利用摄像机ex113,照相机ex116等捕获的内容(例如,捕获现场音乐会的图像)用上述实施例中相同的方式编码,并且发送到流服务器ex103,流服务器ex103把内容发送到请求它的客户。客户的例子包括诸如计算机ex111、PDA ex112、摄像机ex113、和移动电话ex114之类的能够译码和编码数据的设备。因此,内容提供***ex100是一个使得客户能够接收和重放编码数据的***。此外,通过在客户接收、译码、和重放编码数据,可以利用***取得独立的广播。
上述实施例中所示的运动图像编码设备或运动图像译码设备可以在构成这种***的编码和译码设备中使用。
以下的例子说明一个带有本发明的移动电话的使用。
图21示出了一个使用上述实施例中所示的运动图像编码方法和运动图像译码方法的移动电话ex115。移动电话ex115带有一个用于向和从基站ex110发送和接收无线电波的天线ex201,一个能够捕获图像和静止画面的诸如CCD照相机之类的照相单元ex203,一个显示照相单元ex203捕获的或天线ex201接收的译码图像数据的液晶显示器之类的显示单元ex202,一个由操作键ex204构成的主单元,一个诸如扬声器之类的用于输出话音的话音输出单元ex208,一个诸如话筒之类的用于输入话音的话音输入单元ex205,一个用于存储诸如捕获的活动或静止图像数据之类的编码或译码数据、接收的电子邮件数据、和运动图像数据或静止图像数据的存储介质ex207,和一个使存储介质ex207能够装配到移动电话ex115中的缝隙ex206。存储介质ex207覆盖在一个闪存设备中,闪存设备是EEPROM(可电擦除可编程只读存储器)类型的,这种类型的存储设备是覆盖在一个塑料外壳中并且可以电重写和擦除的非易失性存储器,例如,SD卡。
以下参考图22进一步说明移动电话ex115。一个电源电路单元ex310、一个操作输入控制单元ex304、一个图像编码单元ex312、一个照相机接口单元ex303、一个LCD(液晶显示器)控制单元ex302、一个图像译码单元ex309、一个多路复用/多路分解单元ex308、一个记录重放单元ex307、一个调制解调电路单元ex306、和一个话音处理单元305经过一个同步总线ex313相互连接到一个主控制单元ex311,主控制单元ex311中心控制带有显示单元ex202和操作键ex204的主单元的每个单元。
当一个呼叫结束或用户接通电源键时,电源电路单元ex310将电源从电池组提供到每个单元,因此启动装备着照相机的移动电话ex115操作。
根据主控制单元ex311(其包括一个CPU、一个ROM、一个RAM、等等)的控制,移动电话ex115通过话音处理单元ex305把话音呼叫模式期间话音输入单元ex205收集的话音信号转换成数字话音数据,并且这些数字话音数据受到调制解调电路单元ex306的扩展频谱处理,并且在经受数-模转换和频率变换之后,由接收/发送电路单元ex301经过天线ex201发送。此外,在通过移动电话ex115话音呼叫模式期间,在天线ex201接收的接收信号经过放大和受到频率变换,数-模转换,和调制解调电路单元ex306的逆扩展频谱处理,并且由话音处理单元ex305转换成模拟话音信号之后,将它们经过话音输出单元ex208输出。
此外,当在数据发送模式发送电子邮件时,把通过主单元的操作键ex204的操作输入的电子邮件的文本数据经过操作输入控制单元ex304发送到主控制单元ex311。在通过调制解调电路单元ex306对文本数据执行扩展频谱处理之后,主控制单元ex311把文本数据经过天线ex201发送到基站ex110,然后受到接收/发送电路单元ex301的数-模转换和频率变换。
当在数据发送模式发送图像时,照相机单元ex203捕获的图像数据经过照相机接口单元ex303提供到图像编码单元ex312。此外,如果不打算发送图像数据,那么也可以把照相机单元ex203捕获的图像数据经过照相机接口单元ex303和LCD控制单元ex302直接显示在显示单元ex202上。
图像编码单元ex312是一种带有本申请中说明的图像编码设备的构造。通过经受利用上述实施例中所示的图像编码设备中使用的编码方法的压缩编码,把照相机单元ex203提供的图像数据转换成编码图像数据,并且把这种数据发送到多路复用/多路分解单元ex308。此外,在照相机单元ex203捕获图像期间,移动电话设备ex115经过话音处理单元ex305把话音输入单元ex205收集的话音作为数字话音数据同时发送到多路复用/多路分解单元ex308。
多路复用/多路分解单元ex308执行从图像编码单元ex312提供的编码图像数据和从话音处理单元ex305提供的话音数据的多路复用处理,并且在把作为多路复用处理的结果获得的多路复用数据通过调制解调电路单元ex306的扩展频谱处理之后,和通过接收/发送电路单元ex301的数-模转换和频率变换之后,经过天线ex201发送这个数据。
当在数据发送模式中在网站之类的位置接收到链接的运动图像文件数据时,经过天线ex201从基站ex110接收的接收信号通过调制解调电路单元ex306进行逆扩展频谱处理,并且把作为这样的结果获得的多路复用数据发送到多路复用分离单元ex308。
此外,在译码经过天线ex201接收的译码多路复用数据中,多路复用分解单元ex308通过把多路复用数据多路分解成一个编码图像数据位流和一个编码话音数据位流,分割多路复用数据,并且经过同步总线ex313把话音数据与提供到图像译码单元ex309的编码图像数据一同提供到话音处理单元ex305。
接下来,图像译码单元ex309是一个带有本申请中说明的图像译码设备的构造,并且通过用对应于上述实施例中所示的编码方法的译码方法译码编码图像数据的位流,产生重放运动图像数据,并经过LCD控制单元ex302,将其提供到显示单元ex202,显示,例如,包含在从一个网站链接的活动画面文件中的运动图像数据。与此同时,话音处理单元ex305把话音数据转换成模拟话音信号,然后将其提供到话音输出单元ex208,从而使得能够重放,例如,包含在从网站链接的活动画面文件中的话音数据。
应当注意,对于上述***的例子没有限制。近年来,经过卫星或地面波的数字广播已经得到应用,并且如图23中所示,可以利用数字广播把上述实施例的图像编码设备或图像译码设备中的至少一个结合在***中。更具体地讲,利用一个广播站ex409,经过无线电波把图像数据的编码位流发送到一个通信或广播卫星ex410。接收到位流的广播卫星ex410发射广播无线电波,通过配备有卫星广播接收设施的家用设备的天线ex406接收这些无线电波。通过诸如电视机(接收设备)ex401,机顶盒(STB)ex407之类的设备译码编码位流,并且重放这种译码位流。此外,可以把上述实施例中所示的图像译码设备安装在一个读出和译码记录在诸如CD和DVD存储介质之类的存储介质上的编码位流的重放设备ex403中。在这种情况下,把重放的画面信号显示在监视器ex404上。此外,也可以使用把图像译码设备安装在一个连接到用于有线电视的电缆ex405,或一个卫星/地面波广播天线ex406的机顶盒ex407中,并且在电视监视器ex408上重放译码位流。在这里,可以把图像译码设备结合在电视机中,而不是机顶盒中。此外,可以通过带有天线ex411的汽车ex412接收来自卫星ex410,来自基站ex107等等的信号,并且可以在汽车ex412中的诸如轿车导航***ex413之类的显示设备上重放运动图像。
此外,可以用一个上述实施例中所示的图像编码设备编码图像信号,并且把这些图像信号记录在存储介质上。特殊的例子包括把图像信号记录在DVD盘ex421上的DVD记录器,和诸如记录到一个硬盘上的盘记录器之类的记录器ex420。此外,可以记录到一个SD卡ex422上。如果记录器ex420带有一个上述实施例中所示的图像译码设备,那么可以把记录在DVD盘ex421,或SD卡ex422上的图像信号在监视器ex408上重放和显示。
应当注意,轿车导航***的构造可以是这样的,例如,不包括图19中所示的照相机单元ex203,照相机接口单元ex303,和图像编码设备ex312,并且这对于计算机ex111和电视机(接收设备)ex401也是同样可以的。
此外,上述移动电话ex114的终端可以不仅是一种具有编码设备和译码设备的发送/接收类型的终端,而且也可以是一个仅带有编码设备的发送终端,或仅带有译码设备的接收终端(三种设备类型)。
以这种方式,可以在任何上述设备或***中使用上述实施例中所示的运动图像编码方法或运动图像译码方法,并且通过这样做,获得了这些实施例的说明过的效果。
5.其它实施例
本发明并不限于上述实施例,并且可以有各种其它实施例和修改,而不脱离本发明的范围。