可变比特率编码装置 本申请是中国专利申请99119074.2的分案申请。
本发明涉及一种用来将图像信号变换为编码比特流的实时可变比特率控制的编码装置。
MPEG2方式是一对图像信号进行压缩编码处理的国际标准方式。通过MPEG2方式,将一幅图像分割成由很多像素构成的图像块,并对每一个图像块进行离散余弦变换(DCT),再对由此而得到的变换系数进行量化和可变长度编码,以去除空间方向上的冗余信息;将帧内编码处理、前向帧动作补偿预测编码处理、以及双向帧动作补偿预测编码处理组合起来使用,以去除时间方向上的冗余信息。高压缩和高图像质量就是这样来实现的。
众所周知,图像里混杂着诸如活动剧烈、内含很多复杂的图案之类的编码难度很高的场面(scene),和没有什么变动的、单调的即编码难度很低的场面。若不能将足够的比特数分配给编码难度很高的场面,则就会发生图像块噪声、蚊子噪声之类的DCT编码处理所特有的噪声,而造成图像质量大幅度下降。
因此,要通过恒定比特率控制来保证很高的图像质量,就必须进行能满足编码难度很高的场面要求的高比特率编码处理。这样做的结果,往往会将过大地比特数分配给编码难度很低的场面。于是,在要将编码比特流记录到记录媒体时,所需要的记录容量就要比进行可变比特率控制时的多。
于是,在以光盘为记录媒体的激光数字视盘(DVD)中,采用了以可变比特率控制的MPEG2方式。不过,到目前为止,至少需要对图像进行编码难度测定和编码这两遍处理。换句话说,是一种在事先测定好要记录的场面的复杂程度以后,再根据该复杂程度来进行比特分配和编码处理的非实时方式。
本发明的目的在于:提供一种可变比特率编码装置,以便实时地将图像信号变换为编码比特流。
为达成该目的,本发明的编码装置,采用了备有如下几部分的结构。即为输出其可变比特率与可变比特分配数相对应的编码比特流,而对图像信号进行压缩编码的压缩编码器;用来将所给定的平均目标数和上述编码比特流在每一个规定期间内的既生比特数之差,顺序地相加以求出累加误差的计算手段;用来将表示上述图像信号所显示的场面复杂程度的编码难度,检测出来的编码难度检测器;用来检测场面是否正在切换的变化检测器;以及在场面切换后的第一帧里,为将超过上述平均目标数的比特数分配给复杂场面,而根据上述已被检测出来的编码难度,来决定一暂时比特分配数,并且当上述累加误差超过所规定的值时,为最大限度地将上述暂时比特分配数减小到上述平均目标数,而根据上述累加误差的大小,纠正上述暂时此特分配数,然后定出上述比特分配数;在同一个场面内的帧里,为使上述累加误差不超过事先设定好的最大值,而将前一个上述比特分配数,依次更新的比特分配器。
按照本发明,不仅能够提供一种可将图像信号实时地变换为编码比特流的可变比特率编码装置,还能够一边限定上述既生比特数的总和,一边确保即使是在编码难度很高的场面不断连续的情况下,最低也能将上述平均目标数分配给每个场面,而保证了很高的图像质量。因此,在要实时地向可记录的DVD等的光盘、硬盘和其他的可记录可变长度比特流的记录媒体进行记录时,可视记录媒体的记录容量,来根据图像信号的编码难度,进行最适当的比特分配,并同时记录下时间已被定好的图像信号。
附图的简单说明
图1是表示本发明所涉及的编码装置的构成例的方框图。
图2A及图2B用来说明图1所示的编码装置的反馈控制特性,图2A表示比特分配数Bt随时间的变化情况,图2B表示累加误差D随时间的变化情况。
图3用来说明在图1的编码装置中,对与累加误差D相对应的比特分配数Bt的纠正情况。
图4A、图4B及图4C都表示编码难度很高的场面不断连续时,图1的编码装置的工作情况,图4A表示编码难度X随时间的变化情况;图4B表示比特分配数Bt随时间的变化情况;图4C表示累加误差D随时间的变化情况。
图5A、图5B及图5C都表示编码难度限高的场面和编码难度很低的场面混在一起时,图1的编码装置的工作情况,图5A表示编码难度X随时间的变化情况;图5B表示比特分配数Bt随时间的变化情况;图5C表示累加误差D随时间的变化情况。
(实施例)
图1是一个表示本发明所涉及的可变比特率编码装置的构成的例子。图1的编码装置是由以下两部分组成的。即为输出其可变比特率与可变比特分配数Bt相对应的编码比特流,而对图像信号进行压缩编码的压缩编码器10;和对既生代码数进行控制的代码数控制器20。利用压缩编码器10,可实现MPEG2方式的压缩编码处理,它是由离散余弦变换器、量化器、可变长度编码器等组成的。由比特分配数Bt规定在压缩编码器10内的量化子区间的大小。所得到的编码比特流,例如可以被记录在光盘等记录媒体上。代码数控制器20是由以下几部分组成的,即用来检测编码比特流在每一规定期间内的既生比特数Bg的既生比特数检测器21;用来求出已检测到的既生比特数Bg和所给定的平均目标数Ba之差,作为误差比特数d的误差比特数计算器22;用来把误差比特数d加到前一个累加误差上,而求出新的累加误差D的累加器23;用来控制要分配到压缩编码器10上的比特分配数Bt的比特分配器24;基于既生比特数Bg,来将表示由上述图像信号所显示的场面复杂程度的编码难度X检测出来的编码难度检测器25;基于编码难度X的变化,检测场面是否正在切换的难度变化检测器26。根据既生比特数Bg和量化子区间大小来计算编码难度X。ΔX是场面切换时,被供到比特分配器24上的难度变化检测信号。Di代表累加误差的初始值,Dmax代表累加误差的最大值。这里,将累加误差的最大值Dmax减去累加误差D之差,定义为余量M。
比特分配器24可做到:场面切换后,立刻由它重新决定对应于编码难度X的比特分配数Bt;在同一个场面内,为依次对前一个比特分配数Bt进行更新,而由它进行反馈控制。换句话说,在场面切换后的第一帧内,为了将超过平均目标数Ba的比特数分配给其编码难度X超过平均难度Xa的复杂场面,由它决定一暂时比特分配数Bst,并且若此时累加误差D超过了所规定的值,那么,为了最大限度地将暂时比特分配数Bst减小到平均目标数Ba,而根据累加误差D的大小来对暂时比特分配数Bst进行纠正,再由它最后定出比特分配数Bt。不过,分配给其编码难度X不到平均难度Xa的单调场面的是,低于平均目标数Ba的比特分配数Bt。在同一个场面的帧内,为使累加误差D不超过事先设定好的最大值Dmax,由它依次地对前一个比特分配数Bt进行更新。此时,为能够随着累加误差D逐渐地靠近最大值Dmax,而使比特分配数Bt逐渐地靠近平均目标数Ba,由它定出新的比特分配数Bt。
图2A及图2B用来说明图1所示的编码装置的反馈控制特性,图2A表示比特分配数Bt随时间的变化情况,图2B表示累加误差D随时间的变化情况。
既生比特数Bg,例如是以画面组(GOP)为单位而生成的代码数。此时,设第n个GOP的既生比特数为Bg[n]。这时,第n个GOP的误差比特数d[n]、累加误差D[n]、余量M[n]以及比特分配数Bt[n]分别由下式给出。
d[n]=Bg[n]-Ba … (1)
D[n]=D[n-1]+d[n] … (2)
M[n]=Dmax-D[n] … (3)
Bt[n]=Bt[n-1]-k×(Bg[n-1]-Ba) … (4)
这里,k是由下式而给定的反馈系数。
k=(Bt[0]-Ba)/M … (5)很明显,本发明中的反馈系数k随余量M而变化。比特分配数Bt向平均目标数Ba靠近的快慢,随着余量M、初始比特分配数Bt[0]的不同而不同。
图2A和图2B中的点划线所示的是:式(4)中的反馈系数k为一固定值时的特性。由图可知,累加误差D超过了其最大值Dmax。因此,有可能不能将所希望的记录时间内的图像全部记录到所给定的记录媒体里。针对此情况,若利用本发明,则在任意的时刻t,累加误差D既不会超过其最大值Dmax,此特分配数Bt也不会低于平均目标数Ba。因此,若采用本发明,即可在给定的记录媒体容量下,保证好记录时间。此外,不仅如此,也可以指定累加误差的最小值Dmin,为使累加误差D不低于其最小值Dmin,而不断地对比特分配数Bt进行更新控制。
图3用来说明在图1的编码装置中,对与累加误差D相对应的比特分配数Bt的纠正情况。首先,为给复杂的场面分配超过平均目标数Ba的比特数,由比特分配器24决定一暂时比特分配数Bst。若此时累加误差D超过了所规定的值(例如为0),那么,为了最大限度地将暂时比特分配数Bst减小到平均目标数Ba,再由比特分配器24根据累加误差D的大小,对暂时比特分配数Bst进行纠正,从而定下来比特分配数Bt。此外,当余量M非常大时,将等于平均目标数Ba的比特分配数Bt分配给单调场面,也是可以的。
图4A、图4B及图4C都表示编码难度很高的场面不断连续时,图1的编码装置的工作情况,图4A表示编码难度X随时间的变化情况;图4B表示比特分配数Bt随时间的变化情况;图4C表示累加误差D随时间的变化情况。这里,设Di=0,则余量M的初始值Mi被设为Dmax。由图4A~图4C可知,因为编码开始时,余量M很大,故这时的比特分配数Bt,与编码难度X相对应,比平均目标数Ba大。但是,随着余量M的减小,比特分配数Bt也开始减小。最后,累加误差D达到了最大值Dmax。就这样,当余量M为0时,即使对编码难度X很高的场面,也只分配给它一个平均目标数Ba。这样,因为总代码数不会超过所规定的值,故记录时间得到了保证,并且即使在余量M全被用完的恶劣条件下,也可以得到等同于恒定比特率控制的图像质量。
图5A、图5B及图5C都表示编码难度很高的场面和编码难度很低的场面混在一起时,图1的编码装置的工作情况,图5A表示编码难度X随时间的变化情况;图5B表示比特分配数Bt随时间的变化情况;图5C表示累加误差D随时间的变化情况。这里,设Di=Dmax,则余量的初始值Mi就被设为0。由图5A~图5C可知,因为编码开始时,余量M为0,所以虽然这时是编码难度X很高的场面,也只能被分配到一平均目标数Ba。跟在它后面的编码难度X很低的场面,则被分配到了低于平均目标数Ba的比特数Bt。其结果是累加误差D减小了。也就是说,余量M被积累起来了。当下一个出现的又是编码难度X很高的场面时,可以利用已积累起来的余量M,来进行充分的比特分配。在这样的编码难度很高和编码难度很低的场面混合在一起的普通图像里,余量M时被积累,时被消费,故能够进行对应于场面的编码难度X的可变比特率控制。
也可以根据将编码比特流记录到记录媒体时的预定记录时间Tv[分],来决定累加误差的初始值Di。这里,设记录比率为Rv[bps],例如,
(1)当预定记录时间Tv不到30分时,
Dmax=Rv×30[分]×0.05 … (6)
Mi=Rv×Tv×0.05 … (7)
Rva=Rv×0.95 … (8)
Di=Rv×(30[分]-Tv)×0.05 … (9)
(2)当预定记录时间Tv超过30分时,
Dmax=Rv×30[分]×0.05 … (10)
Mi=Dmax … (11)
Rva=Rv-Mi/Tv … (12)
Di=0 … (13)
这里,Rva为对应于平均目标数Ba的平均目标记录比率。
当预定记录时间Tv不明确(为非预约录像)时,则以由记录媒体的剩余记录容量所计算出来的最大可能记录时间,作为预定记录时间Tv。例如也可以将最大可能记录时间限定在60分钟之内。
如上所述,图1的压缩编码器10采用的是MPEG2方式。采用其他的压缩编码方式也是完全一样的。还可以通过软件来实现图1中的代码数控制器20的一部分功能或者所有的功能。
另外,在上述的例子中,是通过既生比特数Bg来检测编码难度X的,但并不应受限于此,例如也可以通过输入图像信号的空间变化量来检测编码难度,还可以通过帧间的时间变化量来检测编码难度。还有,在上述的例子中,是根据编码难度X的变化来检测场面是否正在切换的,但并不应受限于此,例如在进行帧间预测编码处理时,也可以根据预测误差信号的绝对值之和或者乘方之和来检测场面是否正在切换。