背景技术
在H.264/AVC标准规定的数据压缩技术中有一种熵编码(可变长编码)。熵编码的方式有两种,即,基于上下文的自适应可变长编码(CAVLC,Context-based Adaptive Variable Length Coding)和基于上下文的自适应二进制算术编码(CABAC,Context-based Adaptive Binary Arithmetic Coding)。CABAC是通过将随时间变化的编码对象的出现频率和各符号在编码时的发生概率调整为一致,而进行最佳压缩状态的熵编码的方式。
CABAC编码主要分为两个处理。第一个是称为二进制化(binarization)的处理,该处理将称为语义(Syntax)的需要编码的多进制数据变换为二进制数据;第二个是对二进制化得到的二进制数据计算上下文并进行算术编码的处理。
在算术编码中,对二进制数据的每个比特求出“0”和“1”的出现概率、进行编码处理,同时也更新出现概率。这样,算术编码是以比特为单位的处理,因此算术编码的处理速度一般为1比特/1时钟周期。并且,出现概率是以比特为单位进行相应切换、根据比特值来更新,因此很难在算术编码之前正确获知通过算术编码所得到的编码量。
并且,在H.264/AVC标准中,采用4-2-0格式、且各像素的亮度和色度用8比特表示时,一个宏块的最大编码量为3200比特。对一个宏块进行编码的结果,编码量超过3200比特时,必须改变编码条件对该宏块进行再次编码。编码量超过3200比特时,还有一种方法是选择帧内宏块脉冲编码调制(I_PCM,Intra Macroblock Pulse Coding Modulation)作为mb_type,选择I_PCM数据代替编码数据。由于在实际得到编码数据之前,难以正确获知通过CABAC所得到的编码量,因此,编码对象宏块的最大编码量是否为限制值或限制值以下的判定是在CABAC编码之后进行。
另外,还公开有如下技术:监视输入到算术编码部的数据量,当该数据量以某种处理单位超过阈值时,在编码数据和非压缩数据中选择其一作为图像编码装置输出的数据。其中,编码数据通过对使用与得到该输入数据时所用参数不同的参数得到的输入数据进行算术编码而得到。
图1是表示现有图像编码装置50的功能性结构的方框图。
现有的图像编码装置50是对输入的图像数据进行编码并输出比特流(bit stream)的装置。下面说明图像编码装置50的工作概要。这里,图像数据是有关运动图像的数据,例如:组成运动图像的宏块数据等实体数据、宏块类型(mb_type)等控制信息、及其他属性信息等。
作为编码对象的运动图像数据被输入到运动预测部51、帧内预测部52和I_PCM数据缓存53中。运动预测部51,从包含编码对象块的帧以外的帧中检测与编码对象块相似的块,求出编码对象块和检测出的块之间的差分图像,将差分图像和运动矢量输出到输入选择部54。帧内预测部52,使用相邻块的图像对画面内的编码对象块的图像进行预测,求出编码对象块的图像和预测图像之间的差分图像,将差分图像和预测模式输出到输入选择部54。I_PCM数据缓存53保存所输入运动图像的原图像数据即I_PCM数据。
输入选择部54,从来自运动预测部51的数据和来自帧内预测部52的数据之中选择量少的一方。正交变换部55对输入选择部54所选择的数据进行离散余弦变换(DCT,Discrete Cosine Transform),离散余弦变换为正交变换的一种。量化部56对由正交变换部55得到的DCT系数进行量化。二进制化部57对量化的DCT系数进行二进制化,CABAC编码部59对二进制化得到的二进制数据进行算术编码,输出缓存60保存算术编码后的数据(编码数据)。
I_PCM判定部58,判定从二进制化部57输出的二进制数据的量是否为第1阈值或第1阈值以下,同时,判定从CABAC编码部59输出的编码数据的量是否为第2阈值(例如3200比特)或第2阈值以下。I_PCM判定部58,在二进制数据的量为第1阈值或第1阈值以下、且编码数据的量为第2阈值或第2阈值以下时,决定选择由CABAC编码部59所得到的编码数据,作为图像编码装置50输出的比特流。与此相对,二进制数据的量大于第1阈值时,或者编码数据的量大于第2阈值时,I_PCM判定部58决定选择由I_PCM数据缓存53所保存的I_PCM数据,作为图像编码装置50输出的比特流。输出选择部61按照I_PCM判定部58的决定,将编码数据或I_PCM数据输出到图像编码装置50的外部。
以上所述记载在特许文献“日本特开2004-135251号公报”中。
但是,在H.264/AVC标准中,对处理对象宏块进行运动预测及帧内预测时,使用处理对象宏块之前的宏块信息。因而,如果按照现有技术,在CABAC之后进行处理对象宏块的最大编码量是否为限制值或限制值以下的判定,则在处理对象宏块的CABAC编码结束之前,不能对处理对象宏块的下一个宏块进行运动预测及帧内预测。也就是说,现有的图像编码装置存在不能高速(实时)处理图像数据的问题。
发明内容
有鉴于此,本发明的目的在于提供一种图像编码装置,该装置能够进行熵编码且高速处理图像数据。
为了解决上述问题且达到上述目的,本发明提供一种图像编码装置,用于对图像数据进行编码,该装置包括:
运动预测单元,用于在图像之间选择相对于输入图像的每像素差分绝对值之和最小的参考图像,检测所述输入图像相对于所述参考图像的运动矢量;
帧内预测单元,用于在图像内选择相对于输入图像的每像素差分绝对值之和最小的预测图像,确定用于生成所述预测图像的预测模式;
输入选择单元,用于比较运动合计和帧内合计,在所述运动合计和所述帧内合计之中选择小的一方,其中,所述运动合计通过对所述运动矢量的编码值和运动残差进行加法运算得到,所述运动残差表示所述输入图像与所述参考图像之间的差,所述帧内合计通过对所述预测模式的编码值和帧内残差进行加法运算得到,所述帧内残差表示所述输入图像与所述预测图像之间的差;
正交变换单元,用于对差分图像进行正交变换,其中,所述差分图像是由所述输入图像相对于所述参考图像或所述预测图像的每像素的差分形成,所述参考图像或所述预测图像与所述输入选择单元所选择的合计相对应;
量化单元,用于对由所述正交变换单元得到的值进行量化;
二进制化单元,用于对由所述量化单元得到的值进行二进制化;
算术编码单元,用于对由所述二进制化单元得到的二进制数据进行算术编码;
缓存,用于保存所述输入图像对应的I_PCM数据;
比较单元,用于比较成本和第1阈值,其中,所述成本是所述运动合计和所述帧内合计之中小的一方;
输出选择单元,用于在所述成本为所述第1阈值或所述第1阈值以下时,选择由所述算术编码单元得到的编码数据,作为向所述图像编码装置外部输出的数据,在所述成本大于所述第1阈值时,选择由所述缓存保存的所述I_PCM数据,作为向所述图像编码装置外部输出的数据;
输出单元,用于按照所述输出选择单元的选择,将所述编码数据或所述I_PCM数据输出到所述图像编码装置外部。
本发明的图像编码装置也可以进一步包括:量化幅度变更单元,用于比较所述成本和小于所述第1阈值的第2阈值,在所述成本大于所述第2阈值且为所述第1阈值或所述第1阈值以下时,增大所述量化单元使用的量化幅度。所述量化单元使用基于所述量化幅度变更单元控制的量化幅度,对由所述正交变换单元得到的值进行量化。
本发明的图像编码装置也可以进一步包括:量化幅度确定单元,用于比较第3阈值和由所述二进制化单元得到的二进制数据的量,根据所述二进制数据的量和所述第3阈值之间大小关系的程度,确定所述量化单元使用的量化幅度;阈值确定单元,用于根据所述量化幅度确定单元确定的量化幅度,确定所述第1阈值。所述比较单元比较所述成本与所述阈值确定单元确定的所述第1阈值。所述量化单元使用由所述量化确定单元确定的量化幅度,对由所述正交变换单元得到的值进行量化。
本发明的图像编码装置也可以进一步包括:方差计算单元,用于计算所述输入图像的亮度方差值和所述输入图像的色度方差值中的至少一个。所述阈值确定单元利用由所述方差计算单元得到的值确定所述第1阈值。
另外,也能够实现:将本发明的图像编码装置的特征性结构单元作为步骤的内容发送方法,或是使计算机执行这些步骤的程序,或是包含上述特征性结构单元的集成电路。上述程序能够通过CD-ROM等存储介质、通信网络等传输介质流通。
本发明能够提供能进行熵编码且高速处理图像数据的图像编码装置。
本发明的图像编码装置,根据成本和第1阈值大小比较的结果,选择编码数据和I_PCM数据中的任意一个作为输出到图像编码装置外部的数据,其中,成本是运动合计和帧内合计中小的一方。因此,运动预测单元和帧内预测单元、输入选择单元、正交变换单元、以及量化单元能够进行流水线(pipeline)处理。
具体实施方式
下面,参照附图对本发明的具体实施方式进行说明。
首先,利用图2对本实施方式的图像编码装置10的结构进行说明。
图2是本实施方式的图像编码装置10的结构图。本实施方式的图像编码装置10是对输入的运动图像数据进行编码并输出比特流的装置,包括:图像编码部100、I_PCM数据缓存103、I_PCM判定部120、输出选择部107、熵编码部140和输出部108。
图像编码部100是对输入的图像数据进行编码的结构部,具有:运动预测部101、帧内预测部102、输入选择部104、正交变换部105和量化部106。
运动预测部101,对于由输入的图像数据组成的各个编码对象宏块,在图像之间选择相对于编码对象宏块的每像素差分绝对值之和最小的参考宏块,检测编码对象宏块相对于参考宏块的运动矢量。并且,运动预测部101检测编码对象宏块相对于参考宏块的每像素的差分值。下面为了简化说明,将其每像素的差分值所形成的图像称为“运动差分图像”。并且,将编码对象宏块和参考宏块之间的每像素差分绝对值之和称为“运动绝对值和”。此外,编码对象宏块是输入图像的一个例子,参考宏块是参考图像的一个例子,其中,输入图像和参考图像均为本发明图像编码装置运动预测单元的处理对象。
帧内预测部102,对于由输入的图像数据组成的各个编码对象宏块,在图像内从多个预测候选宏块中选择相对于编码对象宏块的每像素差分绝对值之和最小的预测宏块,确定用于生成预测宏块的预测模式。并且,帧内预测部102检测编码对象宏块相对于预测宏块的每像素的差分值。下面为了简化说明,将其每像素的差分值所形成的图像称为“帧内差分图像”。并且,将编码对象宏块和预测宏块之间的每像素差分绝对值之和称为“帧内绝对值和”。此外,编码对象宏块是输入图像的一个例子,预测宏块是预测图像的一个例子,其中,输入图像和预测图像均为本发明图像编码装置帧内预测单元的处理对象。
输入选择部104,比较运动合计和帧内合计,在运动合计和帧内合计之中选择小的一方,其中,运动合计通过对运动矢量的编码值与运动绝对值和进行加法运算得到,帧内合计通过对预测模式的编码值与帧内绝对值和进行加法运算得到。并且,输入选择部104,在选择运动合计时,将运动差分图像向正交变换部105输出的同时,将运动合计作为成本向I_PCM判定部120输出;在选择帧内合计时,将帧内差分图像向正交变换部105输出的同时,将帧内合计作为成本向I_PCM判定部120输出。
正交变换部105对来自输入选择部104的差分图像(运动差分图像或帧内差分图像)进行正交变换。例如,正交变换部105对来自输入选择部104的差分图像进行离散余弦变换(DCT)。量化部106对由正交变换部105得到的值(例如DCT系数)进行量化。
I_PCM数据缓存103保存输入图像对应的I_PCM数据。
I_PCM判定部120保存有第1阈值,对来自输入选择部104的成本和第1阈值的大小进行比较,其中,第1阈值用于判定一个宏块的编码量是否超过规定量、例如3200比特等。然后,I_PCM判定部120,(A)当来自输入选择部104的成本为第1阈值或第1阈值以下时,指示输出选择部107选择由量化部106得到的数据;(B)当来自输入选择部104的成本大于第1阈值时,指示输出选择部107选择I_PCM数据缓存103中保存的I_PCM数据。
输出选择部107,按照来自I_PCM判定部120的指示,在由量化部106得到的数据和I_PCM数据缓存103保存的I_PCM数据之中选择其一,将选择的数据输出到熵编码部140。
熵编码部140是对来自输出选择部107的数据进行算术编码的结构部,具有二进制化部141和CABAC编码部142。二进制化部141对来自输出选择部107的数据进行二进制化,CABAC编码部142对由二进制化部141得到的二进制数据进行算术编码。
输出部108,将来自熵编码部140的经过算术编码的数据(编码数据)或来自输出选择部107的I_PCM数据,输出到图像编码装置10的外部。
另外,运动预测部101是本发明图像编码装置的运动预测单元的一个例子,帧内预测部102是本发明图像编码装置的帧内预测单元的一个例子,输入选择部104是本发明图像编码装置的输入选择单元的一个例子。正交变换部105是本发明图像编码装置的正交变换单元的一个例子,量化部106是本发明图像编码装置的量化单元的一个例子,二进制化部141是本发明图像编码装置的二进制化单元的一个例子。CABAC编码部142是本发明图像编码装置的算术编码单元的一个例子,I_PCM数据缓存103是本发明图像编码装置的缓存的一个例子,I_PCM判定部120是本发明图像编码装置的比较单元的一个例子。输出选择部107是本发明图像编码装置的输出选择单元的一个例子,输出部108是本发明图像编码装置的输出单元的一个例子。
下面,利用图3对本实施方式的图像编码装置10的工作进行说明。
图3是对于各编码对象宏块(MB1、MB2和MB3),组成图像编码部100的运动预测部101、帧内预测部102、输入选择部104、正交变换部105和量化部106各自工作的时序图。下面,假定最初处理的是编码对象宏块MB1,其次处理的是编码对象宏块MB2,再其次处理的是编码对象宏块MB3。
首先,在t1期间,运动预测部101选择相对于编码对象宏块MB1的每像素差分绝对值之和最小的参考宏块,检测编码对象宏块MB1相对于参考宏块的运动矢量。运动预测部101还检测编码对象宏块MB1相对于参考宏块的每像素的差分值。并且,运动预测部101在计算运动绝对值和的同时,计算运动合计,其中,运动绝对值和是编码对象宏块MB1和参考宏块之间每像素的差分绝对值之和,运动合计通过对检测出的运动矢量的编码值与运动绝对值和进行加法运算得到。然后,运动预测部101向输入选择部104输出:由编码对象宏块MB1相对于参考宏块的每像素的差分值所形成的图像(运动差分图像)、编码对象宏块MB1的运动矢量和编码对象宏块MB1的运动合计。
并且,在t1期间,帧内预测部102,从多个预测候选宏块中选择相对于编码对象宏块MB1的每像素差分绝对值之和最小的宏块作为预测宏块,确定用于生成预测宏块的预测模式。帧内预测部102还检测编码对象宏块MB1相对于预测宏块的每像素的差分值。并且,帧内预测部102在计算帧内绝对值和的同时,计算帧内合计,其中,帧内绝对值和是编码对象宏块MB1和预测宏块之间每像素的差分绝对值之和,帧内合计通过对已确定的预测模式的编码值与帧内绝对值和进行加法运算得到。然后,帧内预测部102向输入选择部104输出:由编码对象宏块MB1相对于预测宏块的每像素的差分值所形成的图像(帧内差分图像)、编码对象宏块MB1的预测模式和编码对象宏块MB1的帧内合计。
并且,在t1期间,I_PCM数据缓存103保存编码对象宏块MB1的I_PCM数据。
接着,在t2期间的前半段,输入选择部104比较来自运动预测部101的编码对象宏块MB1的运动合计和来自帧内预测部102的编码对象宏块MB1的帧内合计,在运动合计和帧内合计之中选择小的一方。输入选择部104在选择运动合计时,将编码对象宏块MB1的运动合计作为成本向I_PCM判定部120输出,同时,将编码对象宏块MB1的运动差分图像向正交变换部105输出。输入选择部104在选择帧内合计时,将编码对象宏块MB1的帧内合计作为成本向I_PCM判定部120输出,同时,将编码对象宏块MB1的帧内差分图像向正交变换部105输出。
并且,在t2期间的前半段,I_PCM判定部120比较来自输入选择部104的成本和第1阈值的大小,当成本为第1阈值或第1阈值以下时,指示输出选择部107选择由量化部106得到的编码对象宏块MB1的量化数据;当成本大于第1阈值时,指示输出选择部107选择I_PCM数据缓存103中保存的编码对象宏块MB1的I_PCM数据。并且,I_PCM判定部120将比较结果输出到运动预测部101和帧内预测部102。从而,当输入选择部104选择编码对象宏块MB1的帧内合计时,在t2期间的前半段,相对于编码对象宏块MB1的预测宏块的宏块类型(mb_type)被确定,因此帧内预测部102能够在t2期间的后半段对编码对象宏块MB2进行与t1期间对编码对象宏块MB1进行的处理(帧内预测处理)相同的处理。
在t2期间,运动预测部101对编码对象宏块MB2进行与t1期间对编码对象宏块MB1进行的处理(运动预测处理)相同的处理。
在t2期间的后半段,帧内预测部102对编码对象宏块MB2进行帧内预测处理。
并且,在t2期间,I_PCM数据缓存103保存编码对象宏块MB2的I_PCM数据。
接着,在t3期间的前半段,输入选择部104和I_PCM判定部120对编码对象宏块MB2,进行在t2期间前半段它们对编码对象宏块MB1进行的处理(选择处理和比较处理)。
在t3期间,运动预测部101对编码对象宏块MB3进行运动预测处理,在t3期间的后半段,帧内预测部102对编码对象宏块MB3进行帧内预测处理。
并且,在t3期间,正交变换部105对来自输入选择部104的编码对象宏块MB1的差分图像(运动差分图像或帧内差分图像)进行正交变换。
并且,在t3期间,I_PCM数据缓存103保存编码对象宏块MB3的I_PCM数据。
接着,在t4期间,运动预测部101对编码对象宏块MB4进行运动预测处理。在t4期间的前半段,输入选择部104和I_PCM判定部120对编码对象宏块MB3进行选择处理和比较处理。在t4期间的后半段,帧内预测部102对编码对象宏块MB4进行帧内预测处理。在t4期间,正交变换部105对来自输入选择部104的编码对象宏块MB2的差分图像(运动差分图像或帧内差分图像)进行正交变换;量化部106对编码对象宏块MB1的由正交变换部105得到的值(例如DCT系数)进行量化;I_PCM数据缓存103保存编码对象宏块MB4的I_PCM数据。
此后也与上述情况一样,组成图像编码部100的运动预测部101、帧内预测部102、输入选择部104、正交变换部105和量化部106,各自在每个期间轮流对编码对象宏块MB进行流水线处理。
例如,在t5期间,运动预测部101对编码对象宏块MB5进行运动预测处理,帧内预测部102对编码对象宏块MB5进行帧内预测处理。并且,输入选择部104和I_PCM判定部120对编码对象宏块MB4进行选择处理和比较处理。并且,正交变换部105对来自输入选择部104的编码对象宏块MB3的差分图像(运动差分图像或帧内差分图像)进行正交变换,量化部106对编码对象宏块MB2的由正交变换部105得到的值(例如DCT系数)进行量化。I_PCM数据缓存103保存编码对象宏块MB5的I_PCM数据。
对于各编码对象宏块,在量化部106进行该编码对象宏块的量化处理之后,输出选择部107按照I_PCM判定部120的指示,在由量化部106得到的数据和I_PCM数据缓存103保存的I_PCM数据中选择其一。输出选择部107选择由量化部106得到的数据时,将该数据输出到熵编码部140。并且,输出选择部107将选择结果输出到输出部108。
在熵编码部140,二进制化部141对来自输出选择部107的数据进行二进制化,CABAC编码部142对由二进制化部141得到的二进制数据进行算术编码。
输出部108按照来自输出选择部107的选择结果,向图像编码装置10的外部输出:来自熵编码部140的经过算术编码的数据(编码数据)、或来自输出选择部107的I_PCM数据。
如上所述,在各期间的前半段,I_PCM判定部120,比较来自输入选择部104的成本和第1阈值的大小,当成本为第1阈值或第1阈值以下时,指示输出选择部107选择由量化部106得到的编码对象宏块MB1的量化数据;当成本大于第1阈值时,指示输出选择部107选择I_PCM数据缓存103中保存的编码对象宏块MB1的I_PCM数据。即,I_PCM判定部120,当成本为第1阈值或第1阈值以下时,指示输出选择部107选择编码数据作为向图像编码装置10的外部输出的数据;当成本大于第1阈值时,指示输出选择部107选择I_PCM数据作为向图像编码装置10的外部输出的数据。因此,组成图像编码部100的运动预测部101、帧内预测部102、输入选择部104、正交变换部105和量化部106各自能够在每个期间轮流对编码对象宏块MB进行流水线处理。其结果,进行熵编码的图像编码装置10能够高速处理图像数据。
另外,在上述实施方式中,使用了运动绝对值和,作为表示编码对象宏块和参考宏块之间的差的运动残差的例子,运动绝对值和是编码对象宏块和参考宏块之间每像素的差分绝对值之和。但是,运动残差也可以是对运动差分图像进行空间频率变换得到的值。同样,使用了帧内绝对值和,作为表示编码对象宏块和预测宏块之间的差的帧内残差的例子,帧内绝对值和是编码对象宏块和预测宏块之间每像素的差分绝对值之和。但是,帧内残差也可以是对帧内差分图像进行空间频率变换得到的值。并且,运动残差和帧内残差中至少有一个也可以通过输入选择部104得到。
并且,如图4所示,图象编码装置10也可以置换为图像编码装置20。图像编码装置20在图像编码装置10所包括的结构部的基础上,还包括量化幅度变更部220。量化幅度变更部220,保存比I_PCM判定部120保存的第1阈值小的第2阈值,对来自输入选择部104的成本和第2阈值进行比较,当成本大于第2阈值且为第1阈值或第1阈值以下时,增大量化部106使用的量化幅度。量化部106使用基于量化幅度变更部220控制的量化幅度进行量化处理。从而,能够减少由量化部106得到的量化数据的量。
并且,如图5所示,图象编码装置10也可以置换为图像编码装置30。图像编码装置30在图像编码装置10所包括的结构部的基础上,还包括:量化幅度变更部220、量化幅度确定部310和阈值确定部320。量化幅度确定部310,保存有第3阈值(目标编码量),监视由二进制化部141得到的二进制数据的量,比较二进制数据量和第3阈值,根据二进制数据量和第3阈值之间大小关系的程度,确定量化部106使用的量化幅度。例如,二进制数据量大于第3阈值时,量化幅度确定部310增大量化部106使用的量化幅度,使得到的二进制数据的量减少。阈值确定部320,保存有图6所示的表格,参考该表格选择由量化幅度确定部310确定的量化幅度对应的第1阈值。量化幅度变更部220,使量化部106使用由量化幅度确定部310确定的量化幅度。I_PCM判定部120比较成本和由阈值确定部320确定的第1阈值,量化部106使用基于量化幅度变更部220控制的量化幅度进行量化处理。这样,I_PCM判定部120选择编码数据和I_PCM数据中的任何一个作为向图像编码装置30外部输出的数据时,不仅考虑成本,而且也考虑量化幅度来进行选择。从而使上述选择更接近于使用实际得到的编码量时的选择。
并且,如图7所示,图象编码装置30也可以置换为图像编码装置40。图像编码装置40在图像编码装置30所包括的结构部的基础上,还包括方差计算部420。方差计算部420计算由输入的图像数据组成的编码对象宏块的亮度的方差值。阈值确定部320也按照由方差计算部420得到的亮度的方差值确定第1阈值。从而,能够确定出不仅考虑亮度而且还考虑色度的适当的第1阈值。也可以是:方差计算部420计算编码对象宏块的色度的方差值,阈值确定部320也按照由方差计算部420得到的色度的方差值确定第1阈值。
本发明的图像编码装置作为对图像数据进行编码的装置是有用的。