背景技术
在最近几年,我们迎来了多媒体时代,其中音频、视频和其他数据被集成地处理,并且例如报纸、杂志、电视、广播以及电话这样的传统信息媒体(即,用于把信息发送到个人的手段)已经被采用,作为多媒体的对象。通常“多媒体”的含义不但代表文字,而且还代表图像、语音以及特别是时间上相关的图像。为了处理传统的信息媒体作为多媒体的对象,把信息转换为数字格式是本质性的。
当由上述每个信息媒体所处理的数据量用数字数据量来估计时,在字符的情况中,用于每个字符的数据量是1-2个字节。但是,在语音的情况中,数据量为每秒64kbits(用于通信的质量),并且在运动图像的情况中,该数据量大于每秒100Mbits(用于当前电视广播的质量)。从而,对于上述信息媒体,以数字格式原样地处理这样大量的数据是不现实的。例如,可视电话已经通过具有64kbps~1.5Mbps的传输速率的ISDN(综合业务数字网)而投入使用,但是重要的是通过ISDN原样地传送具有大数据量的电视摄像机的输出图像。
从而,需要数据压缩技术。例如,在可视电话的情况中,采用被ITU-T(国际电信联盟-电信部门)标准化为H.261和H.263的运动图像压缩技术。另外,根据基于MPEG-1的数据压缩技术,可以在一个普通的音乐CD(压缩光盘)中与音频数据一同记录图像数据。
在此,MPEG(运动图像专家组)是与用于运动图像的图像信号的数字压缩相关的一种国际标准。在MPEG-1中,运动图像的图像信号被压缩为1.5Mbps,即,电视信号的数据被压缩为大约1/100。由于MPEG-1的传输速率主要限制为大约1.5Mbps,MPEG-2被标准化为满足更高图像质量的需求。在MPEG-2中,一个运动图像的图像信号被压缩为2-15Mbps。
在现有的情况中,由对于MPEG-1和MPEG-2(ISO/IECJTC1/SC29/WG11)标准化的工作组实现具有更高压缩比的MPEG-4的标准化,MPEG-4不仅仅能够高效率地以较低位率进行编码,而且实现一种强的抗错误技术的引入,其即使在出现传输线错误时也可以减小主观的图像质量下降。另外,ITU-T开发H.26L标准作为下一代图像编码方法的标准,并且在此时最新的编码方法被称为“测试模型”(TML8)。
图30为示出传统的图像编码装置的方框图。
该图像编码装置201a具有用于把一个所输入的图像信号Vin分块为分别包括预定数目的像素的单元区域(块)并且输出分块的图像信号BlkS的分块单元Blk,以及用于使得该输出BlkS受到频率变换以输出对应于各个块的频率分量TransS的频率变换单元Trans。在此,该块是在一个图像(图像空间)中的预定尺寸的区域,其是用于一个图像信号的编码处理的单元,并且其由预定数目的像素所构成。在此,该图像信号Vin对应于由多个图像所构成的一个运动图像。
该图像编码装置201a进一步包括一个量化单元Q,用于量化来自该频率变换单元的输出(频率分量)TransS,并且输出对应于各个块的量化的分量(量化系数)QS;以及一个编码单元RLE0a,用于使得来自该量化单元的输出(量化分量)QS受到可变长度编码处理。
接着,将描述其操作。
当一个图像信号Vin被输入到该图像编码装置201a时,分块单元Blk把输入的图像信号Vin分为对应于块单元的图像信号,以产生对应于每个块的图像信号(分块的图像信号)BlkS。该频率变换单元Trans根据DCT(离散余弦变换)把分块的图像信号BlkS分为频率分量TransS或者小波变换。该量化单元Q在一个预定的量化步骤中根据一个量化参数QP量化该频率分量TransS,以输出量化分量QS,以及输出量化参数QP。然后,该编码单元RLE0a使得该量化分量QS受到可变长度编码处理,并且输出一个编码流Str0a。
图31示出用于说明构成图像编码装置201a的编码单元RLE0a的方框图。
该编码单元RLE0a具有一个曲折扫描仪Scan,用于把在一个二维阵列中的量化单元Q的输出(量化分量)QS变换为在一个一维阵列(即,预定次序)中的量化分量;以及一个可变长度编码器VLC,用于使得从曲折扫描仪Scan输出的量化分量Coef受到可变长度编码处理。
当从量化单元Q输出的量化分量QS被输出的编码单元RLE0a时,该曲折扫描仪Scan把在来自该量化单元Q的一个二维阵列中的量化分量QS变换为在一个一维阵列(预定次序)中的量化分量Coef,并且输出该量化分量。
图43为用于具体说明用于由曲折扫描仪Scan变换该量化分量QS的处理的示意图。
如图43中所示,从量化单元Q输出的量化分量QS具有一个二维阵列,即,这样一个阵列,其中根据水平频率分量的大小和垂直频率分量的大小而在一个二维频率区域Fr上以矩阵的形式设置该量化分量QS。
该曲折扫描仪Scan执行一个处理用于按照如箭头Y1至Y7所示的曲折方式扫描在该二维阵列中的量化分量QS,以把该分量变换为在一个一维阵列中的量化分量Coef。也就是说,在该扫描处理中,对于在该二维阵列中的多个量化分量QS沿着扫描的过程设置预定次序。
然后,该可变长度编码器VLC利用示出表示量化分量的大小与代码(代码字)之间的关系的代码表把代码分配到从曲折扫描仪Scan输出的量化分量Coef,以把该量化分量变换为对应于每个块的一个编码流Str0a。
图32为用于说明对应于图30中所示的图像编码装置201a的图像解码装置202a的方框图。
该图像解码装置202a对从如图30中所示的常规图像编码装置201a输出的编码流Str0a进行解码。
该图像解码装置202a具有用于解码从图像编码装置201a输出的编码流Str0a的解码单元RLD0a、以及用于使得来自解码单元RLD0a的输出(解码的量化分量)DQS受到反量化处理的反量化单元IQ。
该图像解码装置202a进一步包括用于使得来自反量化单元IQ的输出(解码的频率分量)ITransS受到反频率变换处理的反频率变换单元ITrans、以及用于根据来自反频率变换单元ITrans的输出(解码的分块图像信号)DBlkS产生对应于每个图像的解码的图像信号Vout的解块单元DeBlk。
下面,将描述其操作。
当该编码流Str0a被从图像编码装置201a到图像解码装置202a输入时,该解码单元RLD0a解码该编码流Str0a,并且输出解码的量化分量DQS。该解码单元RLD0a的操作与编码单元RLE0a的操作相反。
该反量化单元IQ执行量化单元Q的操作的反操作,即,根据量化参数QP对解码的量化分量DQS进行反量化并且输出解码的频率分量ITransS的操作。该反频率变换单元ITrans执行频率变换单元Trans的操作的反操作,即,使得解码的频率分量ITransS受到反DCT或反小波变换,以重构对应于各个块的解码的图像信号DBlkS的操作。然后,该解块单元DeBlk结合各个块的解码的图像信号DBlkS,以输出一个对应于每个图像(帧)的解码的图像信号Vout。
图33为用于说明构成图像解码装置202a的解码单元RLD0a的方框图。
该解码单元RLD0a具有一个可变长度解码器VLD,用于使得编码流Str0a受到可变长度解码处理,以解码对应于包含在编码流Str0a中的每个代码的量化分量Coef;以及反曲折扫描仪IScan,用于从由可变长度解码器VLD输出的一维阵列的解码的量化分量DQS重构二维阵列的量化分量DQS。
在该解码单元RLD0a中,可变长度解码器VLD根据与可变长度编码器VLC相反的操作解码该编码流Str0a,并且输出对应于代码(代码字)的量化分量Coef。然后,该反曲折扫描仪IScan执行与曲折扫描仪Scan相反的操作,以从由可变长度解码器VLD输出的一维阵列的量化分量Coef重构二维阵列的解码的量化分量DQS,并且把该解码的量化分量DQS输出到该反量化单元IQ。
日本专利申请No.6-311534中公开一种方法,其中一个图像信号被分为亮度信号和色差信号,以使得所获得的信号受到可变长度编码处理。
对应于已经被设置预定次序的各个块的多个量化分量是包括高冗余度的数据,即,在一个非零的系数(非零系数)之后连续接着多个数值为零的系数(零系数)。为了编码这种量化分量,通常采用这样一种方法,其中对删除冗余信息的量化分量编码,例如,通过使用表示连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的级别数值而对量化分量编码的游程长度编码方法。
在下文中,将描述使用该游程长度编码方法的常规图像编码装置。
图34为示出执行游程长度编码的常规图像编码装置的方框图。
该图像编码装置201b包括取代图30中所示的图像编码装置201a的编码单元RLE0a的一个游程长度编码单元RLE0b,用于使得来自量化单元Q的输出(量化分量)QS受到游程长度编码,并且输出一个编码流Str0b。其他部分与图像编码装置201a的相同。
该图像编码装置201b的操作不同于图像编码装置201a的操作之处仅仅在于编码单元RLE0b的操作。
图35为示出在图像编码装置201b中的编码单元RLE0b的具体结构的方框图。
该游程长度编码单元RLE0b类似于编码单元RLE0a,具有一个曲折扫描仪Scan,用于把来自量化单元Q的二维阵列的输出(量化分量)QS变换为一维(即,预定次序)的量化分量Coef。
然后,该游程长度编码单元RLE0b进一步包括:游程计算器RunCal,用于计算其数值为零的连续量化分量(零系数)Coef的数目,并且输出表示连续零系数的数目的游程数值Run;以及级别计算器LevCal,用于计算在该零系数之后数值非零的量化分量(非零系数)的数值,并且输出表示该非零系数的数值的级别数值Lev。
该游程长度编码单元RLE0b进一步包括一个可变长度编码器LevVLC,用于使得从级别计算器LevCal输出的级别数值Lev受到可变长度编码处理,并且输出一个代码串(级别数值代码串)LStr;可变长度编码器RVLC,用于使得从游程计算器RunCal输出的游程数值Run受到可变长度编码处理,并且输出一个代码串(游程数值代码串)RStr;以及多路复用器MUX,用于对每个块复用级别数值代码串LStr和游程数值代码串RStr,并且输出一个复用的编码流Str0b。
下面将描述其操作。
该曲折扫描仪Scan把在从量化单元Q输出的二维阵列中的量化分量QS变换为一维阵列(预定次序)中的量化分量Coef,并且输出该量化分量Coef。由曲折扫描仪Scan对量化分量QS的变换处理按照与图像编码装置201a的编码单元RLE0a相同的方式执行。
该游程计算器RunCal根据从曲折扫描仪Scan输出的量化分量Coef计算连续零系数的数目,并且输出表示所计算的数值的游程数值Run。该级别计算器LevCal根据从曲折扫描仪Scan输出的量化分量Coef计算在连续零系数之后的非零系数的数值,并且输出表示该数值的级别数值Lev。
在此,当在要被处理的目标块中检测最高的频率分量(最后的非零系数)时,该游程计算器RunCal产生一个特定数值EOB(块的结束),以表示后续的更高频率分量都具有零数值。
另外,该可变长度编码器RVLC使得从游程计算器RunCal输出的游程数值Run受到可变长度编码处理,用于根据一个代码表或算术运算把一个代码(代码字)分配到该游程数值,并且输出一个代码串RStr。该可变长度编码器LevVLC使得从级别计算器LevCal输出的级别数值Lev受到可变长度编码处理,用于根据代码表或算术运算把一个代码(代码字)分配到该级别数值,并且输出一个代码串LStr。
该多路复用器MUX对于每个块复用该代码串LStr和代码串RStr,并且输出一个复用的编码流Str0b。
在此,对于每个块执行用于复用代码串LStr和代码串RStr的处理,例如按照对应于用于一个目标块的所有游程数值的代码串RStr之后接着对应于用于该目标块的所有级别数值的代码串LStr,或者对应于用于一个目标块的所有级别数值的代码串LStr之后接着对应于用于该目标块的所有游程数值的代码串RStr。
如上文所述的,通过使用表示其数值为零(零系数)Coef的量化分量数目的游程数值Run和表示在该零系数之后其数值非零(非零系数)的量化分量的数值的级别数值Lev而按照预定次序编码多个量化系数的图像编码装置可以用较高的编码效率对多个量化系数进行编码,并且消除其冗余信息。
图36为用于说明对应于如图34中所示的图像编码装置201b的图像解码装置202b的方框图。
该图像解码装置202b对从如图34中所示恶图像编码装置201b输出的编码流Str0进行解码。
该图像解码装置202b用一个游程长度解码单元RLD0b取代如图32中所示的图像解码装置202a的解码单元RLD0a,用于使得从图像编码装置201b输出的受到游程长度解码处理。其他部分与图像解码装置202a相同。
该图像解码装置202b的操作不同于图像解码装置202a之处仅仅在于解码单元RLD0b的操作。
图37为示出在图像解码装置202b中的游程长度解码单元RLD0b具体结构的方框图。
该游程长度解码单元RLD0b具有一个多路分解器DMUX,用于对从图像编码装置201b输出的复用的编码流Str0b进行多路分解,以获得对应于该级别数值的代码串LStr以及对应于游程数值的代码串LStr;可变长度解码器LVLD,用于使得该代码串LStr受到可变长度解码处理,以重构该级别数值Lev;可变长度编码器RVLC,用于使得代码串RStr受到可变长度解码处理,以重构该游程数值Run;以及反曲折扫描仪IScan,用于从由级别数值Lev和游程数值Run表示的一维阵列中的解码量化分量重构在二维阵列中的解码的量化分量DQS。
下面将描述其操作。
在图像解码装置202b中,该游程长度解码单元RLD0b执行对游程长度编码单元RLE0b的反操作。即,该游程长度解码单元RLD0b分解该复用的编码流Str0b,以获得对应于该级别数值的代码串LStr和对应于游程数值的代码串RStr。
然后,该可变长度解码器LVLD通过与可变长度编码器LevVLC相反的操作解码对应于该级别数值的代码串LStr,并且输出该级别数值Lev。该可变长度解码器RVLD通过与可变长度编码器RVLC相反的操作解码对应于该游程数值的代码串RStr,并且输出该游程数值Run。
该反曲折扫描仪IScan通过与曲折扫描仪Scan相反的操作从由级别数值Lev和游程数值Run所表示的一维阵列中的量化分量重构在二维阵列中的解码的量化分量DQS,并且把该解码的量化分量输出到反量化单元IQ。但是,反曲折扫描仪IScan(参见图37)不同于如图33中所示的反曲折扫描仪IScan之处在于它被输入级别数值Lev和游程数值Run。因此,如图37中所示的反曲折扫描仪IScan具有把由级别数值Lev和游程数值Run所表示的系数转换为量化分量Coef的功能。
根据通过使用其数值为零(零系数)的量化分量Coef的数目以及表示在该零系数之后其数值非零的(非零系数)的量化分量Coef的数值的级别数值Lev按照预定次序执行对多个量化系数解码的解码处理的图像解码装置,能够满意地对通过根据以较高的编码效率除去冗余信息的游程长度编码方法编码而获得的被编码数据进行解码。
在下文中,将描述使用游程长度编码方法的常规图像编码装置的另一个例子。
图38为示出采用常规游程长度编码单元的图像编码装置的另一个例子的方框图。几乎所有与例如MPEG或H.261和H.263(ITU)这样的标准或者草案的H26L标准(TML8)相兼容的常规图像编码装置具有如图38中所示的结构。
类似于如图34中所示的图像编码装置201b,该图像编码装置201c使用游程数值和级别数值执行量化系数恶编码,并且该图像编码装置201c不执行类似于图像编码装置201b的分别对于游程数值和级别数值的可变长度编码处理,而是对一对游程数值和级别数值(游程-级别对)执行可变长度编码处理。
更加具体来说,该图像编码装置201c类似于图像编码装置201b具有被输入一个图像信号Vin的分块单元Blk、用于使得来自该分块单元的输出BlkS受到频率变换恶频率变换单元、以及用于量化来自该变换单元的输出(频率分量)TransS的量化单元Q。该图像编码装置201c进一步包括一个游程长度编码单元RLE0c,用于使得来自该量化单元的输出(量化分量)QS受到一个游程长度编码处理,用于把包含一个游程数值和级别数值的一个游程-级别对变换为一个可变长度代码。
下面将描述其操作。
该分块单元Blk把图像信号Vin分为对应于块单元的图像信号,以产生像素值分量(分块的图像信号)BlkS。该频率变换单元Trans根据DCT(离散余弦变换)或者小波变换把该像素值分量BlkS变换为频率分量TransS。该量化单元Q根据量化参数QP量化该频率分量TransS,以输出量化分量QS,以及输出该量化单元Q。该游程长度编码单元RLE0c使得该量化分量QS受到游程长度编码,并且输出一个编码流Str0c。
在此,该块是在该图像(图像空间)中的预定尺寸的区域,它是在用于一个图像信号的编码处理中的一个单元,并且包括预定数目的像素。该游程长度编码是用于把包括表示数值为零(零系数)的连续量化分量的数目的游程数值和表示在该零系数之后的数值非零(非零系数)的量化分量的数值的级别数值的一对数值变换为一个可变长度代码的处理,换句话说,它是用于把一个可变长度代码(代码字)分配到一对游程数值和级别数值(游程-级别对)的处理。
下面将具体描述游程长度编码单元RLE0c。
图39为示出一种常规的游程长度编码单元RLE0c的方框图。
该游程长度编码单元RLE0c类似于如图35中所示的游程长度编码单元RLE0b具有一个曲折扫描仪Scan,用于把来自量化单元Q的二维阵列中的输出(量化分量)QS变换为在一维阵列(即,预定次序)中的量化分量Coef;游程计算器RunCal,用于计算其数值为零的数值(零系数)的量化分量Coef的连续数目,并且输出一个游程数值Run;以及级别计算器LevCal,用于计算在该零系数之后的非零的(非零系数)的量化分量Coef的数值,并且输出一个级别数值Lev。
该游程长度编码单元RLE0c进一步包括一个游程级别编码器RunLevEnc,用于根据代码表或算术运算基于来自游程计算器RunCal和级别计算器LevCal的输出获得对应于一对级别数值Lev和游程数值Run的代码号Code;以及可变长度编码器VLC,用于把一个代码字分配到该代码号Code,以产生对应于该图像信号Vin的编码流Str0c。
下面将描述其操作。
在游程长度编码单元RLE0c中,类似于游程长度编码单元RLE0b,该曲折扫描仪Scan把从量化单元Q输出的二维阵列中的量化分量QS变换为一维阵列(预定次序)中的量化分量Coef,并且输出所获得的量化分量。
图43为用于具体说明用于由曲折扫描仪Scan变换该量化分量QS的处理的示意图。
从量化单元Q输出的量化分量QS具有如图43中所示的二维阵列,即,根据水平频率分量的大小和垂直频率分量的大小以矩阵形式在一个二维频率区域Fr上排列该量化分量QS的阵列。
该曲折扫描仪Scan执行用于以曲折的方式在二维阵列中扫描该量化分量QS的处理,如图Y1至Y7中所示,以把该量化分量QS变换为一维阵列的量化分量Coef。也就是说,该扫描处理对于二维阵列的多个量化分量QS沿着该扫描路径设置一个预定次序。
该游程计算器RunCal根据从曲折扫描仪Scan输出的量化分量Coef计算连续的零系数的数目,并且输出表示所计算的数目的游程数值Run。该级别计算器LevCal根据从该曲折扫描仪Scan输出的量化分量Coef计算在连续零系数之后的一个非零系数的数值,并且输出表示所计算的数值的一个级别数值。在此,该游程计算器RunCal在要被处理的一个目标块中检测到最高频率分量(最后的非零系数)时输出一个指定数值EOB(块的结束),以表示在后续的更高频率分量都具有零数值。
另外,该游程级别编码器RunLevEnc根据一个代码表或者算术运算基于来自游程计算器RunCal和级别计算器LevCal的输出获得对应于一对级别数值Lev和游程数值Run的代码号Code。该可变长度编码器VLC编码由该转换器RunLevEnc所获得的代码号Code,即,把一个代码字(位串)分配到该代码号,以产生一个编码流Str0。
图42示出由游程长度编码单元RLE0c所采用的一个代码表。图42中所示的代码表(第一代码表)T1示出与现在计划的草案H.26L标准相兼容的一个色差信号的直流分量的代码表。
该代码表T包括:一个可规则生成部分,其包括对应于可以根据一种算术运算使用级别数值和游程数值(规则构造的VLC)计算的对应于级别数值和游程数值对的代码号;以及不规则部分,其包括不能够通过算术运算(表格查找VLC)而计算的对应于级别数值和游程数值对的代码号。另外,一个位串(未示出)被按照一一对应的关系分配给每个代码号Code,作为一个代码字。一个更短的代码字被分配给具有更小数值的一个代码号Code。
下面将描述根据图像编码装置201c的常规解码装置。
图40为示出采用常规的游程长度解码单元RLD0的一个图像解码装置202c的方框图。
该图像解码装置202c解码从如图39中所示的常规图像编码装置201c输出的编码流Str0c。
该图像解码装置202c使用该游程数值和级别数值解码量化的系数,这与图36中所示的图像解码装置202b相同,并且该图像解码装置202c不相该图像解码装置202b那样分别执行该游程数值和级别数值的可变长度解码,而是执行包括该游程数值和级别数值(游程-级别对)的可变长度解码。
更加具体来说,该图像解码装置202c具有一个游程长度解码单元RLD0c,其使用包括一个游程数值和级别数值的一个游程-级别对使得从图像编码装置201c输出的编码流Str0c受到游程长度解码处理。该图像解码装置202c与图像解码装置202b相同进一步具有一个反量化单元IQ,用于使得来自游程长度解码单元RLDc的输出(解码的量化分量)DQS受到反量化处理;反频率变换单元ITrans,用于使得来自反量化单元IQ的输出(解码的频率分量)ITransS受到反频率变换处理;以及解块单元DeBlk,用于根据来自反频率变换单元ITrans的输出(解码的图像信号)DBlkS产生对应于每个图像的解码的图像信号Vout。
下面将描述其操作。
在图像解码装置202c中,该游程长度解码单元RLD0c执行与游程长度编码单元RLE0c的操作的相反的操作。更加具体来说,该游程长度解码单元RLD0c使得编码流Str0c受到游程长度解码处理,以输出解码的量化分量DQS。该反量化单元IQ执行与量化单元Q相反的操作,即,参照量化参数QP对该解码的量化分量DQS进行反量化的操作,以输出解码的频率分量ITransS。该反频率变换单元ITrans执行与频率变换单元Trans相反的操作,即,使得解码的频率分量ITransS受到反DCT或者反小波变换,以重构对应于每个块的解码的像素值信号(解码的分块图像信号)DBlkS。该解块单元DeBlk结合用于各个块的图像像素值分量,并且输出对应于每个图像(帧)的解码的图像信号Vout。
下面将具体描述游程长度解码单元RLD0c。
图41为用于说明游程长度解码单元RLD0c的具体结构的方框图。
该游程长度解码单元RLD0c具有一个可变长度解码器VLD,用于使得该编码流Str0c受到可变长度解码处理,以获得对应于包含在编码流Str0c中的每个代码(代码字)的代码号Code;游程级别检测器RunLevDec,用于检测对应于该代码号Code的一对级别数值Lev和游程数值Run;以及反曲折扫描仪IScan,用于根据该对级别数值Lev和游程数值Run的从由级别数值Lev和游程数值Run所表示的一维阵列中的解码的量化分量重构在二维阵列中的解码的量化分量DQS。
下面将描述其操作。
在游程长度解码单元RLD0c中,该可变长度解码器VLD根据与可变长度编码器VLC相反的操作解码该编码流Str0c,并且输出对应于一个代码字(位串)的一个代码号Code。该游程级别检测器RunLevDec参照一个代码表或者执行算术运算,以根据与游程级别编码器RunLevEnc相反的操作输出对应于代码号Code的一对级别数值Lev和游程数值Run。该反曲折扫描仪ISca根据与曲折扫描仪Scan相反的操作从由该对级别数值Lev和游程数值Run所表示的一维阵列中的量化分量在一个二维阵列中重构解码的量化分量DQS,并且把该解码的量化分量DQS输出到反量化单元IQ。
日本专利申请No.6-237184公开一种游程长度编码方法,其中使用表示其数值为零的(零系数)的量化分量Coef的数目的游程数值Run和表示在该零系数之后其数值非零的(非零系数)的量化分量Coef的级别数值Lev按照预定次序编码多个系数。
日本专利No.3144456(对应于日本专利申请No.8-79088)公开一种方法,其中当在用于预测地编码数字视频数据的方法中使用一个可变长度编码表对差分运动矢量值进行编码时根据该差分运动矢量值的数值改变可变长度编码表(VLC表)。
另外,已知这作为另一种方法的算术编码方法,通过该方法该像素值被可变长度编码,其中通过使用该像素值取预定数值的可能性根据一种算术运算执行可变长度编码。根据该算术编码,从该可能性导出一个代码,使得描述对应于各种情况的可能性的算术编码对应于该VLC表。在此,“所有关于MPEG-4”(由Miki Sukeichi所编著,由KogyoChosakai出版公司所出版,第一版,第一次印刷,第69-73页)描述一种方法,其通过根据用于从周围像素的像素值预测的一个编码目标像素的预测方法改变一个可能性表格而对对应于一个编码目标的像素的像素值进行算术编码。
上述常规的图像编码装置201a的编码单元RLE0a对通过对每个预定处理单元(块)量化图像数据的频率分量而获得的多个量化系数执行可变长度编码。该编码单元采用表示示出每个量化系数的大小的数值信息和代码(代码字)之间的对应关系的预定代码表。在由该编码单元执行可变长度编码处理中,包含在量化系数(要被处理的数据)中的冗余信息不能够被充分地除去,因此可以进一步提高压缩比。
并且在该游程长度编码单元中,其使用表示其数值为零的(零系数)的量化分量Coef的数目的游程数值和表示在该零系数之后其数值非零的(非零系数)的量化分量Coef的数值的级别数值执行多个量化系数的可变长度编码,类似于在常规图像编码装置201b或201c中的编码单元RLE0b或RLE0c,在该可变长度编码处理中包含在该量化系数中的冗余信息不被充分地除去。
另外,常规的图像解码装置202a的解码单元RLD0a或常规的图像解码装置202b或202c的游程长度解码单元RLD0b或RLD0c对应于不能够在用于该量化系数的可变长度编码处理中充分地除去包含在该量化系数中的冗余信息的编码单元。
另外,对于在用于预测地编码数字视频数据的方法中当使用一个可变长度编码表对差分运动矢量值进行编码时根据该差分运动矢量值的数值改变可变长度编码表(VLC表)的方法,现在还没有在对类似于通过量化一个图像信号的频率分量而获得的量化系数这样具有随后接着的连续零系数的数目的特性的数据的可变长度编码处理中有效改变可变长度编码表的方法。
本发明要解决上述问题,并且编码的目的是提供一种可变长度编码方法以及可变长度解码方法,其可以根据被量化的系数的特性和用于量化分量的编码处理的状态更加有效地消除包含在用于可变长度编码处理的目标数据(量化系数)中的冗余信息,从而进一步增加图像信号等等的压缩比。
发明内容
根据本发明,在此提供一种用于编码由多个系数所构成的系数数据的可变长度编码方法,其中包括:编码步骤,用于通过使用表示该系数的数值和代码之间的对应关系的多个代码表,使得各个系数受到把系数数据变换为由多个代码所构成的被编码数据的编码处理,并且该编码步骤包括:代码表选择步骤,用于根据关于已经被编码的被编码系数和与该系数的编码处理相关的参数至少之一的信息选择该代码表;以及代码分配步骤,用于使用被选择的代码表把一个代码分配到一个还没有被编码的未编码的系数。因此,通过根据构成该系数数据的系数的特性或者对该系数的编码处理的状态选择代码表而有效地除去包含在作为要受到可变长度编码处理的对象的系数数据中的冗余信息,从而大大地增加用于图像信号等等的可变长度编码处理的编码效率。
根据本发明,在上述可变长度编码方法中,通过根据对应于该图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且在该代码表选择步骤中,要用于该代码分配步骤中的代码表被根据该量化步骤的数值而选择。因此总是可以采用适用于该量化步骤的数值的代码表并且使得编码效率最大化。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的级别数值被分别变换为一个代码,在该代码表选择步骤中,在用于根据该量化步骤的数值从表示该游程数值和代码之间的对应关系的多个代码表选择一个代码表的第一选择处理,以及用于根据该量化步骤的数值从表示该级别数值和代码之间的对应关系的多个代码表选择一个代码表的第二选择处理中的至少一个处理被执行,并且在该代码分配步骤中,根据被选择的代码表,一个代码被分配给对应于还没有被编码的一个未编码系数的游程数值和级别数值中的至少一个数值。因此,通过使用适合于该量化步骤的数值的代码表总是可以执行对游程数值和级别数值中的至少一个数值的代码分配,并且使得对应于所分配代码的总位数被最小化。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,包括表示其数值为零的连续零系数的数目的游程数值以及表示在该零系数之后的非零系数的数值的级别数值的游程-级别对被变换为一个代码,在该代码表选择步骤中,根据该量化步骤的数值,从表示该游程-级别对和该代码之间的对应关系的多个代码表中选择一个代码表,并且在该代码分配步骤中,根据所选择的代码表,一个代码被分配给对应于还没有被编码的未编码系数的一个游程-级别对。因此,通过使用一个适合于该量化步骤的数值的代码表总是可以执行对游程-级别对的代码分配,并且使得对应于所分配的代码的总位数最小化。
根据本发明,在上述可变长度编码方法中,在该代码表选择步骤中,根据关于被编码系数的信息选择在该代码分配步骤中所用的代码表。因此,通过使用适合于未编码系数的数目的代码表总是可以执行用于量化系数的编码处理,并且使得该编码效率最大化。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,表示其数值为零的连续零系数的数目的游程数值以及表示在该零系数之后的非零系数的数值的级别数值被分别变换为一个代码,在该代码表选择步骤中,在用于根据关于对应于该编码的游程数值的信息从表示该游程数值和代码之间的对应关系的多个代码表选择一个代码表的第一选择处理,以及用于根据关于对应于该被编码系数的级别数值的信息从表示该级别数值和代码之间的对应关系的多个代码表选择一个代码表的第二选择处理中的至少一个处理被执行,并且在该代码分配步骤中,根据所选择的代码表,一个代码被分配给对应于一个未编码系数的游程数值和级别数值中的至少一个数值。因此,通过使用适合于未编码系数的数目的代码表总是可以执行对游程数值和级别数值中的至少一个数值的代码分配,并且使得该编码效率最大化。
根据本发明,在上述可变长度编码方法中,在该代码表选择步骤中,根据已经被编码的被编码游程数值的数目从表示该游程数值和代码之间的对应关系的多个代码表中选择一个代码表,并且在该代码分配步骤中,根据所选择的代码表,一个代码被分配给还没有被编码的一个未编码游程数值。因此,通过使用适合于还未处理的游程数值的数目的代码表总是可以执行对游程数值的代码分配,并且使得编码效率最大化。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,包括表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的级别数值的一个游程-级别对被变换为一个代码,在该代码表选择步骤中,根据关于对应于已经编码的被编码系数的游程-级别对的信息从表示该游程-级别对和代码之间的对应关系的多个代码表选择一个代码表,并且在该代码分配步骤中,根据被选择代码表,一个代码被分配给对应于还没有被编码的未编码系数的一个游程-级别对。因此,通过使用适合于还未处理的系数的数目的代码表,总是可以执行对该游程-级别对的分配,并且使得编码效率最大化。
根据本发明,在上述可变长度编码方法中,通过根据对应于该图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且在该编码步骤中,执行对该系数的编码处理,使得代码被分配给从高频分量到低频分量构成该系数数据的多个系数。因此,对应于被分配给该系数的代码的总位数可以被进一步减小。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,包括表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的级别数值的一个游程-级别对被转换为一个代码,用于由预定数目的系数所构成的每个块,并且在该代码表选择步骤中,根据在作为该编码处理的对象的目标块中已经受到编码处理的已处理系数的数目和在该目标块中还未被编码的未编码非零系数的数目之和,从表示该游程-级别对和该代码之间的对应关系的多个代码表中选择一个代码表,并且在该代码分配步骤,根据所选择的代码表,一个代码被分配到对应于在该目标块中的一个未编码系数的游程-级别对。因此,可以采用不包括不会出现的游程数值和级别数值的代码表,从而增加可变长度编码效率。
根据本发明的,在上述可变长度编码方法中,根据对该系数的编码处理,包括表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的级别数值的游程-级别对被转换为一个代码,该编码步骤包括一个代码表处理步骤,用于基于该第一代码表,根据构成该游程-级别对的游程数值和级别数值的组合,定期地改变在表示该游程-级别对和相应代码之间的对应关系的第一代码表中的该游程-级别对和该代码之间的对应关系,从而形成与第一代码表不同的具有在该游程-级别对和该代码之间的不同对应关系的第二代码表,并且在该代码表选择步骤中,根据关于已经处理的系数和与该系数的产生相关的参数至少之一的信息选择该第一和第二代码表之一。因此,当代码被分配到游程数值和级别数值对时,该第一和第二代码表之一被适应地选择作为要被使用的一个最佳代码表,从而可以有效地形成包含在要被处理的目标数据中的冗余信息。相应地,用于图像信号等等的压缩比可以被进一步提高,从而该可变长度编码方法是非常有用的。
根据本发明,在上述可变长度编码方法中,在第一和第二代码表中,较短的代码被相应地适用于具有构成该游程-级别对中的较小级别数值的各个游程-级别对,并且在第二代码表中,与第一代码表相比,与较短代码对应的游程-级别对的级别数值的平均值较小。因此,当用于构成要被处理的目标数据的系数的量化参数较大时,该可变长度编码方法是有用的。
根据本发明,在上述可变长度编码方法中,在该第一和第二代码表中,较短代码适应地对应于具有构成该游程-级别对的较小游程数值的各个游程-级别对,并且在第二代码表中,与第一代码表相比对应于较短代码的游程-级别对的游程数值的平均值较小。因此,当构成该目标数据的用于该系数的量化参数较小时,该可变长度编码方法是有用的。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,对于由预定数目的系数所构成的每个块执行游程-级别对到代码的变换,并且在该代码表处理步骤中,根据在作为编码处理的对象的目标块中已经受到编码处理的已处理系数的数目而形成第二代码表。因此,可以采用不包括不会出现的由游程数值和级别数值所构成的对的代码表作为第二代码表,从而进一步增加该可变长度编码效率。
根据本发明,在上述可变长度编码方法中,在该代码分配步骤中,从高频分量到低频分量,从对应于具有图像数据的最高频率分量的系数的游程-级别对执行对游程-级别对的代码分配。因此,通过使用不包括不会出现的游程数值和级别数值的对的代码表所获得的可变长度编码效率的增加量可以变得更大。
根据本发明,在上述可变长度编码方法中,通过在包含于第一代码表中的游程-级别对和代码之间的对应关系中仅仅改变可以定期操作的对应关系而形成该第二代码表。因此,可以减小形成该第二代码表所需的算术运算。
根据本发明,在上述可变长度编码方法,根据对应于该图像数据的量化步骤,通过量化图像数据的频率分量而获得构成该系数数据的系数,并且该代码表选择步骤是用于根据该量化步骤的数值在第一代码表和第二代码表之间切换的代码表切换步骤。因此,适用于该量化步骤的一个代码表可以被用作为要用于构成要被处理的目标数据的系数的可变长度编码处理中的代码表。
根据本发明,在上述可变长度编码方法,该代码表选择步骤是用于根据一个切换指令信号在第一代码表和第二代码表之间切换的一个代码表切换步骤,并且在该编码步骤中,执行该切换指令信号的编码。因此,要用于对该系数的可变长度编码处理中的代码表可以根据该目标数据等等的特征而改变。
根据本发明,在上述可变长度编码方法中,根据对该系数的编码处理,对由预定数目的系数所构成的每个块执行游程-级别对到代码的变换,并且在该代码表处理步骤中,根据在作为编码处理的对象的一个目标块中已经受到编码处理的已处理系数的数目和在该目标块中还未编码的未编码非零系数的数目之和形成第二代码表。因此,不包括不会出现的游程数值和级别数值对的代码表可以被用作为第二代码表,从而进一步增加可变长度编码效率。
根据本发明,在此提供一种用于编码由多个系数所构成的系数数据的可变长度编码装置,其中包括:编码单元,用于通过使用表示该系数的数值和代码之间的对应关系的多个代码表,使得各个系数受到把系数数据变换为由多个代码所构成的被编码数据的编码处理,并且该编码单元包括:代码表选择单元,用于根据关于已经被编码的被编码系数和与该系数的编码处理相关的参数至少之一的信息选择该代码表;以及代码分配单元,用于使用被选择的代码表把一个代码分配到一个还没有被编码的未编码的系数。因此,通过根据构成该系数数据的系数的特性或者对该系数的编码处理的状态选择一个代码表而有效地删除包含在作为要受到可变长度编码处理的对象的系数数据中的冗余信息,从而大大地增加用于图像信号等等的可变长度编码处理的编码效率。
根据本发明,在上述可变长度编码方法中,通过根据对应于该图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且该代码表选择单元根据该量化步骤的数值选择要由该代码分配单元所用的代码表。因此,总是可以采用适用于该量化步骤的数值的代码表并且使得编码效率最大化。
根据本发明,在上述可变长度编码装置中,该代码表选择单元根据关于该被编码系数的信息,选择要由该代码分配单元所用的代码表。因此,总是可以通过采用适用于还未处理的系数的数目执行用于量化系数的编码处理,并且使得编码效率最大化。
根据本发明,在上述可变长度编码装置中,根据对该系数的编码处理,表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的级别数值被分别变换为一个代码,该代码表选择单元根据已经被分配代码的多个被编码游程数值,从表示该游程数值和代码之间的对应关系的多个代码表中选择一个代码表,并且该代码分配单元根据被选择的代码表把一个代码分配给还未编码的一个未编码游程数值。因此,通过使用适用于还未处理的游程数值的数目的代码表,总是可以执行对游程数值的代码分配,并且使得编码效率最大化。
根据本发明,在上述可变长度编码装置中,根据对应于该图像数据的量化步骤,通过量化图像数据的频率分量而获得该系数,并且该编码单元对编码单元该系数执行编码处理,使得代码被分配到从高频分量到低频分量构成该系数数据的多个系数。因此,对应于被分配到该系数的代码的总数可以被进一步减小。
根据本发明,在此提供一种存储介质,其中包括用于由计算机执行对由多个系数所构成的系数数据的编码的可变长度编码处理的程序,并且该程序包括:编码步骤,用于通过使用表示该系数的数值和代码之间的对应关系的多个代码表,使得各个系数受到把系数数据变换为由多个代码所构成的被编码数据的编码处理,并且该编码步骤包括:代码表选择步骤,用于根据关于已经被编码的被编码系数和与该系数的编码处理相关的参数至少之一的信息选择该代码表;以及代码分配单元,用于使用被选择的代码表把一个代码分配到一个还没有被编码的未编码系数。因此,可以通过软件实现具有更高编码效率的可变长度编码处理,其通过根据构成该系数数据的系数的特性或者对该系数的编码处理的状态选择一个代码表而有效地删除包含在作为要受到可变长度编码处理的对象的系数数据中的冗余信息。
根据本发明,在此提供一种用于解码包括多个代码的被编码数据的可变长度解码方法,其中包括:解码步骤,用于使用表示该系数的数值和代码之间的对应关系的多个代码表,使得各个代码受到对该被编码数据的解码处理,以重构由多个系数所构成的系数数据,并且该解码步骤包括:代码表选择步骤,用于根据关于已经被解码的被解码系数和与该系数的解码处理相关的参数至少之一的信息选择该代码表;以及数值检测步骤,用于通过使用所选择的代码表检测对应于还未解码的未解码代码的数值。因此,可以执行对应于具有更高的编码效率的可变长度编码处理的可变长度解码处理,该编码处理通过改变代码表而有效地删除包含在系数数据中的冗余信息,以编码该系数数据。
根据本发明,在上述可变长度解码处理中,通过根据对应于图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且在该代码表选择步骤中,根据该量化步骤的数值选择用于该数值检测步骤中的代码表。因此,可以执行对应于一种可变长度编码处理的可变长度解码处理,该编码处理通过总是采用适用于该量化步骤的代码表并且使得编码效率最大化。
根据本发明,在上述可变长度解码处理中,在用于该代码的解码处理中,一个代码被解码,以重构表示其数值为零的连续零系数的数目的游程数值以及表示在该零系数之后的一个非零系数的数值的级别数值,在该代码表选择步骤中,用于至少根据该量化步骤的数值从表示该游程数值和代码之间的对应关系的多个代码表选择一个代码表的第一选择处理,以及用于根据量化步骤的数值执行从表示该级别数值和该代码之间的对应关系的多个代码表选择一个代码表的第二选择步骤的这两个步骤之一被执行,并且在该数值检测步骤中,根据所选择的代码表,对应于还未解码的未解码数据的游程数值和级别数值中的至少一个数值被检测。因此,通过总是使用适合于该量化步骤的数值并且使得对应于所分配代码的总位数最小化,可以执行对应于执行代码到至少一个游程数值和级别数值的分配的可变长度编码处理的可变长度解码处理。
根据本发明,在上述可变长度解码处理中,根据用于代码的解码处理,一个代码被解码,以重构由表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的一个非零系数的数值的级别数值所构成的一个游程-级别对,在该代码表选择步骤,根据该量化步骤的数值,从表示该游程-级别对和该代码之间的对应关系的多个代码表选择一个代码表,并且在该数值检测步骤中,根据被选择代码表,检测对应于一个还未解码的未解码代码的游程-级别对。因此,可以执行对应于一个可变长度编码处理的可变长度解码处理,该编码处理通过总是使用适合于该量化步骤的数值的代码表执行代码到游程-级别对的分配,并且使得对应于该被分配代码总位数最小化。
根据本发明,在上述可变长度解码方法中,在该代码表选择步骤中,根据关于被解码系数的信息选择在该数值检测步骤中使用的代码表。因此,可以执行对应于可变长度编码处理的可变长度解码处理,该编码处理通过总是使用适合于还未处理的系数数目的代码表而编码量化系数并且使得编码效率最大化。
根据本发明,在上述可变长度解码方法中,根据用于该代码的解码处理,该代码被解码以分别重构表示其数值为零的连续零系数的数目的游程数值,以及表示在该零系数之后的非零系数的数值的级别数值,在该代码表选择步骤中,用于根据关于被解码的游程数值的信息从表示该游程数值和代码之间的对应关系的多个代码表中选择一个代码表的第一选择处理,以及用于根据关于被解码的级别数值的信息从表示该级别数值和代码之间的对应关系的多个代码表中选择一个代码表的第二选择处理中的至少一个处理被执行,并且在该数值检测步骤中,根据被选择的代码表检测对应于一个未解码代码的游程数值和级别数值中的至少一个数值。因此,可以执行对应于可变长度编码处理的一种可变长度解码处理,该可变长度编码处理总是通过使用适用于还未处理的系数的数目的代码表而执行代码到至少一个游程数值和级别数值的分配,并且使得该编码效率最大化。
根据本发明,在上述可变长度解码方法中,在该代码表选择步骤中,根据已经解码的已解码游程数值的数目,从表示该游程数值和代码之间的对应关系的多个代码表选择一个代码表,并且在该数值检测步骤中,根据被选择代码表检测对应于还未解码的未解码代码的一个游程数值。因此,可以执行对应于可变长度编码处理的一种可变长度解码处理,该可变长度编码处理总是通过使用适用于还未处理的系数的数目的代码表而执行代码到游程数值的分配,并且使得该编码效率最大化。
根据本发明,在上述可变长度解码方法中,根据对代码的解码处理,一个代码被解码,以重构包括表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的多个非零系数的级别数值的游程-级别对,在该代码表选择步骤中,根据关于已经通过解码处理所获得的一个游程-级别对的信息从表示该游程-级别对和代码之间的对应关系的多个代码表选择一个代码表,并且在该数值检测步骤中,根据被选择代码表检测对应于还未解码的未解码代码的一个游程-级别对。因此,可以执行对应于可变长度编码处理的一种可变长度解码处理,该可变长度编码处理总是通过使用适用于还未处理的系数的数目的代码表而执行代码到游程-级别对的分配,并且使得该编码效率最大化。
根据本发明,在上述可变长度解码方法中,通过根据对应于图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且在解码步骤中,执行对代码的解码处理,从而从高频率分量到低频率分量获得对应于该代码的数值。因此,可以执行对应于可变长度编码处理的一种可变长度解码处理,该可变长度编码处理进一步减少对应于分配给该系数的代码的总位数。
根据本发明,在上述可变长度解码方法中,根据对代码的解码处理,对于由包括系数数据的预定系数的每个块,一个代码被解码以重构包括表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的一个游程-级别对,在该代码表选择步骤,根据在作为解码处理的一个对象的目标块中已经通过对该目标块的解码处理而获得的已处理系数的数目与还没有通过对该目标块的解码处理而获得的在该目标块中的未解码的非零系数数目之和,从表示该游程-级别对和代码之间的对应关系的多个代码表中选择一个代码表,并且在该数值检测步骤中,根据所选择的代码表检测对应于在该目标块中的未解码系数的游程-级别对。因此,通过使用不包含不会出现的由游程数值和级别数值所构成的对的代码表,可以实现具有更高效率对应于可变长度编码处理的可变长度解码处理。
根据本发明,在上述可变长度解码方法中,根据对该代码的解码处理,构成被编码数据的代码被解码,以重构包括表示其数值为零的连续零系数的数目的游程数值和表示在该零系数之后的非零系数的数值的级别数值的一个游程-级别对,该解码步骤包括一个代码表处理步骤,用于根据构成该游程-级别对的游程数值和级别数值的组合,定期地改变在表示该游程-级别对和相应代码之间的对应关系的第一代码表中的游程-级别对和代码之间的对应关系,基于该第一代码表形成具有与第一代码表不同的在游程-级别对和代码之间的对应关系的第二代码表,并且在该代码表选择步骤中,根据关于已处理系数和与该系数的产生相关的参数的至少一个信息选择第一和第二代码表之一。因此,第一和第二代码表之一被适当地选择作为当代码被变换为游程数值和级别数值对时所使用的最佳代码表。相应地,满意地执行对应于有效地删除包含在目标数据中的冗余信息的可变长度编码处理的可变长度解码处理,从而该可变长度解码处理是非常有用的。
根据本发明,在上述可变长度解码方法中,在第一和第二代码表中,较短的代码被适应性地对应于具有构成该游程-级别对的更小级别数值的各个游程-级别对,并且在第二代码表中,对应于较短代码的游程-级别对的级别数值与第一代码表相比平均值较小。因此,在与构成要被处理的目标数据的系数相关的量化参数较大的情况下,该可变长度解码方法是有效地。
根据本发明,在上述可变长度解码方法中,在该第一和第二代码表中,较短代码被适应性地对应于具有构成该游程-级别对的较小游程数值的各个游程-级别对,并且在第二代码表中,第一代码表相比,对应于较短代码的游程-级别对的游程数值的平均值较小。因此,在与构成要被处理的目标数据的系数相关的该量化参数较小的情况下,该可变长度解码方法是有效的。
根据本发明。在上述可变长度解码方法中,根据对该代码的解码处理,对由构成该系数数据的预定数目的系数所构成的每个块执行从一个代码重构一个游程-级别对,并且在该代码表处理步骤中,根据通过在作为解码处理的对象的一个目标块中的解码处理而获得的已处理系数的数目形成该第二代码表。因此,可以采用不包含不会出现的游程数值和级别数值对的代码表作为该第二代码表,从而可以实现对应于具有更高效率的可变长度编码处理的可变长度解码处理。
根据本发明,在上述可变长度解码方法中,在该数值检测步骤中,从高频分量到低频分量,由具有图像数据的最高频分量的一个游程-级别对执行对应于该代码的一个游程-级别对的检测。因此,可以采用不包含不会出现的游程数值和级别数值的一个代码表作为该第二代码表,从而可以实现对应于增加压缩比的可变长度编码处理的可变长度解码处理。
根据本发明,在上述可变长度解码方法中,通过在包含于第一代码表中的游程-级别对之间的对应关系中仅仅改变可以定期操作的对应关系而形成第二代码表。因此可以减少用于第二代码表的形成所需的算术运算。
根据本发明,在上述可变长度解码方法中,根据对应于该图像数据的量化步骤,通过图像数据的量化频率分量而获得构成该系数数据的系数,并且在该代码表选择步骤中,根据该量化步骤的数值执行在第一代码表和第二代码表之间的切换。因此,可以采用适用于该量化步骤的一个代码表作为在用于构成要被处理的目标数据的系数的可变长度解码处理中使用的代码表。
根据本发明,在上述可变长度解码方法中,该代码表选择步骤包括一个代码表切换步骤,用于根据一个切换指令信号在该第一代码表和第二代码表之间切换,并且在该解码步骤中,执行该切换指令信号的解码。因此,可以根据要被处理的目标数据的特性等等切换在该可变长度解码处理中使用的代码表。
根据本发明,在上述可变长度解码方法中,根据对该代码的解码处理,对包含由构成该系数数据的预定数目的系数的每个块执行从一个代码重构一个游程-级别对的操作,并且在该代码表处理步骤中,根据作为已经通过对目标块的解码处理而获得的在作为解码处理的对象的目标块中的已处理系数的数目与在还未通过对该块的解码处理而获得的目标块中的未解码的非零系数的数目之和形成第二代码表。因此,不包括不会出现的游程数值和级别数值对的一个代码表被用作为第二代码表,从而可以实现对应于具有更高效率的可变长度编码处理的可变长度解码处理。
根据本发明,在此提供一种用于对包括通过对由多个系数所构成的系数数据执行可变长度编码所获得多个代码的被编码数据解码的可变长度解码装置,其中包括:解码单元,用于使用表示该系数的数值和代码之间的对应关系的多个代码表,使得各个代码受到对用于解码该被编码数据的解码处理,以重构由多个系数所构成的系数数据,并且该解码单元包括:代码表选择单元,用于根据关于已经被解码的被解码系数和与该系数的解码处理相关的参数至少之一的信息从多个代码表选择一个代码表;以及数值检测单元,用于通过使用所选择的代码表检测对应于还未解码的未解码代码的数值。因此,可以执行对应于具有更高的编码效率的可变长度编码处理的可变长度解码处理,该编码处理通过改变代码表而有效地删除包含在系数数据中的冗余信息,以编码该系数数据。
根据本发明,在上述可变长度解码装置中,通过根据对应于图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且在该代码表选择单元中,根据该量化步骤的数值选择用于该数值检测单元的代码表。因此,可以执行对应于一种可变长度编码处理的可变长度解码处理,该编码处理通过总是采用适用于该量化步骤的代码表并且使得编码效率最大化。
根据本发明,在上述可变长度解码装置中,该代码表选择单元根据关于一个被解码系数的信息选择由该数值检测单元所使用的代码表。因此,可以执行对应于一种可变长度编码处理的可变长度解码处理,该可变长度编码处理通过总是使用适合于未解码系数的数目的代码表而对被量化系数编码并且使得编码效率最大化。
根据本发明,在上述可变长度解码装置中,根据对该代码的解码处理,该代码被解码,以分别重构表示其数值为零的连续零系数的数目的游程数值以及表示在该零系数之后的非零系数的数值的级别数值,该代码表选择单元根据被解码的游程数值从表示该游程数值和代码之间的对应关系的多个代码表选择一个代码表,并且该数值检测单元根据所选择的代码表检测对应于一个被解码代码的游程数值。因此,可以执行对应于可变长度编码处理的一种可变长度解码处理,该可变长度编码处理总是通过使用适用于未处理的游程数值的数目的代码表对游程数值编码并且可以实现编码效率的最大化。
根据本发明,在上述可变长度编码装置中,通过根据对应于图像数据的量化步骤量化图像数据的频率分量而获得该系数,并且该解码单元对代码执行解码处理,以从高频分量到低频分量获得对应于该代码的数值。因此,可以执行对应于可变长度编码处理的一种可变长度解码处理,该可变长度编码处理可以进一步减小对应于分配给系数的代码的总位数。
根据本发明,在此提供一种记录介质,其中包括一个程序,用于通过计算机执行对包括由多个系数所构成的系数数据的可变长度编码而获得的多个代码的被编码数据解码的可变长度解码处理,并且该程序包括解码步骤,用于使用表示该系数的数值和代码之间的对应关系的多个代码表使得各个代码受到对该被编码数据解码的解码处理,以重构由多个系数所构成的系数数据,并且该解码步骤进一步包括:代码表选择步骤,用于根据关于已经被解码的被解码系数和与该系数的解码处理相关的参数至少之一的信息选择该代码表;以及数值检测步骤,用于通过使用所选择的代码表检测对应于还未解码的未解码代码的数值。因此,可以通过软件实现对应于具有更高的编码效率的可变长度编码处理的可变长度解码处理,该编码处理通过改变代码表而有效地删除包含在系数数据中的冗余信息,以编码该系数数据。
具体实施方式
首先,将描述本发明的基本原理。
通常,当该量化步骤为粗略时,被量化的分量具有较小的绝对值。然后,该游程(连续零系数的长度)更长,并且相应地该级别数值(非零系数的数值)具有更小的绝对值。相反,当该量化步骤为精细时,被量化的分量具有更大的绝对值。因此,该游程更短并且相应地该级别数值具有更大的绝对值。
另外,当已经在一个要被处理的目标块中完成许多被量化的分量的可变长度编码并且未编码的被量化分量的数目较小,则不会出现超过未编码的量化分量的数目的游程数值。因此,当除去这些游程数值和级别数值对时,增加编码效率。
从这一观点来看,本发明根据可变长度编码处理或用于被量化系数的可变长度解码处理的状态以及与被量化系数的产生相关的参数(量化参数),改变表示一个被量化系数的大小的数值信息和代码之间对应关系的一个代码表,从而有效地除去包含在该可变长度编码处理的目标数据(被量化系数)中的冗余信息。
例如,根据被量化系数的处理状态,通过选择在常规可变长度编码或解码处理中使用的代码表(第一代码表)或者根据第一代码表形成并且对要被处理的数据优化的第二代码表而执行该代码表的改变。不必总是根据第一代码表形成第二代码表,但是适用于处理目标数据的任何代码表可以被选择作为一个代码表。
在下文中,将参照图1至25描述本发明的实施例。
[实施例1]
图1为用于说明根据本发明第一实施例的图像编码装置的方框图。
根据第一实施例的图像编码装置101具有用于根据量化参数QP和VLC选择信号VlcSel使得来自量化单元Q的输出QS受到可变长度编码处理并且输出一个编码流Str1的游程长度编码单元RLE1,取代如图3中所示的常规图像编码装置201b中的游程长度编码单元RLE0b,其使得来自量化单元Q的输出(量化分量)QS受到可变长度编码处理并且输出一个编码流Str0b。
在此,该量化参数QP是表示一个量化步骤的数值的参数,并且该量化步骤近似于与该量化参数QP成比例。更加具体来说,当量化参数QP较大时,被量化分量具有较小的绝对值,然后该被量化分量的零游程(数值为零的连续分量的长度)更长,并且一个级别数值具有较小的绝对值。
图2为用于说明该游程长度编码单元RLE1的具体结构的方框图。
该游程长度编码单元RLE1类似于图35中所示的常规游程长度编码单元RLE0b,具有:曲折扫描仪Scan用于把从量化单元Q输出的二维阵列的(量化分量)QS变换为一维阵列的(即,预定次序)量化系数Coef;游程计算器RunCal,用于计算其数值为零(零系数)的量化分量Coef的连续数目并且输出表示连续零系数的数目的游程数值Run;以及级别计算器LevCal,用于计算在该零系数之后其数值非零的(非零系数)的量化分量Coef的数值,并且输出表示该非零系数的数值的级别数值Lev。
图3(a)示出对应于一个块的量化分量Q1至Q16的一个二维阵列,以及图3(b)由箭头A1至A15所示的在曲折扫描仪Scan中的量化分量Q1至Q16的扫描路径。在此,通过量化对应于一个图像信号的频率分量的直流分量而获得一个量化分量Q1,并且通过量化对应于该图像信号的频率分量的交流分量而获得量化分量Q2至Q16。图3(c)示出该量化分量Q1至Q16的一个一维阵列(编码次序),其通过在曲折扫描仪Scan中的曲折扫描而获得,并且图3(d)示出表示量化分量Q1至Q16的数值的具体数值的一维阵列。
该游程长度编码单元RLE1进一步包括一个用于对从级别计算器LevCal输出的级别数值Lev重新排序的一个重新排序单元Lreodr;用于对从游程计算器RunCal输出的游程数值Run重新排序的重新排列单元Rreodr;以及用于根据来自游程计算器RunCal的输出计算在一个目标块中的未编码系数的数目Cnum并且输出所计算的数目的一个数目计算器NumClc。图3(e)示出从具有图3(c)和3(d)中所示的排列的量化分量的数值获得的游程数值和级别数值的次序。图3(f)示出在重新排列之后的游程数值和级别数值的次序。
该游程长度编码单元RLE1进一步包括:可变长度编码器LVLC,用于根据量化参数QP和选择信号VlcSel使得来自重新排列单元Lreodr的输出ROLev受到可变长度编码处理,并且输出一个代码串(级别数值代码串)LStr;可变长度编码器RVLC,用于根据未编码系数的数目Cnum使得来自重新排列单元Rreodr的输出RORun受到可变长度编码处理,并且输出一个代码串(游程数值代码串)RStr;以及多路复用器MUX,用于把用于每个块的代码串LStr和代码串RStr复用,并且输出一个复用的编码流Str1。
图4为用于说明由可变长度编码器LVLC所执行的可变长度编码处理的示意图。图4(a)为示出用于一个级别数值的可变长度编码处理的流程图,以及图4(b)为示出在用于该级别数值可变长度编码处理中使用的代码表的示意图。
图4(b)示出级别数值(Level)的排列Alev、在量化参数QP小于一个阈值的情况中的代码(代码字)的排列Ca1、以及在量化参数QP等于或大于该阈值时的代码(代码字)的排列Ca2。
在此,一个代码表L1由级别数值(Level)的排列Alev和在量化参数QP小于一个阈值时的代码(代码字)的排列Ca1所构成。该代码表L1示出该级别数值(Level)和该量化参数QP小于该阈值的情况中的代码之间的对应关系。一个代码表L2由级别数值(Level)的排列Alev和在量化参数QP等于或大于该阈值时的代码(代码字)的排列Ca2所构成。该代码表L2示出级别数值(Level)和在量化参数QP等于或大于该阈值时的代码之间的对应关系。
图5为用于说明由可变长度编码器RVLC所执行的可变长度编码处理的示意图。图5(a)为用于说明对一个游程数值的可变长度编码处理的流程图,以及图5(b)为示出在对该游程数值的可变长度编码处理中所用的代码表的示意图。
图5(b)示出游程数值(Run)的排列Arun、在未编码零系数的数目为1时的代码(代码字)的排列Cb1、在未编码零系数的数目为2时的代码(代码字)的排列Cb2、在未编码零系数的数目为3时的代码(代码字)的排列Cb3、在未编码零系数的数目为4时的代码(代码字)的排列Cb4、在未编码零系数的数目为5时的代码(代码字)的排列Cb5、在未编码零系数的数目为6时的代码(代码字)的排列Cb6、在未编码零系数的数目为7时的代码(代码字)的排列Cb7、以及在未编码零系数的数目为8时的代码(代码字)的排列Cb8。
在此,代码表R1由游程数值(Run)的排列Arun和在未编码零系数的数目为1时的代码(代码字)的排列Cb1所构成,并且代码表R1示出游程数值(Run)和在未编码零系数的数目为1时的代码之间的对应关系。类似地,代码表R2、R3、R4、R5、R6和R7分别由游程数值(Run)的排列Arun和在未编码零系数的数目为2、3、4、5、6和7时的代码(代码字)的排列Cb、Cb3、Cb4、Cb5、Cb6和Cb7所构成,并且示出游程数值(Run)分别与在未编码零系数的数目为2、3、4、5、6和7时的代码之间的对应关系。另外,一个代码表R8由游程数值(Run)的排列Arun以及在未编码零系数的数目为8或更大时的代码(代码字)的排列Cb8所构成,并且示出该游程数值(Run)和在未编码零系数的数目为8或更大时的代码之间的对应关系。
下面将描述其操作。
在根据第一实施例的图像编码装置101中,该分块单元Blk、频率变换单元Trans和量化单元Q按照与常规图像编码装置201a(参见图30)或图像编码装置201b(参见图34)相同的方式而操作。
更加具体来说,当图像信号Vin被输入到图像编码装置101a时,该分块单元Blk把所输入的图像信号Vin分为块单元,以产生对应于各个块的图像信号(像素值分量)BlkS。该频率变换单元Trans把像素值分量BlkS根据DCT(离散余弦变换)或小波变换变换为频率分量TransS。该量化单元Q根据量化参数QP在一个预定量化步骤中量化该频率分量TransS,以输出量化分量QS,以及输出量化参数QP。该游程长度编码单元RLE1使得量化分量QS受到可变长度编码处理,并且步骤Sc一个编码流Str1。
在下文中,将具体描述游程长度编码单元RLE1的操作。
该曲折扫描仪Scan对从量化单元Q输出的量化分量QS(即,二维阵列中的多个量化分量Q1至Q16,如图3(a)中所示)的曲折扫描,以把该量化分量QS变换为量化分量Coef。在此,通过沿着由图3(b)中所示的箭头A1至A15的路线扫描如图3(a)中所示的二维阵列中的多个量化分量Q1至Q16而执行量化分量QS的曲折扫描,以把多个量化分量Q1至Q16的阵列变换为如图3(c)中所示的一维阵列(处理次序)。在此,图3(d)示出已经受到曲折扫描的多个量化分量Q1至Q16的具体数值的排列(20,-10,5,0,2,0,0,0,1,0,0,0,-1,0,0,1)。
该游程计算器RunCal根据从曲折扫描仪Scan输出的量化分量Coef计算连续零系数的数目,并且输出表示所计算的数目的游程数值Run。图3(e)示出根据该游程数值的输出次序连续从游程计算器RunCal输出的具体游程数值:(0,0,0,1,3,3,2)。另一方面,该级别计算器LevCal根据从曲折扫描仪Scan输出的量化分量Coef计算在该连续零系数之后的非零系数,并且输出表示所计算的数值的级别数值Lev。图3(e)示出根据该级别数值输出的次序从级别计算器LevCal连续输出的具体级别数值:(20,-10,5,2,1,-1,1)。
重新排列单元Rreodr对已经从游程计算器RunCal连续输出的游程数值按照与游程数值输出的次序相反的相反次序重新排列。图3(f)示出已经被重新排列单元Rreodr重新排列的具体游程数值的改变后的次序:(2,3,3,1,0,0,0)。该数目计算器NumClc根据从游程计算器RunCal输出的游程数值Run计算未编码系数的数目,并且输出所计算的未编码系数的数目(在下文中,也称为未编码系数数目)Cnum。另一方面,该重新排序单元Lreodr对已经顺序地从级别计算器LevCal输出的级别数值按照与该级别数值被示出的次序相反的次序重新排序。图3(f)示出已经由该重新排序单元Lreodr重新排序的具体级别数值的改变次序:(1,-1,1,2,5,-10,20)。
该可变长度编码器RVLC使得作为来自重新排序单元Rreodr的输出的已经重新排序的游程数值RORun受到可变长度编码处理,用于根据从数目计算器NumClc输出的未编码零系数的数目Cum,通过使用表示该游程数值和代码(代码字)之间的对应关系的多个代码表,把代码(代码字)分配到游程数值RORun,并且输出一个游程数值代码串RStr。另一方面,该可变长度编码器LVLC根据从数目计算器NumClc输出的未编码零系数的数目Cum,通过使用表示该游程数值和代码(代码字)之间的对应关系的多个代码表,使得作为来自重新排序单元Lreodr的输出的被重新排序的游程数值ROLev受到可变长度编码处理,用于把代码(代码字)分配到游程数值RORun,并且输出一个游程数值代码串RStr。另一方面,该可变长度编码器LVLC根据来自量化单元Q的量化参数QP和来自可变长度编码的外部指示选择的选择信号VlcSel,通过使用表示级别数值和代码(代码字)之间的对应关系的多个代码表,使得作为来自重新排序单元Lreodr的输出的已经被重新排序的游程数值ROLev受到可变长度编码处理,用于把代码(代码字)分配到游程数值ROL,并且输出一个级别数值代码串LStr。
然后,该多路复用器MUX一个块接着一个块地复用该级别数值代码串LStr和游程数值代码串RStr,并且输出一个复用的编码流Str1。
在此,一个块接着一个块地执行用于复用该级别数值代码串LStr和游程数值代码串RStr的处理,例如,按照这种方式,对应于所有目标块的游程数值的代码串RStr之后接着对应于该目标块的所有级别数值的代码串LStr,或者对应于该目标块的所有级别数值的代码串LStr之后接着对应于所有目标块的游程数值的代码串RStr。
在下文中,将参照图4具体描述可变长度编码器LVLC的操作。
该可变长度编码器LVLC从量化单元Q获得量化参数QP(步骤Sa1),并且确定所获得的量化参数QP的数值是否等于或大于保存在可变长度编码器LVLC中的量化参数QP的阈值(步骤Sa2)。
当该确定结果表明所获得的量化参数QP的数值小于量化参数QP的阈值,则该可变长度编码器LVLC选择由级别数值的排列Alev和代码(代码字)的排列Ca1所构成的代码表L1(参见图4(b))(步骤Sa3),当所获得的量化参数QP的数值等于或大于量化参数QP的阈值时,选择由级别数值的排列Alev和代码(代码字)的排列Ca2所构成的代码表L2(参见图4(b)(步骤Sa4)。
然后,可变长度编码器LVLC确定在一个目标块中是否存在未编码的级别数值Lev(步骤Sa5)。当一个未编码的级别数值Lev被包含在该目标块中时,该可变长度编码器LVLC使用所选择的代码表执行用于对该级别数值编码的处理,即,用于把相应的代码分配给该级别数值的处理(步骤Sa6),然后执行步骤Sa5的处理。另一方面,当在步骤Sa5中的处理结果表明在该目标块中没有未编码的级别数值Lev时,则该可变长度编码器LVLC结束对级别数值Lev的可变长度编码处理。
在此,当VLC选择信号VlcSel预先指定使用一个特定代码表的可变长度编码处理时,则该可变长度编码器LVLC通过使用特定代码表对该级别数值执行可变长度编码处理,而与量化参数QP的数值无关。
接着,将参照图5具体描述可变长度编码器RVLC的操作。
该可变长度编码器RVLC根据来自数目计算器NumClc的输出(未编码系数的数目)Cnum确定在该目标块中是否存在任何未编码的非零系数(步骤Sb1)。当该确定结果表明存在一个未编码的非零系数时,该可变长度编码器RVLC根据来自数目计算器NumClc的输出Cnum计算在该目标块中的未编码的零系数的数目(步骤Sb2)。
然后,该可变长度编码器RVLC根据未编码的零系数的所计算数目选择一个代码表(步骤Sb3)。更加具体来说,当未编码的零系数的数目为1时,该可变长度编码器RVLC选择由游程数值的排列Arun和代码(代码字)的排列Cb1(参见图5(b))。类似地,当未编码的零系数的数目为2时,该可变长度编码器RVLC选择代码表R2,当未编码的零系数的数目为3时选择代码表R3,以及当未编码的零系数的数目为4时选择代码表R4。另外,当未编码的零系数的数目为5时,该可变长度编码器RVLC选择代码表R5,当未编码的零系数的数目为6时选择代码表R6,以及当未编码的零系数的数目为7时选择代码表R7。另外,当未编码的零系数的数目为8或更大时,该可变长度编码器RVLC选择代码表R8。
接着,该可变长度编码器RVLC使用所选择的代码表执行对游程数值Run编码的处理,即,用于把相应代码分配到该游程数值的处理(步骤Sb4),然后执行步骤Sb1的确定处理。
在此,当在步骤Sb1中的确定结果表明没有未编码的非零系数时,该可变长度编码器RVLC结束对游程数值的可变长度编码处理。
接着,将描述一个具体例子,其中根据如上文所述的级别数值的可变长度编码中的量化参数选择一个代码表,从而增加编码效率。
图6示出对应于当量化参数QP相对较小时,即,当来自级别计算器LevCal并且被重新排序和从重新排序单元Lreodr输出的级别数值为如图3(f)中所示的1,-1,1,2,5,-10,20时,对应于分配给级别数值的代码的总位数。
当该量化参数QP被确定为等于或大于一个阈值并且采用该代码表L2时,代码(代码字)被分配给如图6(a)中所示的各个级别数值,并且对应于被分配的代码的总位数为75位。
另一方面,当量化参数QP被确定为小于该阈值并且采用该代码表L1时,代码(代码字)被分配到如图6(b)中所示的各个级别数值,并且对应于所分配的代码的总位数为47位。
当量化参数QP相对较小时,具有较大数值的被量化分量的出现频率较大。因此,与代码表L2相比,选择其中较短代码在平均值上相当于绝对值相对较大的级别数值的代码表L1是有效的,以增加编码效率。
图7示出当量化参数QP相对较大时,即,当来自级别计算器LevCal的并且被重新排序和从该重新排序单元Lreodr输出的输出(级别数值)为与图3(f)中不同的1,-1,1,1,1,-2,3时,对应于被分配到级别数值的总位数。
当确定量化参数QP等于或大于该阈值并且采用代码表L2时,代码(代码字)被分配到如图7(a)中所示的各个级别数值,并且对应于被分配代码的总位数为15位。
另一方面,当确定量化参数QP小于该阈值并且采用代码表L1时,代码(代码字)被分配到如图7(b)中所示的各个级别数值,并且对应于被分配代码的总位数为17位。
如上文所述,当量化参数QP的数值相对较大时,具有较大数值的量化系数的出现频率较低。因此,与代码表L1相比,选择其中较短代码集中地对应于绝对值相对较小的级别数值的代码表L2是有效的,以增加编码效率。
图8示出当游程数值为如图3(e)中所示的0,0,0,1,3,3,2时对应于分配到从游程计算器RunCal输出的游程数值的代码的总位数。
当不执行在游程长度编码单元RLE1中的游程数值的重新排序和代码表的改变而是总是采用如图5(b)中所示的代码表R8时,代码(代码字)被分配到如图8(a)中所示的各个游程数值,并且对应于被分配代码的总位数为21位。
当根据未编码零系数的数目执行在游程长度编码单元RLE1中的游程数值的重新排序和代码表的改变时,代码(代码字)被分配到如图8(b)所示的各个游程数值,并且对应于被分配代码的总位数为13位。在此,每次把一个代码分配到一个游程数值时,未编码系数的数目被减小通过把1加上紧接着在前被编码的一个游程数值所获得的数值。这是因为单个或连续零系数总是接着一个非零系数。另外,从重新排序单元Rreodr输出的对应于一个块的多个重新排序的游程数值获得的未编码零系数的数目为15。这是因为,要被处理的块总是具有至少一个非零系数。
当不执行例如在游程长度编码单元RLE1中的游程数值的重新排序而是仅仅执行根据未编码的零系数的数目而改变代码表时,代码(代码字)被分配到如图8(c)中所示的各个游程数值,并且对应于被分配代码的总位数为20位。
如上文所述,根据第一实施例的图像编码装置101包括游程长度编码单元RLE1,其使用表示其数值为零的(零系数)的量化分量Coef的连续数目的游程数值Run和表示在该零系数之后的数值非零的(非零系数)的量化分量Coef的数值的级别数值Lev,编码通过量化一个图像信号的频率分量而获得的被量化系数。因此,通过除去冗余信息,可以用更高的编码效率对该被量化系数进行编码。
另外,根据第一实施例的游程长度编码单元RLE1包括可变长度编码器LVLC,其根据量化参数QP的数值选择一个代码表,并且通过使用所选择的代码表执行级别数值的可变长度编码,从而减小对应于被分配到该级别数值的代码的总位数。该游程长度编码单元RLE1进一步包括重新排序单元Rreodr,其从高频分量到低频分量对从已经给定预定处理次序的被量化系数获得的多个游程数值重新排序;以及可变长度编码器RVLC,其根据在该目标块中的未编码的零系数的数目选择一个代码表,并且使用所选择的代码表执行重新排序的游程数值的可变长度编码。因此,有效地减小对应于分配到该游程数值的代码的总位数,从而增加编码效率。
在该第一实施例中,可变长度编码器RVLC根据在该目标块中的未编码的零系数的数目(即,从数目计算器NumClc输出的输出Cnum)选择一个代码表。但是,该可变长度编码器RVLC不但可以根据来自数目计算器NumClc的输出Cnum而且根据VLC选择信号VlcSel选择一个代码表。例如,当预先由VLC选择信号VlcSel指定使用一个特定代码表的可变长度编码处理时,该可变长度编码器RVLC通过使用特定代码表执行对该游程数值的可变长度编码处理,而与在该目标块中的未编码的零系数无关。
[实施例2]
图9为用于说明根据本发明第二实施例的一个图像解码装置的方框图。
根据第二实施例的图像解码装置102例如解码从第一实施例的图像编码装置101输出的编码流Str1。
该图像解码装置102具有根据量化参数QP和VLD选择信号VldSel使得所输入的编码流Str1受到可变长度解码处理以重构被量化系数的一个游程长度解码单元RLD1,其取代如图36中所示的使得所输入的编码流Str0b受到可变长度解码处理的游程长度解码单元RLD0b。除了游程长度解码单元RLD1之外,该结构与图36中所示的图像解码装置202b的结构相同。
图10为用于说明游程长度解码单元RLD1的具体结构的方框图。
该游程长度解码单元RLD1具有一个多路分解器DMUX,用于对从图像编码装置101输出的复用编码流Str1进行多路分解,以获得对应于级别数值的代码串LStr和对应于游程数值的代码串RStr,这与如图37中所示的常规游程长度解码单元RLD0b相同。
该游程长度解码单元RLD1具有一个可变长度解码器LVLD,用于根据量化参数QP和VLC选择信号VlcSel,使得通过把复用的编码流Str1多路分解而获得的级别数值代码串LStr受到可变长度解码处理,以重构游程数值ROLev;以及可变长度解码器RVLD,用于根据未解码系数的数目,使得通过对复用的编码流Str1多路分解而获得的游程数值代码串RStr受到可变长度解码处理,以重构游程数值RORun。
该游程长度解码单元RLD1进一步包括反重新排序单元LIreodr,其在编码结束时按照与重新排序单元Lreodr相反的次序重新排序由可变长度解码器LVLD输出的级别数值ROLev;反重新排序单元RIreodr,其在该编码结束时,按照与重新排序单元Rreodr相反的次序对由可变长度解码器RVLD输出的游程数值RORun重新排序;以及数目计算器NumClc,其根据来自反重新排序单元RIreodr的输出Run计算在一个目标块中的未解码系数的数目Cnum,并且输出所获得的数目。
该游程长度解码单元RLD1进一步包括反曲折扫描仪IScan,其从由级别数值Lev和游程数值Run所表示的一维阵列中的被解码量化分量重构二维阵列的解码的量化分量DQS。
图11为用于说明由可变长度解码器LVLD执行的可变长度解码处理。图11(a)为用于说明重构级别数值的可变长度解码处理的流程图,以及图11(b)为示出在该可变长度解码处理中所用的一个代码表的示意图。在此,在用于该级别数值的可变长度解码处理中采用的代码表L1和L2与用于在根据第一实施例的游程长度编码单元RLE1中的级别数值的编码处理中采用的代码表L1和L2相同。
图12为用于说明由可变长度解码器RVLD执行的可变长度解码处理的示意图。图12(a)为用于说明用于重构游程数值的可变长度解码处理的流程图。图12(b)为示出在该可变长度解码处理中采用的代码表的示意图。在此,在对游程数值的可变长度解码处理中采用的代码表R1至R8分别与在根据第一实施例的游程长度编码单元RLE1中对游程数值的编码处理中采用的代码表R1和R8相同。
下面将描述其操作。
当一个复用的量化单元Q例如被从根据第一实施例的图像编码装置101输入到图像解码装置102时,该游程长度解码单元RLD1使得该编码流Str1受到解码处理,并且输出解码的量化分量DQS。该游程长度解码单元RLD1的操作与游程长度编码单元RLE1的操作相反。
更加具体来说,在游程长度解码单元RLD1中,该多路分解器DMUX对所输入的富裕编码流Str1进行多路分解,以获得对应于级别数值的级别数值代码串LStr和对应于游程数值的游程数值代码串RStr,并且把该级别数值代码串和游程数值代码串分别输出到可变长度解码器LVLD和可变长度解码器RVLD。
该可变长度解码器LVLD通过使用表示该级别数值和代码(代码字)之间的对应关系的多个代码表,根据来自量化单元Q的量化参数QP和来自可变长度解码的外部指示选择的VLC选择信号VlcSel,对于从该多路分解器DMUX获得的级别数值代码串LStr获得对应于各个代码(代码字)的级别数值ROLev,并且把所获得的级别数值输出到反重新排序单元LIreodr。另一方面,该可变长度解码器RVLD通过使用表示该游程数值和代码(代码字)之间的对应关系的多个代码表,根据从数目计算器NumClc输出的未编码系数的数目Cnum,对从该多路分解器DMUX获得的游程数值代码串RStr获得对应于各个代码(代码字)的游程数值RORun,并且把所获得的游程数值输出到反重新排序单元RIreodr。
该反重新排序单元LIreodr在编码结束时使得从该可变长度解码器LVLD输出的级别数值ROLev受到重新排序单元Lreodr的处理,以在编码结束时重构来自该级别计算器的输出Lev。另一方面,该反重新排序单元RIreodr在编码结束时使得从可变长度解码器RVLD输出的游程数值RORun受到与重新排序单元Rreodr的处理相反的排列处理,以在编码结束时重构来自该游程计算器的输出Run。另外,数目计算器NumClc根据来自反重新排序单元RIreodr的输出Run计算在一个目标块中的未解码系数的数目Cnum,并且把所获得的数目Cnum输出到可变长度解码器RVLD。
然后,该反曲折扫描仪IScan执行与曲折扫描仪Scan相反的操作,以从由级别数值Lev和游程数值Run所表示的一维阵列的被量化分量重构二维阵列的解码的量化分量DQS,并且把所获得的量化分量DQS输出到反量化单元IQ。
在下文中,将参照图11具体描述可变长度解码器LVLD的操作。
该可变长度解码器LVLD从图像编码装置101的量化单元Q获得量化参数QP(步骤Sc1),并且确定所获得的量化参数QP是否等于或大于保持在可变长度解码器LVLD中的量化参数QP的阈值(步骤Sc2)。
当该确定结果表明所获得的量化参数QP小于该量化参数QP的阈值,则该可变长度解码器LVLD选择由级别数值的排列Alev和代码(代码字)的排列Ca1所构成代码表L1(参见图11(b))(步骤Sc3),并且当获得的量化参数QP等于或大于量化参数QP的阈值时,选择由级别数值的排列Alev和排列Ca2所构成的代码表L2(参见图11(b))(步骤Sc4)。
然后,该可变长度解码器LVLD确定在该目标块中是否有任何未解码的级别数值Lev(步骤Sc5)。当未解码的级别数值Lev被包含在该目标块中时,该可变长度解码器通过使用所选择的代码表执行用于重构级别数值Lev的解码处理,即,用于获得对应于代码的级别数值的处理(步骤Sc6),然后执行上述步骤Sc5的处理。另一方面,在步骤Sc5中的确定结果表明在该目标块中没有未解码的级别数值Lev,该可变长度解码器结束用于重构该级别数值Lev的可变长度解码处理。
在此,当VLC选择信号VlcSel先前指定使用一个特定代码表的可变长度解码处理时,该可变长度解码器LVLD通过使用该特定代码表执行用于重构级别数值的可变长度解码处理,而与量化参数QP的数值无关。
接着,将参照图12具体描述可变长度解码器RVLD的操作。
该可变长度解码器RVLD根据来自数目计算器NumClc的输出(未解码系数的数目)Cnum确定在一个目标块中是否有任何未解码的非零系数(步骤Sd1)。当该确定结果表明存在未解码的非零系数,则该可变长度解码器根据该未解码系数的数目Cnum确定在该目标块中的未解码零系数的数目(步骤Sd2)。
该可变长度解码器RVLD根据未解码零系数的所获得数目选择一个代码表(步骤Sd3)。更加具体来说,当未解码零系数的数目为1时,该可变长度解码器选择由游程数值的排列Arun和代码(代码字)的排列Cb1所构成的代码表R1(参见图12(b))。类似地,当未解码零系数的数目为2时,该可变长度解码器选择代码表R2,当未解码零系数的数目为3时选择代码表R3,以及当未解码零系数的数目为4时选择代码表R4。另外,当未解码零系数的数目为5时,该可变长度解码器选择代码表R5,当未解码零系数的数目为6时选择代码表R6,以及当未解码零系数的数目为7时选择代码表R7。另外,当未解码零系数的数目为8或更大时,该可变长度解码器RVLD选择代码表R8。
接着,该可变长度解码器RVLD通过使用被选择的代码表执行用于重构游程数值Run的解码处理,即,用于获得对应于各个代码的游程数值的处理(步骤Sd4),并且然后执行上述步骤Sd1的确定处理。
另外,当在步骤Sd1中的确定结果表明不存在未解码的非零系数时,该可变长度解码器RVLD结束用于重构游程数值的可变长度解码处理。
在根据第二实施例的图像解码装置102中,该反量化单元IQ、反频率变换单元ITrans和解块单元DeBlk按照与常规图像解码装置202a(参见图32)和图像解码装置202b(参见图36)相同的方式工作。
具体来说,该反量化单元IQ执行量化单元Q的反操作,即,参照量化参数QP对解码的量化分量DQS执行反量化的操作,以输出解码的频率分量ITransS。该反频率变换单元ITrans执行频率变换单元Trans的反操作,即,根据反DCT或反小波变换变换对应于每个块的解码的频率分量ITransS的操作,以重构对应于各个块的解码的像素值信号DBlkS。然后,该解块单元DeBlk结合各个块的解码的像素值信号DBlkS,并且输出对应于每个图像(帧)的解码的图像信号Vout。
如上文所述,根据第二实施例的图像解码装置102包括游程长度解码单元RLD1,其把构成被编码数据的游程数值代码串RStr和级别数值代码串LStr分别变换为表示连续零系数Coef的数目的游程数值Run和表示在该零系数之后的非零系数的数值的级别数值Lev,以根据该游程数值和级别数值重构被量化系数。因此,可以满意地执行对应于一种可变长度编码处理的解码处理,该编码处理可以除去冗余信息以更高编码效率编码的被量化系数。
另外,根据第二实施例的游程长度解码单元RLD1包括可变长度解码器LVLD,其根据量化参数QP的数值选择一个代码表,并且通过使用被选择的代码表执行用于重构级别数值的可变长度解码。因此,可以满意地解码由对应于分配给级别数值的代码的减少的总位数所构成的级别数值代码串。
该游程长度解码单元RLD1进一步包括可变长度解码器RVLD,反量化单元IQ根据在一个目标块中的未解码零系数的数目选择一个代码表,并且通过使用被选择的代码表解码对应于重新排序的游程数值的代码串;以及反重新排序单元RIreodr,其按照与在游程长度解码单元RLD1中对游程数值的重新排序处理相反地次序,对由该解码处理所获得的游程数值重新排序。因此,对应于被分配到该游程数值的代码的总位数可以被有效地减小,并且可以满意地解码由该游程数值所构成的游程数值代码串。
在该第二实施例中,该可变长度解码器RVLD根据在目标块中的未解码零系数的数目(即,来自数目计算器NumClc的输出Cnum)选择一个代码表,但是该可变长度解码器RVLD不但可以根据来自数目计算器NumClc的输出Cnum,而且还根据VLD选择信号VldSel选择该代码表。例如,当先前由VLD选择信号VldSel指定使用特定代码表的可变长度解码处理时,该可变长度解码器RVLD通过使用该特定代码表执行可变长度解码处理,以重构游程数值,而与在该目标块中的未解码零系数的数目无关。
[实施例3]
图13为用于说明根据本发明第三实施例的图像编码装置的方框图。
根据第三实施例的图像编码装置103具有根据量化参数QP或VLC选择信号VlcSel使得来自量化单元Q的输出QS受到可变长度编码处理并且输出一个编码流Str2的游程长度编码单元RLE2,其取代在图38中所示的图像编码装置201c中的游程长度编码单元RLE0c,其使得来自量化单元Q的输出(被量化分量)QS受到可变长度编码处理并且输出一个编码流Str0c。该第三实施例的图像编码装置103的其他部分与常规的图像编码装置201c相同。
更加具体来说,类似于常规的游程长度编码单元RLE0c,该游程长度编码单元RLE2具有第一代码表T1(参见图42),其根据游程数值和级别数值的组合示出游程数值和级别数值对(在下文称为游程-级别对)和一个相应代码之间的对应关系。该游程长度编码单元RLE2根据该第一代码表定期改变游程-级别对和在该第一代码表中的代码之间的对应关系,以形成具有不同于第一代码表的对应关系的第二代码表,并且根据从量化单元Q输出的量化参数QP或者来自外部的VLC选择信号VlcSel选择第一和第二代码表之一,以及根据被选择的代码表把代码分配给与在要被处理的目标数据中的系数相关的游程-级别对。
在此,该量化参数QP是表示该量化步骤的数值的一个参数,并且该量化步骤近似于与量化参数QP成正比。更加具体来说,当量化参数QP较大时,该量化分量具有较小的绝对值,然后在该被量化分量中的零游程(其数值为零的连续分量的长度)更长,因此该级别数值具有更小的绝对值。因此,在这种情况中,把较小代码分配到包含较大游程数值和较小级别数值的游程-级别对的一个代码表被选择,从而增加编码效率。相反,当量化参数QP较小时,该被量化分量具有更大的绝对值。因此,把较小代码分配到包括较小游程数值和较大级别数值的一个代码表被选择,从而增加编码效率。
另外,当输入来自图像编码装置103外部的VLC选择信号VlcSel时,该游程长度编码单元RLE2根据VLC选择信号VlcSel选择在该编码处理中所用的一个代码表。因此,当根据图像特性(图像的运动值、运动的复杂度、图案的细节等等)从外部选择一个适当的代码表时,或者当可以由仅仅包含一个代码表的一个图像解码装置所解码的数据流形成在图像编码装置103侧时,该图像编码装置103可以被VLC选择信号VlcSel所控制总是选择预定代码表。也就是说,还可以执行一种不改变一个代码表的可变长度编码处理,而是仅仅使用一个代码表。
图14为用于说明游程长度编码单元RLE2的具体结构的方框图。
该游程长度编码单元RLE2类似于常规的游程长度编码单元RLE0c(参见图39)具有:曲折扫描仪Scan,用于把二维阵列的输出(量化分量)QS从量化单元Q转换为一维阵列(即,预定次序)的量化分量Coef;游程计算器RunCal,用于计算其数值为零的连续量化分量(零系数)的数目,并且输出一个游程数值Run;以及级别计算器LevCal,用于计算其数值非零(非零系数)的量化分量Coef的数值,并且输出一个级别数值Lev。
在该第三实施例中,该游程长度编码单元RLE2进一步具有一个游程转换器RunConv,用于根据量化参数QP或VLC选择信号VlcSel,执行把来自游程计算器RunCal的输出(游程数值)Run分为表示游程数值Run的高位数字的游程数值Run1和表示游程数值Run的低位数字的游程数值Run2的处理;以及级别转换器LevConv,用于根据量化参数QP或VLC选择信号VlcSel,执行把来自级别计算器LevCal的输出(级别数值)Lev转换为表示级别数值Lev的高位数字的级别数值Lev1和表示级别数值Lev的低位数字的级别数值Lev2的处理。
该游程长度编码单元RLE2进一步包括一个游程级别编码器RunLevEnc,用于根据一个代码表或算术运算,获得对应于一对游程数值Run1和级别数值Lev1(在下文中称为游程-级别高位数字对)的代码号Code;以及重新排序单元ReOdr,用于根据量化参数QP或VLC选择信号VlcSel执行对游程-级别高位数字对重新排序的处理,使得对应于要被处理的一个目标块的游程-级别高位数字对根据游程-级别高位数字对和代码号Code对应于较小的代码号,并且输出对应于重新排序的游程-级别高位数字对的一个代码号ReOdrCode。
该游程长度编码单元RLE2进一步包括:位置计算器PosClc,用于从游程数值Run计算被编码的量化分量(被编码系数)的数目并且输出被编码系数的数目Pos;数目变换器CodeTrans,用于根据游程-级别高位数字对和代码号ReOdrCode之间的对应关系,从级别数值Lev2和游程数值Run2输出对应于由第二代码表所表示的一个游程-级别对的代码号ExtCode;以及可变长度编码器VLC,用于把一个位串(代码字)分配到代码号ExtCode,以产生一个编码流Str2。
在游程长度编码单元RLE2中的曲折扫描仪Scan、游程计算器RunCal、级别计算器LevCal和可变长度编码器VLC与如图39中所示的常规游程长度编码单元RLE0c相同。
下面将描述其效果。
该曲折扫描仪Scan把二维阵列的量化参数QP转换为一维阵列(即,设置一个次序)的量化分量Coef。该游程计算器RunCal计算连续零分量(其数值为零的量化分量)Coef的数目,并且输出表示获得的数目的游程数值Run。该级别计算器LevCal计算一个非零分量(在零分量之后的数值非零的量化分量)Coef,并且输出一个表示该非零分量的数值的级别数值Lev。
该游程计算器RunCal执行把游程数值Run分为表示游程数值Run的高位数字的游程数值Run1和表示游程数值Run的低位数字的游程数值Run2的转换处理。该级别计算器LevCal执行把级别数值Lev分为表示级别数值Lev的高位数字的级别数值Lev1和表示级别数值Lev的低位数字的级别数值Lev2的转换处理。
该游程级别编码器RunLevEnc根据如图42中所示的代码表(第一代码表)或者根据算术运算,获得对应于一对级别数值Lev1和游程数值Run1(游程-级别高位数字对)的代码号Code。该重新排序单元ReOdr执行根据量化参数QP或VLC选择信号VlcSel对该游程-级别高位数字对重新排序的处理,并且输出对应于一个重新排序的游程-级别高位数字对的代码号ReOdrCode。根据对游程-级别高位数字对重新排序的处理,由游程级别编码器RunLevEnc所获得的游程-级别高位数字对和代码号Code之间的对应关系被转换为这样的对应关系,其中较小代码号对应于与在要被处理的较高频率分量相对应的游程-级别高位数字对。
该位置计算器PosClc从游程数值Run计算被编码分量的数目,并且输出被编码系数的数目Pos。该数目变换器CodeTrans根据游程-级别高位数字对和代码号ReOdrCode之间的对应关系,输出对应于来自级别数值Lev2和游程数值Run2的一个游程-级别对。在此时,该数目变换器CodeTrans采用从位置计算器PosClc输出的被编码系数的数目Pos,以获得未编码分量的数目。
在此,根据在该游程-级别对和代码号之间的对应关系不同于第一代码表的第二代码表,获得对应于从数目变换器CodeTrans输出的该游程-级别对的代码号ExtCode。该第二代码表如下形成:首先,通过重新排序单元ReOdr的重新排序处理形成具有不同于第一代码表的游程-级别对和代码号之间的对应关系的一个代码表,然后由重新排序单元ReOdr所形成的该代码表被数目变换器CodeTrans根据被编码系数的数目Pos而改变,使其不包含对应于超过未编码分量的数目的游程数值Run的在游程-级别对和代码号之间的对应关系。
该可变长度编码器VLC把一个位串(代码字)分配到代码号ExtCode,以产生一个编码流Str2。
图15输出由游程长度编码单元RLE2根据第一代码表所形成的第二代码表的例子。在此,第一代码表与图42中所示的用于常规游程长度编码单元RLE0c中的代码表相同。在第一和第二代码表中,一个位串(代码字)被一一对应地分配给该代码号,不用说较短的代码字被分配给具有较小数值的代码号Code。
图15(a)示出第二代码表的一个例子,即,适用于量化参数QP较小的情况下的代码表T2a。
该第二代码表T2a如下形成:
首先,对应于级别数值Lev的1/2的数值被指定为级别数值Lev1,并且(Lev1×2-Lev)的绝对值被指定为级别数值Lev2。
在此,当级别数值Lev是一个奇数,通过把具有比该级别数值Lev大1的绝对值的一个偶数除以2所获得的数值被用作为级别数值Lev1。更加具体来说,当级别数值Lev为正数时,对应于(Lev+1)的1/2的数值被分配到级别数值Lev1,并且当级别数值Lev为负数时,对应于(Lev-1)的1/2的一个数值被分配到级别数值Lev1。
然后,根据级别数值Lev和游程数值Run的组合从第一代码表(参见图42)获得对应于一对级别数值Lev1和游程数值Run的代码号Code。
另外,当Lev值为正数时根据下面的公式(1),以及当Lev值为负数时根据公式(2),转换对应于一对级别数值Lev1和游程数值Run的代码号Code。该第二代码表T2a示出该代码号和由上述转换所获得的游程-级别对之间的对应关系。
2×(Code-Lev2)-l...(1)
2×(Code-Lev2)...(2)
例如,当把注意力放在图42中的代码表(第一代码表)中的一个游程-级别对(级别=-2,游程=1)上时,对应于该游程-级别对的代码号Code被从由图42中的第一代码表T1转换为由图15(a)中的第二代码表T2a所表示的“12”。
也就是说,由于该游程-级别对(Lev,Run)这种情况中为(-2,1),则如下计算Lev1和Lev2。
Levl=Lev·(1/2)=-1
Lev2=|Levl·2-Levl|=|-1·2-(-2)=0
因此,(Lev1,Run)为(-1,1),并且根据第一代码表,该游程-级别对对应于代码号(Code=6)(参见图42)。
然后,通过采用公式(2)计算对应于该游程-级别对(Lev,Run)的代码号=(-2,1):
2×(Code-Lev2)=2×(6-0)=12
图15(a)中的代码表的特征在于较小的代码号(即,较短的代码字)被分配到这样的游程-级别对,该游程-级别对与图42中所示的代码表(第一代码表)相比由较小的游程数值和较大级别数值所构成,并且这适合于量化参数QP较小的情况。
图15(b)示出第二代码表的另一个例子,即,适用于量化参数QP较大的情况中的第二代码表T2b。
该第二代码表T2b如下形成。
首先,对应于游程数值Run的1/2的数值被分配为游程数值Run1,并且(Run1×2-Run)的绝对值被分配为游程数值Run2。在此,当该游程数值为奇数时,对应于(Run+1)的1/2的数值被分配到游程数值Run1。
然后,根据级别数值Lev和游程数值Run1的组合,从第一代码表(参见图42)获得,对应于一对级别数值Lev和游程数值Run1的代码号Code。
另外,当Lev值为正数时根据下面的公式(3),以及当Lev值为负数时根据公式(4)转换对应于一对级别数值Lev和游程数值Run1的代码号Code。该第二代码表T2b示出该代码号和作为转换的结果而获得的游程-级别对之间的对应关系。
2×(Code+Run2)-1...(3)
2×(Code+Run2)-2...(4)
例如,当把注意力放在图42的代码表(第一代码表)中的一个游程-级别对(级别=-1,游程=2)时,对应于该游程-级别对的代码号Code被从由图42中的第一代码表T1所表示的“12”转换为由图15(b)中的第二代码表T2b所表示“10”。
更加具体来说,由于在这种情况中的游程-级别对(Lev,Run)为(-1,2),因此如下计算Run1和Run2。
Run1=Run·(1/2)=1
Run2=|Run1·2-Run|=|1·2-2|=0
因此,(Lev,Run1)为(-1,1),并且根据第一代码表,该游程-级别对对应于一个代码号(code=6)。
然后,通过使用公式(4)计算对应于该游程-级别对(Lev,Run)=(-1,2)的一个代码号:
2×(Code+Run2)=2×(6-0)-2=10
图15(b)中所示的第二代码表T2b的特征在于较少的代码号(即,较短代码)被分配到这样的游程-级别对,其与图42中所示的代码表(第一代码表)T1相比由较大游程数值和家小级别数值所构成,并且这适用于量化参数QP较大的情况。
图16示出由游程长度编码单元RLE2根据第一代码表形成第二代码表的另一个例子。在此,该第一代码表与图42中所示的用于常规游程长度编码单元RLE0c中的代码表T1相同。
该数目变换器CodeTrans根据从位置计算器PosClc输出的被编码系数的数目Pos,计算在要被处理的目标块中的未编码分量的数目(还没有受到编码处理的系数的数目)。另外,从第一代码表形成的第二代码表不包括对应于包含超过未编码分量的数目的游程数值的游程-级别对的代码字。从而,能够以较高的压缩效率进行编码。
图16(a)示出当未编码分量的数目为3或更大时所形成的第二代码表T2c。图16(b)示出当未编码分量的数目为2时形成的第二代码表T2d。图16(c)示出当未编码分量的数目1时所形成的第二代码表T2e。
如上文所述,当在包括不会使用的游程数值的游程-级别对和代码之间的对应关系被从该代码表删除时,一个较短代码被分配到该游程-级别对。例如,根据如图16(c)中所示的第二代码表T2e,由一个游程数值[0]和一个级别数值[4]所构成的一个游程-级别对对应于一个代码号[7]。根据如图16(b)中所示的第二代码表T2b,由游程数值[0]和级别数值[4]所构成的游程-级别对对应于一个代码号[11],并且根据如图16(a)中所示的第二代码表T2c,由游程数值[0]和级别数值[4]所构成的游程-级别对对应于具有更大数值(未示出)的一个代码号。
图17示出根据第三实施例的图像编码装置103的游程长度编码单元RLE2的编码次序的一个例子。
通常,对应于低频分量的级别数值的绝对值较大,并且在该代码表中,具有较大数值的代码号Code对应于与低频分量相对应的游程-级别对。相反,对应于高频分量的级别数值的绝对值较小,并且在该代码表中,具有较小数值的代码表对应于与高频分量相对应的游程-级别对。
如参照图16所述,通过从该代码表删除对应于包括超过未编码分量的数目的游程数值的游程-级别对的代码号(代码字)而获得的压缩效率的增量随着未编码分量的数目变小而增大,以及随着级别数值的绝对值的变大而增大,因为与没有删除代码号的情况相比,被分配的代码号的数值减小的比率变大。
因此,当在由游程长度编码单元RLE2对被量化分量编码中具有级别数值的较大绝对值并且对应于低频分量的级别数值的被量化分量被较后地编码,类似于根据第三实施例的图像编码装置103,该压缩效率被进一步增加。
更加具体来说,该重新排序单元ReOdr对被量化分量重新排序,以使其从对应于高频分量的一个被量化分量(最后的非零分量)的游程-级别对到对应于低频分量的被量化分量的游程-级别对顺序排列,如图17中的箭头X1至X7中所示,以把表示在一个目标块中的最后被编码分量的一个EOB添加在对应于具有最低频率分量的一个被量化分量的游程-级别对的代码字之后,从而增加压缩效率。
另外,在第三实施例中,该量化参数QP和VLC选择信号VlcSel被提供到可变长度编码器LVLC、游程转换器RunConv、重新排序单元ReOdr以及数目变换器CodeTrans。因此,可以根据量化参数QP改变一个代码表,或者可以根据图像的内容(该图像的运动值、运动的复杂度或者图案的细节)从外部选择一个适当的代码表。
例如,当用于该编码处理中的代码表被根据来自该图像编码装置外部的VLC选择信号VlcSel而改变时,该图像解码装置可以创建由仅仅具有一个代码表的解码单元来解码的一个数据流。
在该第三实施例中,对作为要被处理的目标数据的图像信号的被量化系数编码的该图像编码装置103包括游程长度编码单元RLE2,其使用一个代码表把可变长度代码分配到该被量化系数,并且该游程长度编码单元RLE2根据该第一代码表形成对要被处理的编码数据优化的第二代码表,并且根据量化参数QP或VLC选择信号VlcSel选择第一和第二代码表之一作为用于可变长度代码的分配的一个代码表。因此,可以有效地除去包含在目标数据中的冗余信息,从而进一步增加用于图像信号等等的压缩比。
在该第三实施例中,游程长度编码单元RLE2包括用于增加压缩比的各种设备,即,游程转换器RunConv、级别转换器LevConv、重新排序单元ReOdr和数目变换器CodeTrans,如图14中所示。但是,该游程长度编码单元RLE2可以仅仅包含用于增加该压缩比的一些设备。在这种情况中,可以容易地安装该游程长度编码单元RLE2。
另外,在第三实施例中,通过在构成第一代码表的部分中改变该游程-级别对和代码号之间的对应关系而获得第二代码表:可以通过算术运算(定期地构建VLC)而定期产生的部分,以及不能够定期产生的部分(表查找VLC)。但是,当该第一代码表具有可以由算术运算定期产生(定期地构建VLC)的部分以及不能够定期产生的部分(表查找VLC)时,该第二代码表可以通过仅仅改变作为可以定期地通过容易执行的运算而产生的第一代码表的部分而形成。在这种情况中,可以更加容易地执行游程长度编码单元RLE2的安装。
根据该第三实施例,在通过使用游程-级别对执行被量化分量的可变长度编码的游程长度编码单元中,该被量化分量被从高频分量到低频分量连续地受到可变长度编码。但是,不用说,在使得对应于在该目标块中的被量化分量的游程数值和级别数值分别受到类似于第一实施例中的可变长度编码处理的游程长度编码单元中,对应于在该目标块中的被量化分量的游程数值和级别数值可以从高频分量到低频分量连续地受到可变长度编码处理。
[实施例4]
图18为用于说明根据本发明第四实施例的图像解码装置的方框图。
根据第四实施例的图像解码装置104包括游程长度解码单元RLD2,其根据量化参数QP或可变长度解码选择信号(VLD选择信号)VldSel使得编码流Str2受到可变长度解码处理,并且输出解码的量化分量DQS,其取代如图40中所示的常规图像解码装置202c中的使得编码流Str0c受到可变长度解码处理并且输出解码的量化分量DQS的游程长度解码单元RLD0c。根据第四实施例的图像解码装置104的其他部分与常规图像解码装置202c中的部分相同。
更加具体来说,该游程长度解码单元RLD2类似于常规游程长度解码单元RLD0c,具有第一代码表T1(参见图42),其根据该游程数值和级别数值的组合表示一对游程数值和级别数值(在下文中称为游程-级别对)和相应代码之间的对应关系。然后,该游程长度解码单元RLD2根据该第一代码表定期地改变在在游程-级别对和该第一代码表中的代码之间的对应关系,以形成具有不同于第一代码表的不同对应关系的第二代码表,并且根据从量化单元Q输出的量化参数QP或者来自外部的VLD选择信号VldSel选择第一和第二代码表之一,并且根据所选择的代码表,把构成该编码流Str2的代码表(位串)转换为与在要被处理的目标数据中的系数相关的游程数值和级别数值对。
如上文所述,该量化参数QP是表示量化步骤的数值的一个参数,并且该量化步骤近似于与量化参数QP成比例。更加具体来说,当量化参数QP较大时,该被量化分量具有较小的绝对值,然后被量化分量的零游程(其数值为零的连续分量的长度)变得更长,并且因此级别数值具有更小的绝对值。在这种情况中,相应地,选择这样一个代码表,其中较小代码被分配到由较大游程数值和较小级别数值的游程-级别对,从而进一步提高编码效率。相反,当量化参数QP较小时,该被量化分量具有绝对值,因此选择这样一个代码表,其中较小代码被分配到由较小游程数值和较大级别数值所构成的游程-级别对,从而增加编码效率。
图19未示出游程长度解码单元RLD2的具体结构的方框图。
该游程长度解码单元RLD2与常规游程长度解码单元RLD0c同样具有可变长度解码器VLD,并且该解码器VLD解码从根据第三实施例的图像编码装置103输出的编码流Str2,并且输出一个代码号ExtCode。
在该第四实施例中,该游程长度解码单元RLD2具有:一个数目反变换器ICodeTrans,用于执行数目反变换处理,以根据量化参数QP或VLD选择信号VldSel,把代码号ExtCode分为对应于由级别数值Lev1和游程数值Run1、级别数值Lev2以及游程数值Run2所构成的游程-级别高位数字对;以及反重新排序单元IReOdr,用于把对应于要被处理的一个目标块的多个代码号PrmCode按照与游程-级别对的增加频率的次序重新排序,并且输出对应于该目标块和具有改变的次序的多个代码号Code。
该游程长度解码单元RLD2进一步包括:游程级别检测器RunLevDec,用于根据代码表或算术运算检测对应于代码号Code的一个游程-级别对,并且输出由该游程-级别对所构成的级别数值Lev1和游程数值Run1;游程反转换器IRunConv,用于从表示游程数值Run的高位数字的游程数值Run1和表示游程数值Run的低位数字的游程数值Run2重构一个游程数值Run;以及级别反转换器ILevConv,用于从表示级别数值Lev的高位数字和级别数值Lev1和表示级别数值Lev的低位数字的级别数值Lev2重构一个级别数值Lev。
该游程长度解码单元RLD2与游程长度解码单元RLD0c相同进一步包括反曲折扫描仪IScan。该反曲折扫描仪IScan把由级别数值Lev和游程数值Run所表示的一维阵列的被量化分量变换为二维阵列的解码的量化分量DQS,并且输出。
在此,在游程长度解码单元RLD2中的可变长度解码器VLD、游程级别检测器RunLevDec和反曲折扫描仪IScan与在图41中所示的游程长度解码单元RLD0c相同。
下面将描述其功能和效果。
在游程长度解码单元RLD2中,该可变长度解码器VLD执行与可变长度编码器VLC相反的操作。也就是说,该可变长度解码器VLD解码编码流Str2,并且输出对应于构成该流的代码字(位串)的一个代码号ExtCode。该数目反变换器ICodeTrans根据量化参数QP或VLD选择信号VldSel执行与数目变换器CodeTrans相反的操作,以把代码号ExtCode分为与由级别数值Lev1和游程数值Run1、级别数值Lev2和游程数值Run2所构成的游程-级别高位数字对的一个代码号PrmCode。
该反重新排序单元IReOdr根据量化参数QP或VLD选择信号VldSel执行与重新排序单元ReOdr相反的操作。从而,按照游程-级别对的增加频率的次序对与要被处理的目标块相对应的多个代码号PrmCode执行重新排序,并且输出具有改变的次序并且对应于该块的多个代码号Code。该游程级别检测器RunLevDec根据一个代码表或算术运算检测对应于代码号Code的游程-级别对,并且输出构成所检测的游程-级别对的级别数值Lev1和游程数值Run1。
该游程反转换器IRunConv根据量化参数QP或VLD选择信号VldSel执行与游程转换器RunConv相反的操作,以从表示游程数值Run的高位数字的游程数值Run1和表示游程数值Run的多个位置的游程数值Run2重构该游程数值Run。另外,该级别反转换器ILevConv根据量化参数QP或VLD选择信号VldSel执行与级别转换器LevConv相反的操作,以从表示级别数值Lev的高位数字的级别数值Lev1和表示级别数值Lev的低位数字的级别数值Lev2重构该级别数值Lev。
在此,在数目反变换器ICodeTrans、反重新排序单元IReOdr、游程反转换器IRunConv和级别反转换器ILevConv中,根据量化参数QP和VLD选择信号VldSel执行第一或第二代码表的选择,并且根据所选择的代码表执行该操作。
反曲折扫描仪IScan执行与曲折扫描仪Scan相反的操作,以根据级别数值Lev和游程数值Run把由级别数值Lev和游程数值Run所表示的一维阵列的被量化分量变换为二维阵列的解码的量化分量DQS。
另外,当VLD选择信号VldSel被从外部输入时,该游程长度解码单元RLD2选择对应于由VLD选择信号VldSel所表示的图像内容(图像运动的数值、运动的复杂度、图案的细节)的适当代码表。
在该第四实施例中,量化参数QP和VLD选择信号VldSel被分别提供到数目反变换器ICodeTrans、反重新排序单元IReOdr、游程反转换器IRunConv、以及级别反转换器ILevConv。因此,一个代码表可以根据量化参数QP而改变,或者根据图像的特性,即,图像运动的数值、运动的复杂度、图案的细节等等,从该图像解码装置的外部选择一个适当的代码表。
如上文所述,在该第四实施例中,对通过一个图像信号的被量化系数的可变长度编码而获得的被编码数据进行解码的图像解码装置104包括使用一个代码表用于把一个可变长度代码转换为被量化分量的游程长度解码单元RLD2。另外,该游程长度解码单元RLD2根据该第一代码表形成对要被处理的目标数据优化的第二代码表,并且根据量化参数QP或VLD选择信号VldSel,选择第一和第二代码表之一作为在把可变长度代码转换为被量化系数中所采用的代码表。因此,能够满意地执行对应于可以有效地除去包含在要被处理的目标数据中的冗余信息的可变长度编码处理的解码处理。
在该第四实施例中,如图19中所示,游程长度解码单元RLD2具有用于增加压缩比的各种设备,即,数目反变换器ICodeTrans、反重新排序单元IReOdr、游程反转换器IRunConv以及级别反转换器ILevConv,并且该游程长度解码单元RLD2可以仅仅具有这样用于增加压缩比的设备中的一些设备。在这种情况中,游程长度解码单元RLD2可以被更加容易地安装。
另外,在第四实施例中,通过在构成第一代码表的部分中改变该游程-级别对和代码号之间的对应关系而形成第二代码表:可以通过算术运算(定期地构建VLC)而定期产生的部分,以及不能够定期产生的部分(表查找VLC)。但是,当该第一代码表具有可以由算术运算定期产生(定期地构建VLC)的部分以及不能够定期产生的部分(表查找VLC)时,该第二代码表可以通过仅仅改变作为可以定期地通过容易执行的运算而产生的第一代码表的部分而形成。在这种情况中,可以更加容易地执行游程长度解码单元RLD2的安装。
根据该第四实施例,在通过使用游程-级别对执行对应于被量化分量的编码数据的可变长度解码的游程长度解码单元中,从高频分量到低频分量连续地执行对应于被量化分量的编码数据的可变长度解码。但是,在使得对应于一个目标块中的被量化分量的游程数值和级别数值的被编码数据分别受到与第二实施例中相同的可变长度解码的可变长度解码单元中,对应于该目标块的被量化分量的游程数值和级别数值的被编码数据从高频分量到低频分量连续地受到可变长度解码。
[实施例5]
图20为用于说明根据本发明第五实施例的图像编码装置的方框图。
该图像编码装置105包括取代在如图13中所示的根据第三实施例的图像编码装置103中的游程长度编码单元RLE2的游程长度编码单元RLE3,其编码一个游程-级别对以及非零分量的数目,类似于游程长度编码单元RLE2。根据第五实施例的图像编码装置105的其他部分与根据第三实施例的图像编码装置103中的部分相同。
图21示出在图像编码装置105中的游程长度编码单元RLE3的具体结构。
取代在如图14中所示的根据第三实施例的游程长度编码单元RLE2中的位置计算器PosClc,根据第五实施例的游程长度编码单元RLE3具有非零系数计算器NZcount,用于根据所输入的被量化分量计数非零分量的数目NZnum;以及位置计算器PosClc2,用于根据非零分量的计数数目NZnum和由游程计算器RunCal所计算的游程数值Run计算被编码系数的数目Pos2。
根据第五实施例的游程长度编码单元RLE3对来自数目变换器CodeTrans的输出(代码号)ExtCode进行编码,并且编码非零分量的数目NZnum,这与根据第三实施例的游程长度编码单元RLE2的可变长度编码器VLC不同。
游程长度编码单元RLE3的其他部分与根据第三实施例的游程长度编码单元RLE2相同。
下面将描述其功能和效果。
在根据第五实施例的图像编码装置105中的分块单元Blk、频率变换单元Trans以及量化单元Q的操作与根据第三实施例的图像编码装置103的操作相同。另外,除了根据第五实施例的游程长度编码单元RLE3中的非零系数计算器NZcount、位置计算器PosClc2、数目变换器CodeTrans以及可变长度编码器VLC2之外的其他部分的操作,即,曲折扫描仪Scan、游程计算器RunCal、级别计算器LevCal、游程转换器RunConv、级别转换器LevConv、游程级别编码器RunLevEnc以及重新排序单元ReOdr的操作与根据第三实施例的游程长度编码单元RLE2的操作相同。因此,在此将主要描述非零系数计算器NZcount、位置计算器PosClc2、数目变换器CodeTrans和可变长度编码器VLC2的操作。
当从量化单元Q输出的量化分量QS被输入到游程长度编码单元RLE3时,在游程长度编码单元RLE3中的非零系数计算器NZcount根据量化分量QS计数对应于各个块的多个被量化分量,并且把所获得的非零分量的数目NZnum输出到位置计算器PosClc2和可变长度编码器VLC2。
该位置计算器PosClc2根据来自非零系数计算器NZcount的非零分量的数目NZnum和来自游程计算器RunCal的游程数值Run,计算在一个目标块中的被编码的零分量的数目和非零分量的数目之和,并且输出所获得的数值Pos2。
该数目变换器CodeTrans根据游程-级别高位数字对和代码号ReOdrCode之间的对应关系,输出对应于来自级别数值Lev2和游程数值Run2的代码号ExtCode。在此时,该数目变换器CodeTrans采用从位置计算器PosClc2输出的所计算数值Pos2,以获得在该目标块中的未编码分量的数目。
在此,根据具有不同于第一代码表的在游程-级别对和代码号之间的对应关系的第二代码表获得从数目变换器CodeTrans输出的对应于一个游程-级别对的代码号ExtCode。该第二代码表如下形成:首先通过在重新排序单元ReOdr中的重新排序处理形成具有与第一代码表不同在游程-级别对和代码号之间的对应关系的一个代码表,然后通过根据所计算数值Pos2由数目变换器CodeTrans改变由重新排序单元ReOdr所形成的代码表,使得具有大于在该代码表中的最大游程数值Run的游程数值的游程-级别对对应于不被分配代码的代码号ExtCode。
该可变长度编码器VLC2对非零分量的数目NZnum编码,并且执行对代码号ExtCode的编码,以把一个位串(代码字)分配到代码号ExtCode,以产生一个编码流Str3。
在下文中,将具体描述可变长度编码器VLC2的操作。
与根据第三实施例的可变长度编码器VLC不同,根据第五实施例的可变长度编码器VLC2不但编码对应于一个目标块的游程-级别对的代码号ExtCode,而且在编码该块的代码号ExtCode之前还编码在该目标块中的非零分量的数目NZnum。
如上文所述,当在编码一个块的代码号ExtCode之前编码非零分量的数目NZnum时,首先可以在解码时对该目标块的非零分量的数目NZnum进行解码,并且当已经重构对应于非零分量的数目NZnum的游程-级别对时,检查在该目标块中的最后游程-级别对的重构是否已经完成。从而,该可变长度编码器VLC2不需要由根据第三实施例的可变长度编码器VLC所需的在该目标块结束时编码的一个特定数值EOB(在最后的非零分量之后发送的一个数值)。
接着,将具体描述位置计算器PosClc2和数目变换器CodeTrans的操作。
假设一个目标块包括NBlock量化参数QP(包括零分量和非零分量),根据在该目标块中的非零分量的数目NZnum,最大游程长度(连续零系数的最大数目)为(NBlock-NZnum)。另外,当第一游程-级别对的编码已经完成时的最大游程数值(连续零系数的最大数目)MaxRun(1)由下述公式(5)使用该目标块的第一游程-级别对的游程数值FRun来表示。
MaxRun(1)=NBlock-NZnum-FRun...(5)
通常,在一个块中的第i个游程-级别对的编码已经完成时的最大游程数值MaxRun(i)由下述公式(6)来表示。
MaxRun(i)=NBlock-NZnum-{第一~第i游程数值之和}...(6)
因此,位置计算器PosClc2输出由下列公式(7)所表示的所计算数值Pos2,从而向数目变换器CodeTrans表明该最大游程数值MaxRun(i)是由公式(8)所表示的一个数值。
Pos2=NZnum+{第一~第i游程数值之和}...(7)
MaxRun(i)=NBlock-Pos2...(8)
该数目变换器CodeTrans形成第二代码表,其中不被分配代码的代码号ExtCode对应于具有大于最大游程数值MaxRun的游程数值。从而,消除由于把代码分配到不会出现的游程-级别对的编码处理中的冗余,从而增加压缩比。
当由通过算术运算所产生的第一部分(定期地构建VLC)和不能够由算术运算所产生的第二部分(表查找VLC)所构成的一个可变长度代码表被用作为对被量化分量执行可变长度编码处理的第一和第二代码表时,可以通过根据最大游程数值改变在第一代码表中的第一和第二部分而形成该第二代码表,或者通过仅仅改变可以根据最大游程数值容易执行的算术运算所产生的第一代码表中的第一部分而形成第二代码表。
另外,当根据在已经完成第i个游程-级别对的编码时的最大游程数值MaxRun(i)改变可变长度代码表时,不是把该代码表改变为没有把代码被分配到具有大于最大游程数值MaxRun(i)的游程数值Run的游程-级别对的代码表,可以把一个可变长度代码表直接改变为不把代码分配给具有大于最大游程数值MaxRun(i)的游程数值Run的游程-级别对的代码表。
图24为示出可变长度代码表的例子。与代码表Tb(图24(b))相比,在一个代码表Ta中(图24(a)),较短代码被分配到较小的游程数值。与代码表Tc(图24(c))相比,在该代码表Tb(图24(b))中,较短的代码被分配到较小的游程数值。
另外,与代码表Tb(图24(b))相比,在该代码表Tc(图24(c))中,较短代码被分配到具有较小绝对值的级别数值。与代码表Ta(图24(a))相比,在该代码表Tb中,较短代码被分配到具有较小绝对值的级别数值。
因此,当最大游程数值MaxRun较小时,最好选择在图24(a)中的代码表,当最大游程数值MaxRun较大时,选择在图24(c)中的代码表Tc,以及当最大游程数值MaxRun为一个中间值时,选择在图24(b)中的代码表Tb。
根据第五实施例,编码通过量化图像信号的频率分量而获得的被量化系数的图像编码装置105具有游程长度编码单元RLE3,其使用一个代码表把可变长度代码分配给该被量化分量。然后,该游程长度编码单元RLE3根据在要被编码的目标块中的被处理系数(被编码系数)的数目和在该目标块中的未编码非零系数的数目之和,换句话说是在该目标块中的非零系数的数目和在该目标块中的已处理游程数值的数目之和,选择删除不会出现的游程-级别对的一个代码表,从而增加可变长度编码效率。
根据该第五实施例,在通过使用游程-级别对执行对应于每个块的被量化分量的可变长度编码的游程长度编码单元中,在一个目标块中的非零分量的数目NZnum被编码。但是,可以在分别执行对应于每个块的被量化分量的游程数值和级别数值的可变长度编码的游程长度编码单元中,执行对一个目标块的非零分量的非零分量的数目NZnum的编码,这与第一实施例相同。这种情况中,在该目标块中的最大游程数值可以被设置在通过从该目标块中的所有分量的数目减去非零分量的数目NZnum而获得的数值。
[实施例6]
图22为用于说明根据本发明第六实施例的图像解码装置的方框图。
取代根据如图18中所示的第四实施例的图像解码装置104中的游程长度解码单元RLD2,根据第六实施例的图像解码装置106具有游程长度解码单元RLD3,其与游程长度解码单元RLD2相同执行对被编码数据的解码处理,以重构在每个块中的游程-级别对的数目和非零分量的数目。根据第六实施例的图像解码装置106的其他部分与根据第四实施例的图像解码装置104的部分相同。
图23示出在图像解码装置106中的游程长度解码单元RLD3的具体结构。
取代在根据如图19中所示的游程长度解码单元RLD2中的位置计算器PosClc,该第六实施例的游程长度解码单元RLD3包括一个位置计算器PosClc2,用于计算在要被解码的一个目标块中的解码的游程数值的数目和在该目标块中的非零分量的数目NZnum。
另外,根据第六实施例的游程长度解码单元RLD3的可变长度解码器VLD2不同于根据第四实施例的游程长度解码单元RLD2中的可变长度解码器VLD之处在于执行用于重构代码号ExtCode的解码处理和用于重构非零分量的数目NZnum的解码处理。
下面将描述其功能和效果。
在根据第六实施例的图像解码装置106中的反量化单元IQ、反频率变换单元ITrans和解块单元DeBlk的操作与第四实施例的图像解码装置104相同。另外,除了可变长度解码器VLD2、位置计算器PosClc2和数目反变换器ICodeTrans,根据第六实施例的游程长度解码单元RLD3的其他部分的操作,即,反重新排序单元IReOdr、游程级别检测器RunLevDec、级别反转换器ILevConv、游程反转换器IRunConv和反曲折扫描仪IScan的操作与根据第四实施例的游程长度解码单元RLD2相同。因此,在下文中主要描述可变长度解码器VLD2、位置计算器PosClc2和数目反变换器ICodeTrans的操作。
该可变长度解码器VLD2解码编码流Str3,并且输出对应于由被编码流所构成的一个代码字(位串)的一个代码号ExtCode。该数目反变换器ICodeTrans根据量化参数QP或VLD选择信号VldSel、以及被解码系数的数目和未解码的非零系数的数目之和Pos2,执行与数目变换器CodeTrans相反的操作,以把代码号ExtCode分为对应于包括级别数值Lev1和游程数值Run1的游程-级别高位数字对的代码号PrmCode、级别数值Lev2和游程数值Run2。
该反重新排序单元IReOdr、游程级别检测器RunLevDec、游程反转换器IRunConv、级别反转换器ILevConv以及反曲折扫描仪IScan执行与第四实施例相同的操作。
在此,数目反变换器ICodeTrans、反重新排序单元IReOdr、游程反转换器IRunConv以及级别反转换器ILevConv根据量化参数QP或VLD选择信号VldSel和系数和Pos2中的至少一个选择第一和第二代码表之一,并且根据所选择的代码表执行操作。
在下文中,将具体描述可变长度解码器VLD2的操作。
根据第六实施例的可变长度解码器VLD2不同于根据第四实施例的可变长度解码器VLD之处在于它不但解码对应于一个游程-级别对的代码号ExtCode,而且还解码在该目标块中的非零分量的被编码数目NZnum。当在第NZnum个游程-级别对已经被解码的情况下通过解码获得非零分量的数目NZnum时,该第NZnum个游程-级别对被判断为最后的游程-级别对。从而,可变长度解码器VLD2不需要一个数值EOB,该数值是可变长度解码器VLD所需的,并且在该目标块结束时被编码。
例如,假设在该目标块中存在NBlock量化分量QS,包括零分量和非零分量,则根据在该目标块中的非零分量的数目NZnum,最大游程数值(连续零系数的最大数目)为(NBlock-NZnum)。另外,当用于重构第一游程-级别对的解码已经完成时的最大游程数值(连续零系数的最大数目)MaxRun(1)为如在第五实施例中所述的(NBlock-NZnum-FRun)。
通常,在已经执行用于重构在一个块中的第i个游程-级别对的解码时,最大游程数值MaxRun(i)如下获得:
MaxRun(i)=Nblock-Nznum-{第1~第i个游程数值之和}
因此,位置计算器PosClc2输出系数之和Pos2[=NZnum+{第1~第i游程数值之和}],从而向数目变换器CodeTrans表明在已经执行用于重构第i个游程-级别对的解码时已经执行的最大游程数值为(NBlock-Pos2)。
该数目反变换器ICodeTrans采用这样一个代码表,其中没有代码被分配到对应于由大于最大游程数值Run的游程数值所构成的游程-级别对的代码号,以获得对应于一个代码的代码号ExtCode,从而根据避免把代码分配到不会出现的游程-级别对的代码分配而解码分配到一个代码号的代码。
在此,当由可以通过算术运算而产生的第一部分(定期地构建VLC)和不能够定期产生的第二部分(表查找VLC)所构成的一个可变长度代码表被用作为在可变长度解码处理中的第一和第二代码表时,该第二代码表可以通过根据最大游程数值改变在第一代码表中的第一和第二部分而形成,并且第二代码表可以通过根据最大游程数值仅仅改变可以由容易执行的算术运算所产生的第一代码表的第一部分而形成。
另外,当在已经完成用于重构第i个游程-级别对的解码的情况下根据最大游程数值MaxRun改变可变长度代码表时,该可变长度代码表可以被直接改变为图24(a)中的代码表Ta、图24(b)中的代码表Tb或者图24(c)中的代码表Tc,取代把该代码表改变为不把代码分配到包含大于最大游程数值MaxRun的游程数值的游程-级别对的代码表的情况。
例如,当最大游程数值MaxRun较小时最好选择图24(a)中的代码表Ta,当最大游程数值MaxRun较大时最好选择图24(c)中的代码表Tc,以及当最大游程数值MaxRun为中间数值时最好选择图24(b)中的代码表Tb。
如上文所述,根据第六实施例,通过对被编码数据的解码处理重构量化图像信号的频率分量所获得的被量化系数的图像解码装置106被提供游程长度解码单元RLD3,用于通过采用一个代码表获得对应于一个可变长度的被量化系数。然后,该游程长度解码单元RLD3根据在一个目标块中的被处理的系数(被解码系数)数目和在该目标块中的未解码的非零系数的数目之和,选择不包含不会出现的游程-级别对的一个代码表。因此,可以满意地执行对应于能够根据有效地除去包含在要被处理的被量化系数中的冗余信息的可变长度编码处理的解码处理。
根据该第六实施例,在通过使用游程-级别对执行对每个块的被量化分量的可变长度解码的可变长度解码单元中,在一个目标块中的非零分量的数目NZnum被解码。但是,例如,在使得对应于每个块的被量化分量的游程数值和级别数值分别受到与第二实施例相同的可变长度解码处理的可变长度解码单元中,该目标块的非零分量的数目NZnum被解码。在这种情况中,在NZnum级别数值已经被解码时,可以判断第NZnum个级别数值是在该目标块中的最后级别数值。
在上述任何实施例中,该代码表被根据量化参数QP而改变,并且该代码表可以根据另一个参数而改变。例如,可以对每个块新推导和明确地切换另一个参数。
在上述实施例中,作为用于使得例如被量化分量这样的系数受到可变长度编码(解码)处理的方法,示出一种方法,其中采用一个VLC表,并且根据至少关于已经受到编码(解码)处理的已处理系数,或者与该系数的产生相关的参数改变该VLC表。但是,根据本发明用于例如被量化分量这样的可变长度编码(解码)系数的方法不限于使用VLC表的方法。例如,用于对在第一、第三和第五实施例中所述的量化分量进行可变长度编码的方法可以是一种不采用VLC表的可变长度编码方法,并且根据关于已处理系数或者与该系数的产生相关的参数的信息中的至少一个信息改变对应于VLC表的一个代码表。另外,根据任何第二、第四和第六实施例对与被量化分量相应的被编码数据的可变长度解码方法可以是一种不采用VLC表的可变长度解码方法,并且根据关于被处理的系数或者与系数的产生相关的参数的信息中的至少一个信息,改变对应于VLC表的代码表。
根据上述实施例执行可变长度编码处理的图像编码装置或执行可变长度解码处理的图像解码装置由硬件实现,而这些装置可以由软件实现。在这种情况中,当执行根据任何上述实施例的可变长度编码或解码处理的程序被记录在例如软盘这样的数据存储介质中时,可以容易地在一个独立计算机***中实现根据任何上述实施例的图像编码装置或图像解码装置。
图25为用于说明执行根据第一、第三或第五实施例的可变长度编码处理,或者根据第二、第四或第六实施例的可变长度解码处理的计算机***的示意图。
图25(a)示出作为包含用于该计算机***中的程序的一种介质的软盘FD的正视图、截面视图、以及软盘体D。图25(b)示出软盘体D的物理格式的例子。
该软盘FD包括软盘体D和包含该软盘体D的壳体FC。在软盘体D的表面上,从该盘的外周到内周同心地形成多个记录道Tr。每个记录道在角度方向上被分为16扇区Se。因此,在包含上述程序、用于执行可变长度编码处理或可变长度解码处理的程序的数据的软盘FD被记录在软盘体D上的被分配存储区(扇区)中。
图25(c)示出用于在软盘FD上记录或再现的结构。当程序记录在软盘FD上时,程序的数据被从计算机***Cs通过软盘驱动器FDD写入到软盘FD中。当通过记录在软盘FD中的程序在计算机***Cs中构造上述图像编码装置或图像解码装置时,通过软盘驱动器FDD从软盘FD中读取该程序,然后装载到计算机***Cs。
尽管在上述描述中,软盘被用作为包含用于执行可变长度编码处理或可变长度解码处理的存储介质,但是光盘也可以用作为该存储介质。并且在这种情况中,可以通过软件,按照类似于使用软盘的情况执行可变长度编码处理或可变长度解码处理。该存储介质不限于这些盘,并且任何介质可以被采用,只要它们可以包含该程序即可,例如,CD-ROM、存储卡或ROM。并且当采用这种数据存储介质时,可以由计算机***按照与使用软盘的情况相同的方式执行可变长度编码处理或可变长度解码处理。
根据任何上述实施例的图像编码方法或图像解码方法以及使用该方法的***将在下文中描述。
图26为示出执行内容发布服务的一个内容提供***1100的整体结构的方框图。
一个通信服务提供区域被分为所需尺寸的区域(小区),并且分别作为固定无线电台的基站1107至1110被建立在各个小区中,
在该内容提供***1100中,例如计算机1111、PDA(个人数字助理)1112、相机1113、便携式电话1114和具有摄像头的便携式电话1200例如被通过互联网服务提供商1102、电话网络1104和基站1107至1110连接到互联网1101。
但是,内容提供***1100不限于包含所有图26中所示的多个设备的***,而且可以是包含图26中所示的多个设备中的一些设备的***。另外,各个设备可以直接连接到电话网络1104,而不通过作为固定无线电台的基站1107至1110。
该相机1113是可以拍摄一个物体的运动图像的设备,例如数字摄像机。该便携式电话可以是根据任何PDC(个人数字通信)***、CDMA(码分多址)***、W-CDMA(宽带-码分多址)***以及GSM(全球数字移动电话)***或PHS(个人手持电话***)的便携式电话机。
一个流服务器1103通过基站1109和电话网络1104连接到相机1113。在该***中,可以执行根据由使用相机1113的用户发送的被编码数据的实时发布。用于所拍摄图像的数据的编码处理可以由相机1113或发送数据的服务器所执行。通过相机1116拍摄一个物体的运动图像而获得的运动图像数据可以被通过计算机1111发送到流服务器1103。该相机1116是可以拍摄一个物体的静止图像或运动图像的设备,例如数字相机。在这种情况中,可以通过相机1116或计算机1111执行运动图像数据的编码。另外,通过包含在计算机1111或相机1116中的LSI1117执行该编码处理。
图像编码或解码软件可以存储在作为包含可以由计算机1111等等所读取的一个存储介质中(CD-ROM、软盘、硬盘等等)。该运动图像数据可以通过具有摄像头的便携式电话1200而发送。该运动图像数据是已经被包含在便携式电话1200中的LSI所编码的数据。
在该内容提供***1100中,对应于由用户通过相机1113或相机1116所拍摄的图像的内容(例如,音乐会的实况录像)被按照与任何上述实施例相同的方式在该相机中编码,并且从该相机发送到流服务器1103。该内容数据受到从流服务器1103到请求客户机的流发布。
该客户机可以是任何可以解码该被编码数据的计算机1111、PDA1112、相机1113、便携式电话1114等等。
在该内容提供***1100中,该编码数据被在客户机侧接收和再现。当该数据被在客户机侧上实时地接收、解码和再现时,可以实现私人广播。
可以使用根据上述实施例的图像编码装置或图像解码装置执行在构成该***的各个设备中的编码或解码。
下面将描述作为图像编码或解码装置的一个例子的便携式电话。
图27为示出采用根据任何上述实施例的图像编码方法和图像解码方法的便携式电话1200的示意图。
该便携式电话1200包括用于对基站1110发送/接收无线电波的天线1201、例如CCD相机这样可以拍摄物体的运动或静止图像的相机单元1203、以及例如液晶显示器这样用于显示由相机单元1203所拍摄的数据或者通过天线1201接收的视频图像的显示单元1202。
该便携式电话1200进一步包括包含多个控制按键的主体1204、例如扩音器这样用于输出语音的语音输出单元1208、例如麦克风这样用于输入语音的语音输入单元1205、用于保存例如拍摄运动图像或静止图像的数据、或者所接收电子邮件的数据、运动图像数据或静止图像数据这样的编码数据或解码数据的存储介质1207、以及使得存储介质1207附着到便携式电话1200上的插槽单元1206。
该存储介质1207具有作为例如EEPROM(电可擦除可编程只读存储器)类型的包含在塑料壳体中的电可编程可擦除非易失性存储器的快速存储器元件,例如SD卡。
下面将参照入28更加具体地描述该便携式电话1200。
该便携式电话1200具有执行用于包括显示单元1202和控制按键1204的主体的各个单元一般控制的主控制单元1241。
该便携式电话1200进一步包括电源电路1240、操作输入控制单元1234、图像编码单元1242、相机接口单元1233、LCD(液晶显示器)控制单元1232、图像解码单元1239、多路复用/分解单元1238、记录/再现单元1237、调制/解调单元1236以及音频处理单元1235。该便携式电话1200的各个单元通过同步总线1250相互连接。
当在用户的控制下启动呼叫结束/电源按键时,该电源电路1240把电能从一个电池组提供到各个单元,从而把具有摄像头的便携式电话1200激活为工作状态。
在便携式电话1200中,各个单元在由CPU、ROM、RAM等等所构成的主控制单元1241的控制下操作。更加具体来说,在便携式电话1200中,由在语音通信模式中输入到语音输入单元1205的语音所获得音频信号被音频处理单元1235转换为数字音频数据。该数字音频数据受到调制/解调单元1236的扩频处理,进一步受到发送/接收电路1231的数模转换处理和频率转换处理,并且通过天线1201发送。
在该便携式电话1200中,在语音通信模式中通过天线1201接收的信号被放大,然后受到频率变换处理和模数转换处理。所接收的信号被在调制/解调单元1236中进一步受到反扩频处理,由音频处理单元1235转换为模拟音频信号,并且该模拟音频信号被通过语音输出单元1208输出。
当便携式电话1200在数据通信模式中发送电子邮件时,通过操作在主体上的控制按键1204而输入的电子邮件的文字数据被通过操作输入控制单元1234发送到主控制单元1241。该主控制单元1241控制各个单元,使得该文字数据在调制/解调单元1236中受到扩频处理,然后在发送/接收电路1231中受到数模转换处理和频率变换处理,然后通过天线1201发送到基站1110。
当便携式电话1200在数据通信模式中发送图像数据时,由相机单元1203所拍摄的图像数据被通过相机接口单元1233提供到图像编码单元1242。当便携式电话1200不发送图像数据时,由相机单元1203所拍摄的图像数据可以通过相机接口单元1233和LCD控制单元1232直接显示在显示单元1202上。
该图像编码单元1242包括根据上述任何实施例的图像编码装置。该图像编码单元1242通过根据任何上述实施例的图像编码方法对来自相机单元1203的图像数据进行压缩编码,以把其转换为编码的图像数据,并且把所获得的编码图像数据输出到多路复用/分解单元1238。与此同时,在由相机单元1203拍摄图像时,便携式电话1200把输入到语音输入单元1205的语音作为数字音频数据通过音频处理单元1235发送到多路复用/分解单元1238。
该多路复用/分解单元1238通过预定方法对来自图像编码单元1242的编码图像数据和来自音频处理单元1235的音频数据进行多路复用。所获得的复用数据在调制/解调单元1236中受到扩频处理,然后进一步在发送/接收电路1231中的受到数模转换处理和频率变换处理,并且获得通过天线1201发送的数据。
当便携式电话1200接收在数据通信模式中链接到一个主页等等的运动图像文件的数据时,通过天线1201从基站1110接收的信号被受到调制/解调单元1236的反扩频处理,并且所获得的复用数据被发送到多路复用/分解单元1238。
当通过天线1201接收的复用数据被解码时,该多路复用/分解单元1238对该多路复用数据进行多路分解,以把该数据分为对应于图像数据的编码位流和对应于音频数据的编码位流,并且该编码图像数据被提供到图像解码单元1239,以及该音频数据被通过同步总线1250提供到音频处理单元1235。
该图像解码单元1239包括根据任何上述实施例的图像解码装置。该图像解码单元1239通过对应于根据任何上述实施例的编码方法的解码方法对该图像数据的编码位流进行解码,以再现运动图像数据,并且把所再现的数据通过LCD控制单元1232提供到显示单元1202。从而,例如,包含在链接到该主页的运动图像文件中的运动图像数据被显示。与此同时,音频处理单元1235把该音频数据转换为模拟音频信号,然后把该模拟音频信号提供到语音输出单元1208。从而,例如,再现包含在链接到该主页的运动图像文件中的音频数据。
在此,可以应用根据任何上述实施例的图像编码方法和图像解码方法的***不限于上述内容提供***。
最近,使用卫星或地面电波的数字广播被经常讨论,并且根据上述实施例的图像编码装置和图像解码装置也可以应用于如图29中所示的数字广播***。
更加具体来说,对应于视频信息的编码位流被从广播台1409通过无线通信发送到例如通信卫星或广播卫星这样的卫星1410。当该广播卫星1410接收对应于该视频信息的编码位流时,该卫星1410输广播的电波,并且这些电波由在包括卫星广播接收设施的住宅处的天线1406所接收。例如,电视(接收器)1401或机顶盒(STB)1407这样的装置解码该编码位流,并且再现该视频信息。
另外,根据任何上述实施例的图像解码装置也可以被安装在再现装置1403上,其可以读取和解码记录在例如CD或DVD(记录介质)这样的存储介质1402上的编码位流。
在这种情况中,一个被再现的视频信号被显示在监视器1404上。该图像解码装置可以安装在与用于有线电视1405的电缆或用于卫星/地面广播1406的天线相连接的机顶盒1407上,以再现要显示在电视的监视器1408上的该图像解码装置的输出。在这种情况中,该图像解码装置可以不包含在该机顶盒中,而是包含在该电视中。具有天线1411的一个车辆1412可以从卫星1410或基站1107接收一个信号,并且再现一个运动图像,以把其显示在安装在车辆1412上的车辆导航***1413等等的显示设备上。
另外,还可以由根据任何上述实施例的图像编码装置对一个图像信号编码,并且记录在记录介质中。
一种记录设备的具体例子是例如把图像信号记录在DVD盘1421上的DVD录像机这样的录像机1420、以及在硬盘上记录图像信号的盘录像机。该图像信号可以记录在SD卡1422上。另外,当该录像机1420包含根据任何上述实施例的图像解码装置时,被记录在DVD盘1421或SD卡1422上的图像信号可以由录像机1420所再现,并且显示在监视器1408上。
在此,车辆导航***1413的结构除了相机单元1203、相机接口单元1233和图像编码单元1242之外例如可以包括如图28中所示的便携式电话机的组件,并且这同样可以应用于计算机1111或者电视(接收器)1401。
另外,作为例如便携式电话1114这样的终端,可以安装三种终端之一:具有编码器和解码器的发送接收型终端、仅仅具有编码器的发送终端以及仅仅具有解码器的接收终端。
如上文所述,根据任何上述实施例的图像编码方法或图像解码方法可以应用于任何上述设备或***,从而可以获得如上述实施例所述的效果。
另外,不必说本发明的实施例和其应用不限于在该说明书中所述的内容。
工业应用性
根据本发明的可变长度编码方法和可变长度解码方法通过选择适合于构成该系数数据的系数特性或者用于该系数的编码处理的状态的代码表,而有效地消除包含在作为可变长度编码处理的对象的系数数据中的冗余信息,从而大大地增加对图像信号等等的可变长度编码处理的编码效率。这些可变长度编码方法和可变长度解码方法被用于发送或存储运动图像数据的数据处理中。