图像编码/解码方法及其装置的制作方法

文档序号:7958348阅读:88来源:国知局
专利名称:图像编码/解码方法及其装置的制作方法
技术领域
本发明涉及一种用于编码/解码视频或静止图像的图像编码/解码方法及其装置。
背景技术
近年来,通过结合ITU-T和ISO-IEC,为ITU-TRec.H.264和ISO/IEC14496-10提出了一种与以前相比编码效率大幅提高的视频编码方法(ISO/IEC 14496-102003 information technology-Coding ofaudio-visual objects-Part 10Advanced Video Coding)(称为H.264)。常规的编码系统,诸如ISO/IECMPEG-1,2,4,ITU-TH.261,H.263利用8*8块的二维离散余弦变换(DCT)进行压缩。相反,由于H.264编码系统使用4*4块的二维整数正交变换,其无需考虑IDCT失配,并且能够利用16比特寄存器实现操作。
并且,所述H.264编码系统可以通过加法和比特移位来实现正交变换处理和量化处理。类似于所述正交变换和量化处理,可通过加法和比特移位来实现反量化处理和逆整数正交变换处理。
进一步,在H.264中,为了实现诸如高清晰电视图像的高分辨率图像的编码效率或者主观图像质量的提高,进行了包括新编码工具的类(profile)的开发。例如,在H.264的高类(high profile)(Joint Video Team(JVT)of ISO/IEC MPEG & ITU-T VCEG,12th MeetingRedmond,WA,USA 17-23 July,2004,“JVT-L047d8”)中,希望引入诸如8*8块的二维整数正交变换或MPEG-2的量化矩阵技术(ISO/IEC 13818-22000information technology-Genetic coding of moving pictures and associatedaudio informationVideo),并且提供一种指向高分辨率图像和主观图像质量的类。
基于如下等式(1)进行图像编码中的一般的量化处理。
Xij=int(|Yij|+fQstep)·sgn(Yij)---(1)]]>其中Xij表示量化后的变换系数矩阵,Qstep为量化步长,而Yij为变换系数矩阵。另一方面,基于如下等式(2)进行一般的反量化处理。
Yij′=Xij×Qstep(2)在H.264中,进行如下等式所示的反量化,以利用少量运算实现16比特的运算精度。例如,在如下等式(3)中示出了H.264高类的反量化处理(4*4像素块的误差信号)。
Yij=Xij×LS(m,i,j)<<(QP/6) (3)其中级别标度(level scale)LS(m,i,j)是通过如下等式(4)定义的值,而QP是量化参数,其表示在从0到51范围内的值。
LS(m,i,j)=WS(i,j)×Norm(m,i,j) (4)Norm(m,i,j)表示通过等式(5)表达的标度调整参数,并且通过等式(6)表达每个元素。
vm,n=101613111814132016142318162520181923---(6)]]>进一步,WS(i,j)表示量化矩阵,并且能够选择通过例如等式(7)表达的矩阵。
WS(i,j)=6122027122027322027323727323741---(7)]]>在H.264中,等式(3)的QP值(量化参数)被规定,从而在宏块中有相同的值。所述高类可采用4*4块和8*8块两种变换块尺寸。同时,可利用所述4*4块和8*8块两种量化块尺寸进行所述量化处理。
例如,H.264的帧内预测对于4*4块和8*8块的每一个而言有九种模式,而对于16*16块而言有四种模式。通过对根据所述预测模式或所述块尺寸发生的预测误差进行正交变换得到的变换系数的分布对每个块而言有所不同。类似地,在帧间预测中,可从七种运动补偿块尺寸的块中选择任意块。由于从多个参考图像提供的运动向量,使得有许多种预测组合。因此,由于宏块中的预测块尺寸及参考图像互不相同,通过对所述预测误差进行正交变换得到的变换系数的分布倾向于对每块都不同。
进一步,在H.264中,可对每个序列或每个图片(picture)改变所述量化矩阵。由于所述量化矩阵特别地对于提高主观图像质量有很大地贡献,根据将被编码图像设计最佳矩阵是十分重要的。然而,所述矩阵初始地被频域中的系数分布进行加权,从而当对于每块而言所述系数分布不同时,所述最佳矩阵对于每个像素区域有所不同。
如上讨论的,在H.264中,不能根据所述宏块中的预测块形状以及预测模式来改变所述反量化器。于是,存在这样的问题,即,所述宏块的小像素块中的所述变换系数不能被精细地控制。
进一步,当利用给定的量化矩阵,通过H.264高类中规定的方法,为每个宏块对量化参数进行确定和反量化时,存在这样的问题,即,不能根据所述宏块中的预测块形状以及预测方法来控制变化系数。

发明内容
本发明的目的在于提供一种视频编码方法,其用于通过参照量化码表以小于宏块的块为单位对预测误差信号进行量化来对图像进行编码。
本发明的一个方面在于提供一种图像编码方法,其用于根据编码模式对图像信号进行编码,所述方法包括根据来自对应于通过分割输入图像信号产生的多个宏块中的每个宏块的宏块信号的多种编码模式中的每一种来产生预测信号和编码模式信息;从多个量化码表中选择对应于每个宏块的量化码表;基于所述宏块信号和所述预测信号产生所述编码模式中的每一种的预测误差信号;对所述预测误差信号进行正交变换;利用对应于所述宏块的所述量化码表,在改变所述宏块中复数的亚像素块(sub-pixel-block)的每一个的量化参数时量化所述正交变换的预测误差信号,以产生量化变换系数;对所述量化变换系数进行编码;从所述编码的量化变换系数的编码失真以及编码比特的数目来计算编码代价(encodingcost);基于所述编码代价从所述编码模式中选择一种编码模式;基于所述编码代价从所述量化码表中选择一个量化码表;以及对指示所述输入图像信号的每个编码部分的所述选择的量化码表的索引的信息进行编码,其中所述编码部分包括所述输入图像信号的帧以及所述帧的区域中的一个。


图1为根据本发明第一实施例的图像编码装置的框图;图2为利用所述图像编码装置实现的视频编码方法的处理流程图;图3为示图,用于解释根据上述实施例的量化/反量化方法;图4为示图,用于解释关于所述实施例的句法(syntax)结构的概要;图5为示图,其示出了关于所述实施例的序列头的数据结构;图6为示图,其示出了关于所述实施例的条带头(slice header)的数据结构;图7为示图,其示出了关于所述实施例的宏块层的数据结构;图8为示图,其示出了关于所述实施例的条带头的数据结构;图9为示图,其示出了关于所述实施例的宏块层的数据结构;图10为示图,其指示了关于所述实施例的量化码表索引;图11为根据第二实施例的图像编码方法的处理流程图;
图12为示图,其示出了根据所述第二实施例的序列头的数据结构;图13为示图,其示出了根据所述第二实施例的条带头的数据结构;图14为示图,其示出了根据所述第二实施例的宏块头的数据结构;图15为根据本发明所述实施例的图像解码装置的框图。
具体实施例方式
现在将参照以下的附图描述图像编码方法、图像编码装置、图像解码方法以及图像解码装置。
图1是关于本发明第一实施例的视频编码装置的框图。此实施例中,通过以小于宏块的块为单元参照量化码表对预测误差信号进行量化来对视频图像进行编码。
根据图1,输入图像信号,即,视频信号被分成宏块或宏块对,并被输入视频编码装置100。在所述视频编码装置100中,准备了块尺寸或预测信号产生方法不同的多种预测模式,作为帧内预测模式或帧间预测模式。所述预测信号发生器120利用暂时存储在参考图像存储器111中的参考图像的宏块生成所有可选择的模式的预测图像。进一步,所述预测信号发生器120产生通过从所述输入图像信号中减去所述预测信号而得到的预测误差信号。
如果指定的模式是运动补偿帧间预测模式,所述预测信号发生器120进行运动向量的检测以及参考图像的选择。换言之,所述预测信号发生器120包括运动补偿预测模块,其利用所述参考图像存储器111的参考图像来检测运动向量,以产生运动补偿预测信号,以及减法器,其从所述输入图像信号中减去由所述运动补偿预测电路输出的预测信号,以产生预测误差信号。
当除非与H.264的帧内预测(4*4预测)一样地在所述宏块中产生本地解码图像,否则不进行下一次预测时,可利用下述的正交变换器102进行所述帧内预测。仅利用所述预测信号发生器120和所述正交变换器102产生所述预测信号。
利用所述预测信号发生器120产生的预测误差信号被输入到所述量化集选择器101。所述量化集选择器101从所述量化器和反量化器所用的量化码表中选择表,并将其设置到编码控制器121。
利用所述预测信号发生器120产生的预测误差信号通过所述量化集选择器101被发送到所述正交变换器102。所述正交变换器102对所述预测信号进行正交变换(例如,离散余弦变换(DCT))并向所述量化器103提供变换系数。
所述量化器103参照利用编码控制器121设置的所述量化码表,并且根据所述量化码表量化所述变换系数,并向开关104和反量化器108输出所述经过量化的正交变换系数以及预测模式信息(或者运动向量信息,参考图像信息)。在此实施例中,所述量化器103充当信号产生模块以根据所述设置的量化码表执行视频编码方法。
利用可变长编码器112将所述量化的变换系数与诸如模式信息、量化系数、量化码表的关于所述预测方法的信息一起进行可变长编码(VLC)。此VLC信息被通过复用器122进行复用,并通过输出缓冲器123作为编码数据输出。
所述反量化器108根据利用编码控制器121设置的所述量化码表对来自所述量化器103的所述量化的变换系数进行反量化,并向逆正交变换器109输出所述经过反量化的变换系数。所述逆正交变换器109对所述经过反量化的变换系数进行逆正交变换(例如,逆DCT),将其重建(reconstruct)为预测误差信号,并将其向所述预测解码器110输出。
所述预测解码器110根据对应于所述预测信号发生器120的处理的处理来对所述预测误差信号进行处理,以再现(playback)图像,并将其向所述参考图像存储器111输出。所述参考图像存储器111存储所述重建的图像。当利用所述预测信号发生器120产生预测误差信号时,将参照存储在所述参考图像存储器111中的图像。在所述视频编码装置中,不利用所述预测解码器110产生所述预测图像,而是希望保持和使用通过所述预测信号发生器120的运动补偿预测电路产生的预测信号。
所述开关104向临时编码器/编码比特数计数器105或可变长编码器112输出从所述量化器103提供的正交变换系数和预测模式信息。
所述临时编码器/编码比特数计数器105临时地对指示经由所述开关104输入的所述正交变换系数的信号进行编码,并对已编码的比特的数目进行计数。所述临时编码是对所述系数临时地进行编码以对已编码的比特进行计数。所述临时编码器/编码比特数计数器105对通过基于算术编码的哈夫曼编码或熵编码进行编码得到的数据的编码比特的个数进行计数。
利用所述临时编码器/编码比特数计数器105计数得到的所述已编码比特数被输入到编码失真检测器106。所述编码失真检测器106检测在来自所述预测解码器110的所述本地解码图像和所述输入图像信号之间的均方误差,并将其作为编码失真(量化失真)输出到编码模式控制/判定单元107。所述编码模式控制/判定单元107计算来自输入编码失真(量化失真)和已编码比特数的编码代价。利用所述编码代价作为指标来确定所述宏块的模式。更具体地,在本实施例中,使用通过如下等式(8)得到的所述代价。
Cost=D+λ×R(8)D表示编码失真,而R表示已编码比特数。基于这样得到的编码代价从多种编码模式中选择编码模式。换言之,对将被编码的像素块进行预测编码,对已编码比特数进行计数,并且检测一种或多种编码模式中的每一种的编码失真。为每种编码模式提供的每个编码代价被互相比较,以选择一种编码模式。
在此实施例中,所述编码模式控制/判定单元107选择具有最低编码代价的编码模式。换言之,所述处理以如下次序执行,在图1中,量化集选择器101→正交变换器102→量化器103→开关104→临时编码器/编码比特数计数器105→编码失真检测器106→编码模式控制/判定单元107,以选择最佳编码模式。
当决定所述编码模式时,开关104的输出端直接与可变长编码器112相连接,以再次通过所述选择的编码模式和量化码表对所述输入图像信号进行编码,并且利用所述选择的编码模式输出关于量化变换系数、量化码表、编码代价等的编码信息。在这种情况下,事先保持当利用所述最佳编码模式和所述量化码表对所述输入图像信号进行编码时得到的各种信息(经过量化的变换系数和选择的量化码表的索引)。无需再次利用可变长编码器112对所述输入图像信号进行编码即可输出所述保持的数据。
此时,当对所述宏块的所有可选模式进行了临时编码循环(以如下次序进行的处理流程,在图1中,量化集选择器101→正交变换器102→量化器103→开关104→临时编码器及编码比特数计数器105→编码失真检测器106→编码模式控制/判定单元107)时,为一次循环。换言之,当所述第一临时编码循环结束时,所述模式确定完成,并且其后不需要再次进行模式确定。
利用所述第一循环选择的所述编码模式设置到所述编码控制器121。在接下来的循环中,当通过改变所述量化码表进行所述临时编码时,使用通过设置到所述编码控制器121的编码模式而计算得到的预测误差信号。进一步,在所述初始循环中,通过这样的方案来实现所述量化和反量化,在其中,在所述宏块中改变量化,以尽可能地抑制对利用所述量化表的量化模式确定的影响。
在H.264的帧内预测中,在生成所述预测图片以产生近似于当前块的块的预测图像时,将所述当前块的本地解码图像作为参考图像。因此,需要对每个小像素块进行正交变换,量化和反量化,以及逆正交变换。因此,当通过所述临时编码循环(第二次以及之后的临时编码循环)确定所述量化码表时,可重复所述帧内预测,以利用所述正交变换器102再生预测信号或者不进行再生。
所述编码控制器121执行对所述已编码比特数的反馈控制、量化特性控制,模式控制、用于控制所述已编码比特数的速率控制、对所述预测单元的控制以及对编码的整体控制。
可利用计算机根据在其中存储的程序来实现以上结构部分的功能。
以上描述了根据此实施例的视频编码装置100的结构。以下将参照图2描述与本发明相关的第一实施例的视频编码方法,作为由所述视频编码装置100实施的例子。
当对于每帧将视频信号输入到所述视频编码装置100时,对于每个宏块或每对宏块开始对所述输入图像进行编码(步骤S201)。
利用所述预测信号生成器120对所述输入视频信号的宏块的所有可选的编码模式进行所述预测图像信号生成以及预测误差信号计算(步骤S202)。通过正交变换以及对通过以上处理得到的所述预测误差信号进行量化来进行所述编码模式的确定以及所述最优量化码表的选择。
将指示所述量化码表的索引Q_idx初始化为0(步骤S203)。此索引表示例如图10所示的码表的号码。进一步,将指示编码模式的索引初始化为0,将最终选择的最好编码模式的索引Best_Mode初始化为最大,并将指示最小编码代价的Min_Cost初始化为最大(步骤S204)。
在编码模式I(=index)以及量化码表索引QC(=Q_idx)中进行所述临时编码。换言之,在临时编码中,开关104的输出端被连接到所述临时编码器/编码比特数计数器105。根据图1所示的临时编码循环执行所述临时编码处理(处理流程以如下次序执行,在图1中,量化集选择器101→正交变换器102→量化器103→开关104→临时编码器/编码比特数计数器105→编码失真检测器106→编码模式控制/判定单元107)。
在所述量化器103中,根据所述量化码表索引QC所示的码表值进行量化。根据如下等式(9)从所述量化码表索引QC计算所述量化参数。
QPblk=QP+QV(QC,blk) (9)QPblk表示从所述量化码表索引QC得到的亚像素块量化参数,而QP指示宏块的量化参数。QV(QC,blk)指示由所述量化码表索引QC以及块编号(block number)blk所示的量化码表。可以以8*8块或4*4块为单位进行这些处理。例如,通过如下等式(10)定义8*8块的量化码表。
QV(QC,blk)=vblk0vblk1MvblkQCMvblkQ_MAX_IDX=0,0,0,0,1,1,-1,-1-1,-1,1,11,-1,1,-1-1,1,-1,1M---(10)]]>vblkQC表示所述块编号中的量化值的变量。例如,-1指示通过将所述宏块的量化参数设置为-1对将被作为对象的8*8块进行的量化。可通过设计适合于所述输入图像的vblkQC表来对于每个8*8像素改变所述宏块中的量化参数。
在所述宏块中有四个8*8块。因此,blk包含值0到3。在所述第一临时编码循环中,QC=0。此时,通过常规的宏块内固定的量化参数(intra-macroblock fixed quantization parameter)进行所述临时编码处理。图3示出了当给出量化码表vblkQC时分配宏块内量化参数的方法。
利用对应于每个位置的参数变化度(parameter change degree)来改变所述量化参数。当以8*8像素为单位改变所述量化参数时,4*4像素块量化器利用图3左侧所示的相同的量化参数来量化四个块。在8*8像素块量化器的情况下,如图3右侧所示,改变每个块的量化参数。
常规地,基于所述宏块中的量化参数不会波动的假设来定义用于所述临时编码的编码代价。因此,需要将以下条件表达式(11)加到等式(10)。
ΣblkvblkQC=0---(11)]]>这表示所述宏块中的量化参数的波动定性地恒定,以及对于编码代价计算中的代价评价所须的限制条件。
利用所述临时编码器/编码比特数计数器105进行已编码比特数的累积相加。利用所述编码失真检测器106从所述输入图像和所述本地解码图像计算所述编码失真(S206)。利用所述量化器103量化的变换系数被利用所述反量化器108进行反量化,并且然后被利用所述逆正交变换器109进行逆正交变换,从而解码所述预测误差信号。进一步,所述预测误差信号被加到所述预测信号。
根据等式(8)从所述已编码比特数和编码失真来计算所述编码代价(S207)。然而,无需使用所述编码失真即可将所述已编码比特数作为编码代价使用。在这种情况下,确定所述编码模式时不再需要所述编码失真。因此,在所述临时编码循环中,不需要诸如反量化和逆正交变换的大负担的处理。可选地,可使用所述输入图像的统计量(例如,所述输入图像的DC值(在所述像素和所述DC值之间的差之和))来代替所述编码失真。所述临时编码不读出所述编码数据。
所述编码模式控制/判定单元107判定计算得到的编码代价是否小于所述最小编码代价min_cost(步骤S208)。当所述判定为“是”时,所述编码模式控制/判定单元107将所述编码代价更新为所述最小编码代价,并将所述临时编码的编码模式保存为best_mode,且将所述量化码表索引保存为best_Q_idx。进一步,将所述索引值增加一。在这种情况下,保持当利用所述最好编码模式进行编码时得到的各种编码数据,以避免重新编码处理(步骤S209)。
所述编码模式控制/判定单元107判定所述更新的索引是否大于MAX_INDEX(步骤S210)。当所述索引大于MAX_INDEX时,即,对在步骤S209中选择的所述宏块中的可选编码模式的所有处理都结束了,所述判定为“是”。换言之,对于所有编码模式完成步骤S205-S210的处理。当所述判定为“否”时,在所述更新的索引所示的模式中进行步骤S205-S210的处理。这样,当步骤S210中的判定为“是”时,从所述宏块的可选编码模式中确定编码代价最小的编码模式。当步骤S210中的判定为“是”时,增加所述量化码表索引Q_idx,以更新QC(S211)。
所述编码模式控制/判定单元107判定所述更新的Q_idx是否大于MAX_Q_IDX(步骤S212)。当Q_idx更大时,对所有可选的量化码表索引完成所述临时编码处理。当所述判定为“否”时,将所述处理从所述编码模式控制/判定单元107转移到所述量化集选择器101,以利用新的Q_idx重复所述临时编码循环。如果编码模式I=best_mode,在所述第一循环中确定的best_mode中执行所述量化码表索引循环(从步骤S205到S212),而无需再次重复所述模式确定。
当在步骤S212中的所述判定为“是”时,结束所述临时编码循环,并且再次使用best_mode和best_Q_idx进行所述量化,并利用所述可变长编码器112进行所述编码(步骤S214)。当保持这次的数据时,不需要重新编码。于是,所述编码数据只是被输出到所述复用器122,并被根据每个系统复用,然后作为比特流数据输出到所述输出缓冲器123(S215)。
为每一个像素块选择的量化码表是从多个量化码表中选择的适当的量化码表。其被根据选择的码表转换为量化码表索引,并被编码。可以由帧中的多个像素块组成的一个区域(称为条带(slice))为单位来改变所述量化码表。所述量化集选择器101为每个条带选择具有高编码效率的量化码表。所述选择的量化码表的信息被作为量化码表的索引而利用所述编码数据进行复用。
可将所述量化码表构造为具有根据量化参数和目标比特率自动唯一地确定的结构。例如,当所述量化参数小于某值时,选择具有较小值的量化码表索引,而当其大于所述值时,选择具有较大值的索引。可选地,当比特率高于某值时,选择具有较大值的量化码表索引,而当其低于所述值时,选择具有较小值的索引。在每一种情况下,在对编码数据进行解码时,选择相同的量化码表,将其转换为相应的量化码表,并进行反量化。
以下将解释量化码表索引信息的编码方法。图4示出了在此实施例中使用的句法结构的概要。此句法包括三部分。高级别句法(401)包括比所述条带更高层次的句法信息。
所述条带级句法(404)指定每个条带所须的信息。所述宏块级句法(407)指定将要被可变长编码并且为每个宏块所需要的误差信号和模式信息。
各句法进一步包括详细的句法。即,所述高级别句法(401)包括一序列的序列参数集句法(402),图片参数集句法(403)等,以及图片级句法。所述条带级句法(404)包括条带头句法和条带数据句法(406)。所述宏块级句法(407)包括宏块层句法(408)和宏块预测句法(409)。
根据本发明,必需的句法信息是序列头(402)、条带头(405)以及宏块头(408),后面将对此进行描述。
图5的序列头中所示的ex_quant_code_in_slice_flag是指示是否为每个条带对于所述量化码表索引进行编码的标志。当此标志为1时,能够为每个条带改变所述量化码表索引。ex_quant_code_in_mb_flag是指示是否为每个宏块对于所述量化码表索引进行编码的标志。当此标志为1时,所述编码器能够改变每个宏块的所述宏块量化码表索引。
当图5所示的ex_quant_code_in_slice_flag为1时,对图6的条带头中的slice_ex_code_zero_flag进行编码。此标志示出了选择的量化码表索引为0。当所述标志为1时,此标志指示在当前条带中选择常规量化。换言之,其指示所述宏块中的量化参数相等。然后,不对rem_slice_ex_code_num进行编码。当所述slice_ex_code_zero_flag为1时,将当前选择的量化码表索引QC作为如下等式(12)的值进行编码。
rem_slice_ex_code_num=QC-1 (12)类似地,当图5所示的ex_quant_code_in_mb_flag为1时,对图7的所述宏块头中的mb_ex_code_zero_flag进行编码。此标志指示所述选择的量化码表索引为0。当所述标志为1时,此标志指示在所述当前宏块中选择常规量化。换言之,其示出了所述宏块中的量化参数相等。然后,不对rem_mb_ex_code_num进行编码。当所述mb_ex_code_zero_flag为1时,将当前选择的量化码表索引QC作为如下等式(13)的值进行编码。
rem_mb_ex_code_num=QC-1 (13)当实际编码时,设计使得当选择vblkQC=0,0,0,0]]>时,编码比特数降低。这种句法的目标在于,当在低比特率时由于所述量化码表索引起的影响很低时,将编码比特的数目降低到尽可能小。
以下句法为所述句法的另一个例子。图8示出了条带头的数据结构的一部分,而图9示出了根据宏块层的数据结构的一部分。对所述条带头和所述宏块层的量化码表索引进行可变长编码,或进行定长编码以及复用。
具体地,所述帧内预测利用所述输入图像的空间相关性进行预测,从而使得所述宏块的细微区域中的系数分布倾向于大不相同。在这种情况下,几乎不选择在其中所述宏块的量化参数不改变的量化器。如果利用各种量化码表索引进行所述量化,可降低所述编码比特数。换言之,由于不能预测量化码表索引的出现频率,很难配置高效的句法。因此,存在图8和图9所示句法有效的情况。
如上讨论的,在此实施例中,实际上对多个可选编码模式的每一个进行临时编码处理。从多种编码模式中选择具有最低编码代价的编码模式,其中所述编码模式的每一个具有从所述编码数据的编码比特数和编码失真计算的编码代价。再次基于选择的模式执行作为量化码表循环的临时编码处理。输出根据编码代价最小的量化码表索引进行编码的编码数据。
这样,通过利用量化码表控制每个子块(sub-block)的宏块的量化参数来选择所述编码模式。因此,能够选择这样的量化参数,通过其能够根据预测块形状和预测方法进行高编码率的编码。通过抑制所述宏块的量化参数的平均变化值,可按其原样使用常规的模式确定系统。
如所述,不必对所有的编码模式进行高负担的编码处理。由于仅需要在选择的编码模式中进行编码,可降低运算负担。换言之,在此实施例中,可能实现高速且优选的编码模式选择以及高速且高压缩效率的视频编码。
如在前所述,在选择的模式中进行编码的情况下,将预测误差信号的量化的正交变换系数输入到逆正交变换器/反量化器206中,并对其进行逆量化和逆正交变换以再生预测误差信号。通过预测解码器207产生本地解码图像,并将其作为参考图像暂时地存储在参考图像存储器208中。仅对选择的模式进行本地解码图像生成处理,并且不需要在用于判定预测模式的循环中总是执行所述处理。
以下解释另一个例子的视频编码方法。当所述量化码表索引的最大Q_MAX_IDX大于给定值时,不能忽略将被编码的句法的编码比特数,尤其在低比特率的情况。因此,当为每个宏块发送所述句法时,对实际范围而言八种方法(3比特)是合适的。另一方面,在高比特率的情况下,可通过高效的量化码表索引来提高所述编码效率。因此,根据作为基础的量化参数,改变所述量化码表。
根据由编码控制器121进行的速率控制来控制所述量化参数QP的值。当对将被编码的宏块进行编码时,已经确定了所述量化参数的值,并且,常规地,所述编码器对所述量化参数之间的差值进行编码。在临时编码循环中,根据给定的量化参数QP的值来改变将被使用的量化码表。
更具体地,当所述量化参数QP小于某值QPLow时,采用Q_MAX_IDX大的码表。当QP大于QPHigh时,使用Q_MAX_IDX小的码表。由于存在可根据所述比特率容易地选择的量化码表,可自适应地改变根据所述量化参数的值而使用的表。
作为另一个例子,可使用这样的系统,在其中准备了Q_MAX_IDX表,并且在根据所述量化参数的值由所述表的上部指定的比特的允许范围内执行临时编码循环。
图10说明了8*8像素块量化码表索引的例子。可以改变根据由速率控制给出的所述宏块的量化参数QP的值的可用的索引。例如,当QP大于32时,能够选择八个量化码表索引(rem_mb_ex_code_zero_flag被配置为3比特)。另一方面,在QP处于20-32的范围的情况下,能够选择十六个量化码表索引(rem_mb_ex_code_zero_flag被配置为4比特)。
换言之,每个宏块所使用的比特数根据QP的有效范围改变可使用的比特长度。当所述量化参数具有较大值时,对所述系数进行粗量化,使得编码数据较小。如果为每个宏块的小编码数据使用大数目的比特,对于将被编码的图像整体而言,不能降低编码比特数。为此,根据所述量化参数的范围决定那些比特可用。如果将所决定的比特数输入到所述编码器和解码器,能够调整根据将被使用的比特率所实际发送的句法的比特数。这样,可能通过根据所述量化参数QP来改变可选的表来提高编码效率,从而抑制所述句法的开销。
下面将描述根据第二实施例的视频编码方法。
在此实施例中,将用于选择与每个像素块对应的相应量化矩阵的步骤加入所述第一实施例。换言之,此实施例包括选择性地切换多个量化矩阵,以及确定表示量化码表的量化参数的索引。所述实施例的视频编码装置的结构相似于图1。在所述第二实施例中,类似的参考数字被用于指定与第一实施例的类似结构元素相对应的结构元素,为简洁起见,将省略对其的进一步解释。
图11示出了此实施例的视频编码处理流程。步骤S1001和S1002分别等同于图2的步骤S201和S202。编码控制器121初始化索引WM_idx,其指示量化矩阵的表编号为0(步骤S1003)。进一步,初始化各变量(步骤S1004和S1005)。与第一实施例类似,重复临时编码循环(在图1中,量化集选择器101→正交变换器102→量化器103→开关104→临时编码器及编码比特数计数器105→编码失真测量单元106→编码模式控制/判定单元107)以确定编码模式I和量化码表索引QC(步骤S1005-S1013)。
在所述临时编码循环中,直到确定所述编码模式和量化码表索引,无需使用量化矩阵就可进行扁平量化(flat quantization)和反量化。所述扁平量化是等式(7)表达的量化矩阵的所有分量都指示16的量化。在H.264中,当不使用所述量化矩阵时,进行所述扁平量化。
当在步骤S1013中的判定为“是”时,所述量化集选择器101增加WM_idx,并将所述结果设置到编码控制器121。判定WM_idx是否等于2。当所述判定为“否”时,更新编码模式(步骤S1014),并再次根据所述更新的量化矩阵索引来执行所述临时编码。当由所述临时编码提供的编码代价“cost”小于min_cost时,更新best_WM_idx,并存储所述临时编码结果(步骤S1010)。
如果所述判定为“是”,结束所述临时编码循环,并利用通过所述临时编码循环确定的各种参数再次进行所述编码(步骤S1016)。如果保存了通过所述临时编码得到的数据,则不需要重新编码。因此,只是向复用器122输出所述编码数据。根据每种方案复用所述编码数据,并将其作为比特流数据输出到所述输出缓冲器123(S215)。
在此实施例中,假设WM_idx为下一个索引的值。如果WM_idx为0,进行所述扁平量化。如果WM_idx为1,对所述对象宏块应用H.264中规定的量化矩阵。在使用缺省矩阵的情况下,根据本方案,可为每个宏块选择所述缺省矩阵和扁平矩阵。用以下等式(14)表达H.264的4*4像素块的缺省矩阵和扁平矩阵(不使用所述量化矩阵)。
WSdefault(i,j)=6122027122027322027323727323741]]>WSflat(i,j)=16161616161616161616161616161616---(14)]]>下面将解释对量化矩阵的索引进行编码的方法。
图12示出了序列头的数据结构的一部分,图13示出了条带头的数据结构的一部分,而图14示出了宏块头的数据结构的一部分。这些定义与图4的句法结构类似。
图12所示的ex_quant_matrix_in_slice_flag是指示是否为每个条带对量化矩阵的索引进行编码的标志。ex_quant_matrix_in_mb_flag是指示是否为每个宏块对量化矩阵的索引进行编码的标志。slice_ex_matrix_flag是指示是否在所述条带中使用所述量化矩阵的标志。如果所述slice_ex_matrix_flag为1,使用相应的量化矩阵。在这种情况下,可发送所述量化矩阵,并且可采用存在于所述H.264高类中的缺省矩阵。标志“0”意味着在所述条带中不采用所述量化矩阵。类似地,mb_ex_matrix_flag是指示是否在所述相应的宏块中使用所述量化矩阵的标志。如果所述标志为1,利用所述量化矩阵进行量化。
原样发送所述相应量化矩阵的索引而不是图12和13中所示的用1比特指示的标志,并利用多个量化矩阵进行量化/反量化。然后,所述编码器和解码器必须具有对应于各自量化矩阵的索引的量化矩阵表(可选地,利用对所述量化矩阵的复用将其发送到所述编码数据)。
通过细微地控制与量化相关的参数(量化参数、量化码表、量化矩阵、量化偏移等),与帧间编码相比,帧内编码能够提高编码效率。上述编码方案可仅应用于帧内编码区域。在这种情况下,当从所述编码控制器121(图1)得到帧间编码信息时,所述量化集选择器101将量化码表索引和量化矩阵索引的每一个设置为0。在步骤S212中总是选择“是”。类似地,在步骤S1015中也总是选择“是”。
换言之,在所述帧间编码块中,不执行所述量化码表索引循环和量化矩阵索引循环。进一步,由于只能从所述量化码表索引和量化矩阵索引中选择索引“0”,也不必发送所述句法。这样,通过利用与每个量化相关的参数仅对帧内编码区域进行编码,而无需作用于帧间编码区域,能够改善所述处理负荷,并提高编码效率。
如上讨论,在此实施例中,实际对多种可选编码模式进行临时编码处理。从每种模式的编码数据的编码比特数和编码失真来计算编码代价,以得到对应于所述编码模式的多个编码代价。从所述编码代价中选择最小的编码代价。从所述编码模式中选择对应于所述最小编码代价的编码模式。再次基于选择的模式根据量化码表循环来执行所述临时编码处理,以选择编码代价最小的量化码表。再次基于选择的编码模式和量化码表根据量化矩阵循环来执行所述临时编码处理,以选择编码代价最小的量化矩阵索引。再次利用这些关于量化的参数进行编码,以输出编码数据。如上所述,利用所述量化码表为每个小块控制宏块中的量化参数,以选择模式,并且进一步,自适应地通过切换每个宏块的量化矩阵来执行编码。于是,能够根据预测块形状和预测方法以高编码效率进行编码。换言之,能够根据像素块的内容进行优选的量化。
图15示出了与此实施例有关的视频解码装置300的结构。经由传送系统或累积系统从所述视频编码装置100发送的所述编码数据被暂时存储在输入缓冲器301中,并被基于句法由所述解复用器302分为多个帧,然后被输入到可变长解码器303。所述可变长解码器303对所述编码数据的每个句法的可变长码进行解码,以再生量化变换系数、量化矩阵、量化参数、量化码表信息、模式信息以及运动向量信息。
利用所述反量化器304对所述量化的变换系数进行反量化,并通过逆正交变换器305利用再生信息中的量化矩阵、量化参数、量化码表信息对其进行逆正交变换。当所述模式信息指示帧内编码模式时,从所述逆正交变换器305输出再生的图像信号,并经由加法器306将其作为最终再现图像信号310进行输出。
当所述模式信息指示帧间编码模式时,从所述逆正交变换器305输出预测误差信号,并且进一步开启所述模式选择开关309。利用所述加法器306相加由帧存储器/预测图像产生器308输出的预测图像信号和所述预测误差信号,以生成再现图像信号。将所述再现图像信号作为参考图像信号存储在所述帧存储器/预测图像产生器308中。
将所述模式信息和运动向量信息输入到所述帧存储器/预测图像产生器308。并将所述模式信息输入到所述模式选择开关309。在帧内编码模式中,关断所述开关309,而在所述帧间模式时,开启所述开关。
所述可变长解码器303根据所述编码数据的每一种方案对解复用的编码数据进行可变长解码,以获得解码所需的信息。图4示意性示出此实施例中的句法。所述句法主要由三部分组成。高级别句法(401)是比所述条带更高层次的句法信息。所述条带级句法(404)指定每一个条带所须的信息。所述宏块级句法(407)指定每个宏块所需要的误差信号和模式信息。
所述句法的每一个由进一步的详细句法组成。即,所述高级别句法(401)包括一序列的序列参数集句法(402),图片参数集句法(403)等,以及图片级句法。所述条带级句法(404)包括条带头句法和条带数据句法(406)。所述宏块级句法(407)包括宏块层句法(408)和宏块预测句法(409)。根据本实施例,必需的句法信息是序列头(402),条带头(405)以及宏块头(408),后面将对此进行描述。
图5的序列头中所示的ex_quant_code_in_slice_flag是指示是否为每个条带对所述量化码表索引进行解码的标志。当此标志为1时,为每个条带改变所述量化码表索引并进行编码。ex_quant_code_in_mb_flag是指示是否为每个宏块对所述量化码表索引进行解码的标志。当此标志为1时,所述解码器改变每个宏块的宏块量化码表索引,并对其进行解码。当图5所示的ex_quant_code_in_slice_flag为1时,对图6的条带头中的slice_ex_code_zero_flag进行解码。此标志指示选择的量化码表索引为0。当所述标志为1时,此标志指示在当前条带中选择常规的量化。换言之,其指示所述宏块中的量化参数相等。此时,不对rem_slice_ex_code_num进行编码。当所述slice_exc_ode_zero_flag为1时,将当前选择的量化码表索引QC作为如下等式(15)中的值进行编码。
rem_slice_ex_code_num=QC-1 (15)类似地,当图5所示的ex_quant_code_in_mb_flag为1时,对图7的所述宏块头中的mb_ex_code_zero_flag进行解码。此标志指示所述选择的量化码表索引为0。当所述标志为1时,此标志指示在当前宏块中选择常规的量化。换言之,其示出了所述宏块中的量化参数相等。然后,不对rem_mb_ex_code_num进行解码。当所述mb_ex_code_zero_flag为1时,将当前选择的量化码表索引QC作为如下等式(16)中的值进行解码。
rem_mb_ex_code_num=QC-1(16)从所述序列头、所述条带头、所述宏块头等得到的信息被设置到所述解码控制器310,并在以下信号处理模式中进行使用。
以下句法被认为是所述句法的另一个例子。图8示出了条带头的数据结构的一部分,而图9示出了宏块层的数据结构的一部分。对所述条带头和所述宏块层的量化码表索引原样地进行可变长解码,或进行定长解码。
反量化器304利用所述可变长解码的量化码表信息从所述量化码表索引访问当前宏块的量化码表,设置每个相应像素块的小像素块的量化参数,并根据等式(3)进行反量化。
下面描述对此反量化的详细描述。
根据与等式(9)等同的以下等式(17)利用索引QC计算所述量化参数,其中所述索引QC指示利用可变长解码器303进行解码的所述量化码表。
QPblk=QP+QV(QC,blk) (17)
QPblk表示从所述量化码表索引得到的亚像素块量化参数,而QP指示所述宏块的量化参数。可通过对所述宏块头进行可变长解码来得到所述QP的值。QV(QC,blk)指示由所述量化码表索引QC以及块编号blk所表示的量化码表。可以以8*8块或4*4块为单位执行这些处理。例如,通过等同于等式(10)的如下等式(18)定义8*8块的量化码表。
QV(QC,blk)=vblk0vblk1MvblkQCMvblkQ_MAX_IDX=0,0,0,0,1,1,-1,-1-1,-1,1,11,-1,1,-1-1,1,-1,1M---(18)]]>其中,vblkQC表示所述块编号中的量化值的变量。例如,-1指示通过将所述宏块的量化参数设置为-1对将被作为对象的8*8块进行的量化。所述宏块有四个8*8块。因此,blk表示从0到3四个值。
图3说明了当提供量化码表时宏块内量化参数的分配方法。利用对应于所述块的每个位置的参数变化度来改变所述量化参数。当以8*8像素为单位改变所述量化参数时,所述4*4像素块量化器利用图3左侧所示的相同的量化参数来反量化四个块。如图3右侧所示,8*8像素块量化器改变每个块的量化参数。
下面将解释用于对量化矩阵的索引进行解码的解码方法。图12示出了序列头的数据结构的一部分,图13示出了条带头的数据结构的一部分,而图14示出了宏块头的数据结构的一部分。类似于图4的句法结构对它们进行定义。
图12所示的ex_quant_matrix_in_slice_flag是指示是否为每个条带对量化矩阵的索引进行解码的标志。所述ex_quant_matrix_in_mb_flag是指示是否为每个宏块对量化矩阵的索引进行解码的标志。所述slice_ex_matrix_flag是指示是否在所述条带中使用量化矩阵的标志。如果所述slice_ex_matrix_flag为1,使用相应的量化矩阵。在这种情况下,可接收所述量化矩阵,并且可使用存在于所述H.264高类中的缺省矩阵。
如果所述slice_ex_matrix_flag为0,其意味着在反量化时不在所述条带中使用所述量化矩阵。类似地,mb_ex_matrix_flag是指示是否在所述相应宏块中使用量化矩阵的标志。如果所述标志为1,利用所述量化矩阵进行反量化。
原样发送所述相应量化矩阵的索引而不是图12和13中所示的用1比特指示的标志,并利用多个量化矩阵进行量化/反量化。然后,所述解码器必须具有对应于各自量化矩阵的索引的量化矩阵表(可选地,从所述编码数据解码所述量化矩阵)。
以下描述如何切换所述量化矩阵。
当所述条带头的所述slice_ex_matrix_flag或所述宏块头的mb_ex_matrix_flag为0时,在相应的条带或宏块中不采用所述量化矩阵(换言之,进行扁平反量化(flat dequantization))。当所述条带头的所述slice_ex_matrix_flag或所述宏块头的mb_ex_matrix_flag为1时,利用发送的量化矩阵或缺省矩阵在所述相应的条带或宏块中进行反量化。
当使用所述缺省矩阵时,在此方案中,为每一个条带或宏块选择所述缺省矩阵和所述扁平矩阵。如下等式(19)表达H.264的4*4像素块中的缺省矩阵和扁平矩阵(对应于不使用量化矩阵的情况)。
WSdefault(i,j)=6122027122027322027323727323741]]>WSflat(i,j)=16161616161616161616161616161616---(19)]]>如果如所述使用本方案,当完成等式(3)的反量化时,可为每一个条带或宏块改变等式(4)的量化矩阵。因此,考虑主观图像质量进行所述反量化。
如上所述,反量化器304通过类似于利用所述视频编码装置进行量化的系统来执行反量化。
以上实施例解释视频了编码。然而,本发明也可应用于静止图像编码。
根据本发明,通过调整每个小像素块的量化参数的值,利用用于改变宏块的量化参数的量化码表,并且进行用于改变每个区域的量化矩阵的量化和反量化,可以实现具有比常规反量化器更高的编码效率并考虑了视觉属性的量化器和反量化器。
根据本发明,能够实现这样的量化器和反量化器,其能够提高编码效率并且充分考虑了视觉属性。
本领域技术人员可以容易地得到其它优点和变型。因此,本发明在其广义方面不限于在此示出和描述的具体细节和代表性实施例。于是,无需脱离由所附权利要求及其等同内容所定义的一般发明性概念的精神和范围即可得到各种变型。
权利要求
1.一种图像编码方法,其用于根据编码模式对图像信号进行编码,所述方法包括以下步骤根据来自对应于通过分割输入图像信号产生的多个宏块中的每个宏块的宏块信号的多种编码模式中的每一种来产生预测信号和编码模式信息;从多个量化码表中选择对应于每个所述宏块的量化码表;基于所述宏块信号和所述预测信号产生所述编码模式中的每一种的预测误差信号;对所述预测误差信号进行正交变换;利用对应于所述宏块的所述量化码表,在改变所述宏块中复数的亚像素块的每一个的量化参数时量化所述正交变换的预测误差信号,以产生量化变换系数;对所述量化变换系数进行编码;从所述编码的量化变换系数的编码失真以及编码比特的数目来计算编码代价;基于所述编码代价从所述编码模式中选择一种编码模式;基于所述编码代价从所述量化码表中选择一个量化码表;以及对指示所述输入图像信号的每个编码部分的所述选择的量化码表的索引的信息进行编码,其中所述编码部分包括所述输入图像信号的帧以及所述帧的区域中的一个。
2.根据权利要求1所述的视频编码方法,进一步包括在帧内编码和帧间编码之间利用所述量化表来切换量化和反量化的执行。
3.根据权利要求1所述的视频编码方法,进一步包括根据所述宏块的所述量化参数的值来改变所述量化码表。
4.根据权利要求1所述的视频编码方法,进一步包括选择对应于每个所述宏块的量化矩阵,利用所述量化矩阵量化所述正交变换的预测误差信号,以产生量化的变换系数,并且基于从该量化的变换系数计算的所述编码代价从多个量化矩阵中选择一个量化矩阵。
5.根据权利要求4所述的视频编码方法,进一步包括在帧内编码和帧间编码之间利用所述量化表来切换量化和反量化的执行。
6.根据权利要求4所述的视频编码方法,进一步包括根据所述宏块的所述量化参数的值改变所述量化码表。
7.一种对编码图像信号进行解码的图像解码方法,包括以下步骤接收编码图像信号的每个宏块的量化码表的索引;当根据对应于所述宏块中复数的亚像素块的每一个的所述索引的所述量化码表来改变量化参数时,反量化所述宏块;并且改变所述编码图像信号的每个图像的所述量化码表,所述图像包括所述编码图像信号的帧和所述帧的区域中的一个。
8.根据权利要求7所述的图像解码方法,进一步包括接收指示所述编码图像信号的每个图像的所述量化码表以及所述量化矩阵表中的一个的索引,并且利用所述量化码表和所述量化矩阵表中的一个,通过切换反量化的执行和不执行来对所述宏块进行解码。
9.根据权利要求7所述的图像解码方法,进一步包括接收指示所述编码图像信号的每个图像的所述量化码表以及所述量化矩阵表中的一个的索引的信息,并且根据所述索引的所述信息对所述量化码表和所述量化矩阵中的一个进行解码。
10.根据权利要求7所述的视频解码方法,进一步包括根据所述宏块的所述量化参数的值来改变所述量化码表和所述量化矩阵表中的一个。
11.根据权利要求7所述的图像解码方法,进一步包括接收每个所述宏块的量化矩阵的索引,根据用于所述宏块并且从对应于所述接收的量化矩阵的量化矩阵表得到的量化矩阵来反量化所述宏块,并且改变所述编码图像信号的每个图像的所述量化矩阵表。
12.根据权利要求11所述的图像解码方法,进一步包括接收指示所述编码图像信号的每个图像的所述量化码表以及所述量化矩阵表中的一个的索引,并且利用所述量化码表和所述量化矩阵表中的一个,通过切换反量化的执行和不执行来解码所述宏块。
13.根据权利要求11所述的图像解码方法,进一步包括接收指示所述编码图像信号的每个图像的所述量化码表以及所述量化矩阵表中的一个的索引的信息,并且根据所述索引的所述信息对所述量化码表和所述量化矩阵中的一个进行解码。
14.根据权利要求11所述的视频编码方法,进一步包括根据所述宏块的所述量化参数的值来改变所述量化码表和所述量化矩阵表中的一个。
15.一种根据编码模式对图像信号进行编码的图像编码装置,包括用于存储多个量化码表的表;第一发生器,用于根据来自对应于通过分割输入图像信号产生的多个宏块中的每个宏块的宏块信号的多种编码模式中的每一种来产生预测信号和编码模式信息;第一选择器,用于从所述量化码表中选择对应于每个所述宏块的量化码表;第二发生器,用于基于所述宏块信号和所述预测信号产生所述编码模式中的每一种的预测误差信号;变换器,用于对所述预测误差信号进行正交变换;量化器,利用对应于所述宏块的所述量化码表,在改变所述宏块中复数的亚像素块的每一个的量化参数时量化所述正交变换的预测误差信号,以产生量化变换系数;第一编码器,用于对所述量化变换系数进行编码;计算器,用于从所述编码的量化变换系数的编码失真以及编码比特的数目来计算编码代价;第二选择器,用于基于所述编码代价从所述编码模式中选择一种编码模式;第三选择器,用于基于所述编码代价从所述量化码表中选择一个量化码表;第二编码器,用于对指示所述输入图像信号的每个编码部分的所述选择的量化码表的索引的信息进行编码,其中所述编码部分包括所述输入图像信号的帧以及所述帧的区域中的一个。
16.根据权利要求15所述的视频编码装置,进一步包括用于选择对应于每个所述宏块的量化矩阵的选择器,用于利用所述量化矩阵来量化所述正交变换的预测误差信号以产生量化的变换系数的量化器,以及用于基于从所述量化的变换系数计算的所述编码代价来从多个量化矩阵中选择一个量化矩阵的选择器。
17.一种对编码图像信号进行解码的图像解码装置,包括接收器,用于接收编码图像信号的每个宏块的量化码表的索引;反量化器,用于当根据对应于所述宏块中复数的亚像素块的每一个的所述索引的所述量化码表来改变量化参数时反量化所述宏块;以及开关,用于改变所述编码图像信号的每个图像的所述量化码表,其中所述图像包括所述编码图像信号的帧和所述帧的区域中的一个。
18.根据权利要求17所述的图像解码装置,进一步包括被配置为接收每个所述宏块的量化矩阵的索引的接收单元,根据用于所述宏块并且从对应于所述接收的量化矩阵的量化矩阵表得到的量化矩阵来反量化所述宏块的反量化器,以及被配置为改变所述编码图像信号的每个图像的所述量化矩阵表的改变单元。
全文摘要
一种图像编码方法,包括根据来自对应于每个宏块的宏块信号的每种编码模式产生预测信号和编码模式信息,选择对应于每个宏块的量化码表,基于所述宏块信号和所述预测信号产生每种编码模式的预测误差信号,对所述预测误差信号进行正交变换,利用对应于所述宏块的所述量化码表在改变复数的亚像素块的每一个的量化参数时量化所述正交变换的预测误差信号,对量化变换系数进行编码,计算编码代价,基于所述编码代价选择一种编码模式,基于所述编码代价选择一个量化码表,以及对指示所述输入图像信号的每一帧或者所述帧的每一个区域的所述选择的量化码表的索引的信息进行编码。
文档编号H04N7/50GK1835595SQ20061006509
公开日2006年9月20日 申请日期2006年3月16日 优先权日2005年3月16日
发明者谷泽昭行, 中条健 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1