对编码视频数据选择编码类型和预测模式的制作方法

文档序号:7760136阅读:178来源:国知局
专利名称:对编码视频数据选择编码类型和预测模式的制作方法
技术领域
本发明涉及对于编码视频数据选择编码类型和预测模式。
背景技术
视频流是由一列视频帧所组成的,其中每帧由多个宏块组成。每个宏块典型地是 16X16的像素阵列,尽管其它大小的宏块也是可能的。视频编解码器(压缩器-解压缩 器)是压缩算法的软件、硬件或者软件和硬件结合的实现,其中所述的压缩算法用来编码 /压缩以及解码/解压缩视频数据流以减小流的大小,为了能更快地传输以及更小的存储 空间。虽然有损耗,在压缩视频流的二进制数据的同时,视频编解码器试图保持图像的质 量。普通的视频编解码器的实例包括WMV、RealVideo以及压缩标准,诸如MPEG_2、MPEG_4、 H. 261、H. 263 和 H. 264 的实现。在H. 264压缩标准下,视频帧的宏块可以在内部编码为16X16的像素阵列,该阵 列的像素值是利用以前编码的宏块计算的值预测的。16X16的宏块也可以内部编码为16 个4 X 4的像素阵列,其中每个4 X 4的阵列中的像素值是利用以前编码的4 X 4的阵列计算 的值预测的。存在4种可能的16X16阵列(亮度(Iuma)模块)内部预测模式以及9种可 能的4X4阵列(亮度模块)内部预测模式。同样,在编码宏块中,必需做出两个决定(选择)1)是否该宏块将被编码为 16X16阵列(称作16X 16编码)或者被编码为16个4X4阵列(称作4X4编码),以及 2)用于编码宏块的预测模式。例如,如果决定将宏块编码为16X16阵列,也必须决定将使 用16X16阵列的四个预测模式中的哪一个。如果决定将宏块编码为16个4X4阵列,也必 须决定对于16个4X4阵列的每个,将使用4X4阵列的9个预测模式中的哪一个。在这里 步骤1称作编码类型选择,并且步骤2称作预测模式选择。利用成本函数来做出编码类型选择以及预测模式选择。例如,成本函数典型地用 于决定是否将宏块编码为16X16阵列或编码为16个4X4阵列,其中选择具有最低成本的 编码的类型(16X16或4X4编码)。成本典型地等于失真或者失真的加权平均加上由预测 模式生成的比特的数量的估计,其中失真和/或比特数量的增加会增加成本。失真反映了 原始像素值和预测的(或编码的)值之间的差异,并且失真可以以不同的方法来测量。例 如,失真可以测量为原始像素值和预测的(或编码的)值之间的绝对差值的和。选择宏块的最优编码类型(16X 16或4X4编码)以及最优预测模式的穷举搜索 方法包括确定宏块中所有4个16X 16预测模式的以及16个4X4模块的9种4X4预测模 式的所有组合的成本,其中选定成本最低的16X16预测模式或4X4预测模式的特定组合。 对于每个宏块,穷举搜索方法需要考虑4X4预测模式的9~16不同的组合,使得穷举搜索方 法实际上不可实行。
同样,典型地执行下列的操作以确定宏块的编码类型和预测模式1)计算所有4种可能16 X 16预测模式的成本。2)对于每个16个4X4模块,选择具有最小成本的预测模式(在9种预测模式 中),然后计算结果的组合的总成本(例如,16种确定的成本的和)。3)将在步骤1确定的成本与在步骤2确定的成本进行对比,并选择最低的一个。 该选择提供了编码的类型选择以及预测模式选择。然而传统的方法依然包括确定4X4预测模式的9X 16种不同的组合的成本加上 4个16X16预测模式的成本。

发明内容
在一些实施方式中,提供了一种更有效的方法来确定视频帧中宏块的编码类型的 选择以及预测模式的选择。在一些实施方式中,一般的方法1)利用编码类型选择算法(基 于容易计算的宏块的属性)选择最初为宏块考虑的编码类型(16X16或4X4),2)如果在 步骤1选择了 16X16编码类型,则基于失真阂值,利用传统的方法或者改进的16X16预 测模式搜索算法,考虑可以用在宏块上的四种16X16预测模式,3)如果在步骤1中选择了 4X4编码类型,基于预测模式之间的位置关系,利用传统的方法或者改进的4X4预测模式 搜索算法,选择用于宏块的16个4X4模块的每个的4X4预测模式。


图1是选择像素宏块的编码类型和预测模式的一般方法的流程图。图2是用于选择像素宏块的编码类型的编码类型选择方法的流程图。图3是用于选择16X 16像素宏块的预测模式的预测模式搜索方法的流程图。图4描述4X4阵列的9种预测模式之间的逻辑/位置关系的概念图表。图5是用于选择宏块4X4阵列的预测模式的4X4预测模式搜索方法的流程图。图6是用于选择宏块4X4阵列的预测模式的可替换的4X4预测模式搜索方法的 流程图。图7表示计算机系统,利用该计算机系统实施本发明的一些实施方式。
具体实施例方式序列号为60/583447,于2004年6月27日公开的美国临时专利申请“编码和解码 图像”在此通过引用清楚地结合。在以下的描述中,为了解释,阐述了多个细节。但是,本领域的普通技术人员将理 解不用这些特定的细节也可以实现本发明。在其它的实例中,为了不使不必要的细节描述 模糊本发明的说明,已知的结构和设备以框图的形式表示。在一些实施方式中,本发明提供了一种更有效的方法来确定视频帧中宏块的编码 类型的选择以及预测模式的选择。在一些实施方式中,一般的搜索算法执行以下操作1)利用编码类型选择算法(基于容易计算的宏块的属性)选择最初为宏块考虑的 编码类型(16X16或4X4)。编码类型选择算法在下面部分I中进行讨论。2)如果在步骤1选择了 16X16编码模式,基于失真阈值,利用传统的方法或者改
5进的16 X 16预测模式搜索算法,考虑(S卩,测试)可以用在宏块上的四种16 X 16预测模式。 注意在16X16预测模式搜索算法的一种特定情形中,也可以选择4X4编码类型。该步骤 在以下部分II中进行讨论。3)如果在步骤1中选择了 4X4编码类型,基于预测模式之间的位置关系(在以 下部分III中对其进行讨论),利用传统的方法或者改进的4X4预测模式搜索算法,选择 4X4预测模式用于宏块的每个16个4X4模块。注意在搜索算法的步骤1中,如果编码类型选择算法选择16 X 16编码类型用于初 始考虑,最终选择的编码类型可以是16X16编码类型或4X4编码类型。相反,如果编码类 型选择算法选择4X4编码类型用于初始考虑,则将4X4编码类型有效地选择为宏块的编 码类型。如果选择16X16编码类型用于初始考虑,传统的方法或者改进的16X16预测模 式搜索算法用于确定宏块的预测模式。如果选择4X4编码类型用于初始考虑,则传统的方 法或者改进的4X4预测模式搜索算法用于确定宏块的预测模式。同样,根据由搜索算法选 择的用于初始考虑的编码类型,使用不同的搜索算法(传统的或改进的)来确定预测模式。图1是选择像素宏块的编码类型和预测模式的一般方法100的流程图。在一些实 施方式中,通过设置来编码视频帧的软件和/或硬件实现一般方法100。当其接收(在102) 像素宏块时,该方法开始。在一些实施方式中,宏块是16X16像素阵列,而在其它的实施方 式中,该宏块是不同尺寸的像素阵列。在一些实施方式中,将该宏块分成4个8 X 8阵列或 16个4 X 4阵列,而在其它的实施方式中,将宏块分成不同尺寸的块/阵列。利用编码类型选择方法200(以下参照附图2进行讨论),该方法然后选择(在 105)最初为宏块考虑的编码类型(16X16或4X4)。该方法然后确定(在110)是否已经 选择了 4X4编码类型。如果是,则该方法随后利用传统的方法、改进的4X4预测模式搜索 方法500 (以下参照附图5进行讨论),或者可选4X4预测模式搜索方法600 (以下参照附 图6进行讨论),选择(在115)宏块的16个4X4模块的每个的预测模式。如果该方法确定(在110-否)没有选择4X4编码类型,则该方法选择(在 120) 16X16预测模式(利用传统的方法或改进的16X 16预测模式搜索方法300,以下将参 照附图3进行讨论)或4X4编码类型。该方法然后确定(在125)是否已经选择了 4X4 编码类型(在120)。如果是,该方法继续步骤115,其中在步骤115选择宏块的16个4X4 模块的每个的预测模式。如果该方法确定(在125-否)没有选择4X4编码类型,这表示 已经选择了特定的16X16预测模式。然后该方法结束。部分I 编码类型选择算法该部分描述了一般搜索算法的步骤1的编码类型选择算法。编码类型选择算法选 择最初为宏块考虑的编码类型(16X16或4X4)并从而确定哪个预测模式(16X16模式或 4X4模式)是最初为宏块考虑的。编码类型选择算法利用易于确定的宏块的属性。编码类型选择算法执行下列操作1)将宏块分成4个8 X 8模块。2)计算每个8X8模块的方差,并将其与预定的阂值进行对比。例如,可以将预定 的阈值设置成等于帧中所有的8X8模块平均方差,在所述帧中包括宏块。可以确定8X8模 块的方差,例如通过a)确定模块中的所有像素值的平均值,b)为模块中的每个像素确定 (像素值-平均值)~2,以及c)对在步骤b确定的所有值求和(即,对模块中的所有像素的确定的值求和)。3)确定宏块中具有低于预定阈值的方差的8X8模块的数量(其中方差是用于确 定是否将宏块编码为16X 16模块或4X4模块的属性)。4)如果所有的4个8X8模块具有低于预定阈值的方差,则为初始考虑选择 16X16编码类型。注意,如果16X16编码类型被选择为初始考虑,则最终选择的编码类型 可以是16X16编码类型或4X4编码类型。可以利用传统的方法或改进的16X16预测模 式搜索算法(如以下部分II中所述),选择用在宏块上的16X 16预测模式。5)如果4个8 X 8模块的任一个具有超过预定阈值的方差,则选择4 X 4编码类型。 同样,利用传统的方法或者改进的4X4预测模式搜索算法(如以下部分II所述),来确定 将用在宏块的16个4X4模块的每个上的4X4预测模式。注意当用在编码进程的量化步骤中使用的量化参数值相对高时(例如,高于34), 编码类型选择算法的操作稍微偏离上述的说明。在这些实施方式中,预定的阈值由取决于 量化参数值(QP)的因子来依比例确定,使得当量化参数值增加时,预定的阂值就增加。在 一些实施方式中,定比的因子由以定比的方程的形式确定(l+k(QP-34)),其中k是常量。 在其它的实例中,定比的因子由另+个定比方程确定。预定的阈值乘以被确定的定比因子 以生成成比例的阈值。在这些实施方式中,如果4个8X8模块的任一个具有超过成比例的阂值的方差, 则将宏块编码为16个4X4模块。可以利用传统的方法或本发明的方法(诸如改进的4X4 预测模式搜索算法)来做出选择。然而,如果确定宏块的所有的4个8X8模块具有低于成 比例的阈值的方差,可以将宏块编码为16X16模块或编码为16个4X4模块。可以利用传 统的方法或改进的16X 16预测模式搜索算法(如以下部分II所述),选择16X 16预测模 式用在宏块上。如果选择4X4编码类型优于已选定的16X16预测模式,则可以利用传统 的方法或本发明的方法(诸如改进的4X4预测模式搜索算法)来选择4X4预测模式。附图2是用于选择像素宏块的编码类型的编码类型选择方法200的流程图。在一 些实施方式中,方法200是由设计用来编码视频帧的软件和/硬件来实现的。在一些实施 方式中,编码类型选择方法200包括附图1的步骤105。方法200从确定宏块的阈值方差 (在205)开始。在一些实施方式中,将阈值方差设置成等于帧中的所有8X8模块的平均 方差,在所述的帧中包括有宏块(如上所述)。在另外的实施方式中,当用在编码进程的量 化步骤的量化参数值相对高时,预定的阈值方差由取决于量化参数值的因子来依比例确定 (如上所述)。该方法然后将宏块分成4个8X8模块(在210)并且确定4个8X8模块的每个的 方差(在215)。该方法然后确定是否所有的4个8X8模块的方差低于阈值方差(在220)。 如果是,则该方法选择宏块的16X16编码类型(在225),并且结束。如果不是,则该方法选 择宏块的4X4编码类型(在230),并且结束。部分II 16X 16预测模式搜索算法在一般的搜索算法的步骤1之后,如果16X16编码类型已被选择为初始考虑,则 然后对16X16预测模式进行测试。该选择描述了一般搜索算法的步骤2。在H. 264编解码 标准下,存在四个可能的16 X 16内部预测模式来从DC、V (垂直)、H(水平)以及P (平面 的)中选择。在一些实施方式中,使用传统的方法来选择16X16预测模式(例如,通过确
7定4个16X 16预测模式的每个的成本并选择最低成本的模式)。在其它的实施方式中,基 于由预测模式导致的失真,·使用改进的16X 16预测模式搜索算法来考虑(即测试)宏块 的16X16预测模式。在一些实施方式中,16X 16预测模式搜索算法使用传统的方法来确定由特定的预 测模式导致的失真,所述的特定的预测模式用在了当前处理的宏块中。在传统的方法下, 失真的确定是由1)从邻接的以前编码的宏块检索像素值,2)从检索到的像素值获得新的 值,3)利用获得的值计算当前处理的宏块的预测值,以及4)确定当前处理的宏块的原始像 素值和计算的预测值之间的失真。利用传统的方法来确定失真是耗费时间的。在其它的实施方式中,16X 16预测模式搜索算法利用更快的估计方法来确定由特 定的预测模式导致的失真,所述的特定的预测模式用在了当前处理的宏块中。该估计方法 提供对预测值的估计(评估)并且然后确定被估计的预测值的失真,其中所述的预测值是 由特定的预测模式生成的。在估计方法下,利用来自于当前处理的宏块自身的像素值来确定预测值,假定当 前处理的宏块在边界处的像素值与邻接的宏块的邻近的像素值相似。由于所使用的来自于 当前处理宏块的像素值不同于来自于其它宏块的像素值,这减小了检索的时间,所以利用 估计方法确定失真耗费的时间较少。利用估计方法显著减小了需要确定精度损失较低的失 真值的时间。在一些实施方式中,估计方法的伪码如下choosel6X 16mode (){stepl //DC 预测pred =当前宏块的左列和上排的像素平均foreach 4X4block{SAD_DC = sad (4X4block, pred);if (SAD_DC > Τ){bail and goto step2 ;}
}choose 16X16DC mode and returnst印2 H垂直预测foreach 4X4block{SAD_V = 0 ;foreach column in the 4X4block{
prod一当前宏块的该列的上排的像素值
SAD V+一sad(4×4block column,prod);
}
SAD V>>一4
if(SAD V>/)
{
bai l and goto step3;
}
}
choose 16×16V and return
Step 3
//水平预测
foreach 4×4block
{
SAD H一0
foreach r。W in the 4×4block
{
prod一当前宏块的该排的左列的像素值
SAD H+一sad(4×4block r。W,prod);
}
SAD H>>一4
if(SAD H>/)
{
choose 16×16planar and 4×4modes and return
}
}
choose 16×16H and return
}
不论用什么方法计算特定预测模式的失真,16×16预测模式搜索算法执行下列操作
1)测试16×16DC预测模式[oloo] a)确定由16×16DC预测模式导致的宏块的每个4×4模块中的失真。
b)如果每个4×4模块中的失真低于预定的阂值,则选择16×16DC预测模式作为该宏块的预测模式,并且16×16预测模式搜索算法结束。[o102] C)如果任一个4×4模块中的失真超过预定的阂值,则16×16预测模式搜索算法继续到步骤2。[o103] 2)测试16×16V预测模式[o104] a)确定由16×16V预测模式导致的宏块的每个4×4模块中的失真。[o105] b)如果每个4×4模块中的失真低于预定的阂值,则选择16×16V预测模式作为该宏块的预测模式,并且16X 16预测模式搜索算法结束。c)如果任一个4X4模块中的失真超过预定的阈值,则16X16预测模式搜索算法 继续到步骤3。3)测试16 X 16H预测模式a)确定由16X16H预测模式导致的宏块中每个4X4模块的失真。b)如果每个4X4模块的失真低于预定的阈值,则选择16X16H预测模式作为该宏 块的预测模式,并且16X 16预测模式搜索算法结束。c)如果任一个4X4模块中的失真超过预定的阈值,则16X16预测模式搜索算法 考虑16X 16P预测模式以及4X4编码类型。在一些实施方式中,通过利用4X4预测模式 搜索算法(在以下部分III讨论),使得两个上述选项之间的选择变得容易。在其它的实施 方式中,利用传统的方法(例如通过确定16X16P预测模式的成本和利用4X4编码类型得 到的最低成本并且选择具有最低成本的选项)来在两个上述选项之间做出选择。图3是16 X 16预测模式搜索方法300的流程图,用于选择16 X 16像素宏块的预 测模式。在一些实施方式中,该方法300是由设置来编码视频帧的软件和/或硬件来实现 的。在一些实施方式中,编码类型选择方法300包括图1的步骤120。在一些实施方式中, 16X16预测模式搜索方法利用传统的方法或改进的估计方法来确定宏块中由特定的预测 模式(如上所述)导致的4X4模块的失真。方法300从确定由16X 16DC预测模式导致的宏块的16个4X4模块中的每个的 失真开始(在305)。该方法然后确定由16X16DC预测模式导致的所有4X4模块中的失真 是否低于预定的阈值失真(在310)。如果是,就选择16X16DC预测模式作为宏块的预测模 式(在315),并且该方法结束。如果该方法300确定由16 X 16DC预测模式导致的任一个4X4模块中的失真不低 于预定的阈值失真(在310-否),则该方法确定由16X16V预测模式导致的宏块的16个 4 X 4模块的每个中的失真(在320)。该方法然后确定由16 X 16V预测模式导致的所有4 X 4 模块中的失真是否低于预定的阈值失真(在325)。如果是,就选择16X 16V预测模式作为 宏块的预测模式(在330),并且该方法结束。如果方法300确定由16X 16V预测模式导致的任一 4X4模块中的失真不低于预 定的阈值失真(在325-否),则该方法确定由16X16H预测模式导致的宏块的16个4X4 模块中每个的失真(在335)。该方法然后确定由16X16H预测模式导致的所有4X4模块 中的失真是否低于预定的阈值失真(在340)。如果是,就选择16X16H预测模式作为宏块 的预测模式(在345),并且该方法结束。如果方法300确定由16X 16H预测模式导致的任一 4X4模块中的失真不低于预 定的阈值失真(在340-否),则该方法在设置16X16P预测模式作为宏块的预测模式或者 为宏块设置4X4编码类型之间做出选择(在350)。在一些实施方式中,通过使用4X4预 测模式搜索方法500(以下参照附图5讨论),可使上述的两个选项之间的选择变得容易。 在其它的实施方式中,利用传统的方法(如上所述)在上述的两个选项之间做出选择。然 后该方法结束。部分III :4X4预测模式搜索算法在一般的搜索算法的步骤1之后,如果4X4编码类型已选择为初始考虑,则然后
10为宏块的16个4X4模块的每个选择4X4预测模式。该部分描述一般搜速算法的步骤3。 在一些实施方式中,使用传统的方法来选择每个4 X 4模块的4 X 4预测模式(例如,通过确 定9个预测模式中每个模式的成本并且选择最低成本的模式)。在其它的实施方式中,改进 的4 X 4预测模式搜索算法用于选择4 X 4模块的4 X 4预测模式。
如上所述,视频流由一列视频帧所组成,其中每个帧由多个宏块组成。宏块典型地 是16X16的像素阵列(尽管其它尺寸的宏块也是可能的)并被分成分区(诸如4X4的 像素阵列的分区)。在H. 264编解码标准下,当内部编码帧时,存在9种不同的方法来编码 4X4阵列(即,存在9种内部4X4预测模式)。这9种模式是1.内部._4X4_.水平
2.内部._4X4_.垂直
3.内部._4X4_.斜_下_左
4.内部._4X4_.斜_下_右
5.内部._4X4_.垂直_右
6.内部._4X4_.水平_下
7.内部._4X4_.垂直_左
8.内部._4X4_.水平_上每个4X4阵列只以一种预测模式来编码。典型地,将会选择导致最低成本的预 测模式。成本典型地等于失真(其中失真反映了原始像素值和编码的预测值之间的差异) 或者失真的加权平均和由预测模式生成的比特数(其中失真和/或比特数的增加会增加成 本)。可以在所有9个预测模式中执行穷举搜索,以确定具有最低成本的最优的预测模式 (选定的预测模式)。然而,典型地,在所有9个预测模式中的穷举搜索并不是有效的(耗 费太多的时间和处理资源)。在一些实施方式中,使用了一种更有效的方法来确定像素阵列的预测模式。在一 些实施方式中,使用一种搜索算法,该算法在确定像素阵列的预测模式中考虑减小数量的 预测模式。该搜索算法更有效并且产生相对低的精度损失。该搜索算法是基于4X4阵列的9种可能的预测模式之间的逻辑/位置关系。图 4示出4X4阵列的9种预测模式之间的逻辑/位置关系的概念图表。如图4所示,8种预 测模式(0、1、3、4、5、6、7和8)围绕圆环设置,其中一个预测模式(2)放置在圆环的中央,预 测模式由节点表示。圆环上的两个预测模式相互越接近,两个预测模式之间的逻辑/位置 关系就越强。.同样,圆环上两个预测模式之间彼此相距越远,两个预测模式之间的逻辑/ 位置关系就越弱。例如,由于预测模式0和5在圆环上相互邻接,所以这表示这两个预测模 式之间存在较强的逻辑/位置关系。作为又一个实例,由于预测模式0和1是在圆环上相 对的位置,这表示这两个预测模式之间存在较弱的逻辑/位置关系。预测模式2位于圆环 的中央,表示它与其它任何一个预测模式都没有逻辑/位置关系。图4的概念图表是基于内部编码4X4阵列的H. 264编解码标准。对于当前处理 的4X4阵列,H. 264标准下的预测模式表示另外一个4X4阵列(在此称作预测阵列)的 位置(相对于当前处理的4X4阵列),其是基于对当前处理的阵列编码的预测信息。例如, 预测模式0 (垂直)表示当前处理的阵列的预测阵列是位于当前处理的阵列之上,预测模式 1 (水平)表示当前处理的阵列的预测阵列是位于当前处理的阵列左侧。
同样,可以访问预测模式之间的逻辑/位置关系的强弱(基于由与当前处理的 4X4阵列有关的预测模式表示的位置关系)。例如,由于位于当前处理的阵列之上的预测 阵列(由预测模式0表示)与位于当前处理的阵列左侧的预测阵列(由预测模式1表示) 之间具有弱的逻辑/位置关系,所以预测模式0与预测模式1之间具有弱的逻辑/位置关 系。弱的逻辑位置关系反映在了附图4中,其中预测模式0和1在圆环上相对的部分。相 反,由于位于当前处理的阵列之上的预测阵列(由预测模式0表示)与位于当前处理的阵 列上方和右侧的预测阵列(由预测模式5表示)之间具有强的逻辑/位置关系,所以预测 模式0与预测模式5之间具有强的逻辑/位置关系。强的逻辑/位置关系反映在了附图4 中,其中预测模式0和5在圆环上相邻。围绕圆环设置的8个预测模式(0、1、3、4、5、6、7和8)可以分为4组逻辑/位置相 关的预测模式1.7、0和5(垂直_左,垂直,和垂直_右)2.8、1和6(水平_上,水平,和水平_下)3. 7、3和8(垂直_左,斜_下_左,和水平_上)4. 5、4和6(垂直_右,斜_下_右,和水平_下)相同组内的预测模式相互之间具有强的逻辑/位置关系。在一些实施方式中,搜 索算法最初确定每个组中的一个预测模式的成本,连同预测模式2的成本。搜索算法然后 确定具有最低成本的该组预测模式中的预测模式。如果具有最低成本的预测模式是在特定 组的预测模式中,则存在非常大的可能性是所有9个可能的预测模式的最低成本就在该特 定的组中。同样,该搜索算法然后确定在该特定的组中具有最低成本的预测模式,具有最低 成本的预测模式被选作阵列的最优的预测模式。例如,在一些实施方式中,搜索算法最初确定预测模式0、1、2、3和4的成本,其中 预测模式0、1、3和4分别来自不同的组。如果在预测模式的组(0,1,2,3,4)中预测模式0、 1、3或4具有最低的成本,则搜索算法随后确定预测模式的组中最低的成本,其中包括以前 确定的预测模式。例如,如果搜索算法确定在预测模式的组(0,1,2,3,4)中,预测模式1具 有最低的成本,则搜索算法然后确定预测模式组(8,1,6)的最低成本,具有最低成本的预 测模式被选为最优的预测模式。在一些实施方式中,搜索算法最初考虑并比较预定的预测模式组的成本,该组包 括一些但并不是全部的9种可能的预测模式。在一些实施方式中,预测模式的预定的组 包括一个预测模式,该一个预测模式是来自于4个预测模式组的每个(如上参照附图4所 述)。在以下所述的实施方式中,预测模式的预定的组包括预测模式0、1、2、3和4。然而在 其它的实施方式中,预测模式的预定组包括其它的预测模式。搜索算法确定了组中每个预 测模式的成本,其中C0、C1、C2、C3和C4分别是预测模式0、1、2、3和4的预先确定的成本。 可以利用本领域已知的方法确定每个预测模式的成本。搜索算法然后确定具有最低成本的 预测模式的序数(0,1,2,3或4),其中变量η用于表示确定的序数。这些操作可以由如下的 等式来表示η = GetInlOfMinCost(0,1,2,3,4)其中GetlnlOfMinCost是函数,其确定预测模式组中(例如,0,1,2,3,和4)每个 预测模式的成本,并且确定组中具有最低成本的预测模式的序数。
搜索算法然后执行下列操作Ifn ==2χ = 2Else If η == 0χ = = GetInlOfMinCost (7,0,5)Else Ifn == 1χ = = GetInlOfMinCost (8,1,6)Else If η == 3χ = = GetInlOfMinCost (7, 3,8)Else If η == 4χ == GetInlOfMinCost (5,4,6)其中χ是最终选定为像素阵列的最优预测模式(选定的预测模式)的预测模式的序号。同样,搜索算法确定η是否等于2。如果是,选定的搜索模式就是预测模式2。如 果η不等于2,搜索算法然后确定η是否等于O。如果是,选定的预测模式就是具有预测模 式组(7,0,5)的最低成本的预测模式。如果η不等于0,搜索算法然后确定η是否等于1。 如果是,选定的预测模式就是具有预测模式组(8,1,6)的最低成本的预测模式。如果η不 等于1,搜索算法然后确定η是否等于3。如果是,选定的预测模式就是具有预测模式组(7, 3,8)的最低成本的预测模式。如果η不等于3,搜索算法然后确定η是否等于4。如果是, 选定的预测模式就是具有预测模式组(5,4,6)的最低成本的预测模式。图5是4X4预测模式搜索方法500的流程图,该方法选择宏块的4X4阵列的预 测模式。在一些实施方式中,方法500是由设置用来编码视频帧的软件和/或硬件来实现 的。在一些实施方式中,4X4预测模式搜索方法500包括图1的步骤115。方法500从将宏块分成16个4X4阵列开始(在505)。该方法然后将第一个4X4 阵列设置成用于处理的当前的4X4阵列(在510)。对于当前的4X4阵列,方法500然后 确定每个预测模式0、1、2、3和4的成本(在515)。该方法确定具有最低成本的预测模式 是2。如果是,该方法将预测模式2设置为当前的4X4阵列的预测模式(在525)。该方法 然后确定是否在宏块中存在多个4X4阵列需要处理(在585)。如果是,该方法将下一个 4X4阵列设置为当前的4X4阵列(在590),并且继续步骤515。如果不是,该方法结束。如果该方法确定具有最低成本的预测模式不是预测模式2 (在520-否),则该方法 然后确定具有最低成本的预测模式是否是预测模式0 (在530)。如果是,该方法随后确定每 个预测模式7、0和5的成本(在535)。该方法然后将(预测模式7、0和5中)具有最低成 本的预测模式设置为(在540)当前4X4阵列的预测模式。该方法然后继续步骤585。如果该方法确定具有最低成本的预测模式不是预测模式0 (在530-否),则该方法 然后确定具有最低成本的预测模式是否是预测模式1 (在545)。如果是,该方法然后确定每 个预测模式8、1和6的成本(在550)。该方法然后将(预测模式8、1和6中)具有最低成 本的预测模式设置为当前4X4阵列的预测模式(在555)。该方法然后继续步骤585。如果该方法确定具有最低成本的预测模式不是预测模式1 (在545-否),则该方法 然后确定具有最低成本的预测模式是否是预测模式3 (在560)。如果是,则该方法确定每个
13预测模式7、3和8的成本(在565)。该方法然后将(预测模式7、3和8中)具有最低成本 的预测模式设置为当前4X4阵列的预测模式(在570)。该方法然后继续步骤585。如果该方法确定具有最低成本的预测模式不是预测模式3 (在560-否),则表示具 有最低成本的预测模式是预测模式4。该方法然后确定每个预测模式5、4和6的成本(在 575)。该方法然后将(预测模式5、4和6中)具有最低成本的预测模式设置为当前4X4 阵列的预测模式(在580)。该方法然后继续步骤585。在一些实施方式中,方法500选择宏块的4X4阵列的预测模式,其中每个4X4阵 列的预测模式选择取决于宏块中一个或多个其它4X4阵列的前一个预测模式的选择。在 这些实施方式中,宏块的每个4X4阵列的预测模式的选择取决于其上方和左侧相邻4X4 阵列的编码值(以及从而选定的预测模式)。因此,在这些实施方式中,方法500选择从左 上部的4X4阵列开始的预测模式,接下来是右侧的,然后是向下的。给出以前选定的上方 和左侧的相邻的4X4阵列的预测模式,方法500随后选择当前正在处理的4X4阵列的具 有最低成本的预测模式(在9种预测模式中)。为了这样做,方法500例如可以计算最后得 到的组合的总体成本(即16种确定的成本的成本和)。A 可选的预测模式搜索算法在可选的实施方式中,可选的预测模式搜索算法执行另外一组操作。最初,可选的 搜索算法确定预测模式组(0,1,3和4)中具有最低的成本的预测模式的序数,其中变量a 用于表示确定的序数。可选的搜索算法也确定预测模式组(0,1,3和4)中具有次最低的成 本的预测模式的序数,其中b用于表示确定的序数。而且,可选的搜索算法确定预测模式组 (0,1,2,3和4)中具有最低的成本的预测模式的序数,其中变量η用于表示确定的序数。这些操作可以由以下的等式来表达。a = GetInlOfMinCost_a(0,1,3,4)b = GetInlOfSecondMinCost_b(0,1,3,4)η = GetInlOfMinCost(0,1,2,3,4)其中GetlnlOfSecondMinCost是函数,其确定预测模式组中(例如,0,1,3和4)中 每个预测模式的成本,并且确定组中的具有次最低成本的预测模式的序数。搜索算法然后执行下列操作
If η===2
χ = 2
ElseIf(a,b)==(0,4) or (4,0)
X==GetInlOfMinCost(0,5,4)
ElseIf(a,b)==(4,l)or(l,4)
X==GetInlOfMinCost(4,6,1)
ElseIf(a,b)==(l,3)or(3,l)
X==GetInlOfMinCost(1,8,3)
ElseIf(a,b)==(3,0) or (0,3)
X==GetInlOfMinCost(3,7,0)
Else
X==η
其中χ是最终选定为像素阵列的最优预测模式(选定的预测模式)的预测模式的序号。同样,可选的搜索算法确定η是否等于2。如果是,选定的搜索模式就是预测模式 2。如果η不等于2,可选的搜索算法然后确定是否a等于0并且b等于4或者反之亦然(即 是否a等于4并且b等于0)。如果是,选定的预测模式就是具有预测模式组(0,5,4)的最 低成本的预测模式。如果a等于0并且b等于4或者反之亦然都不是真的,可选的搜索算法然后确定 是否a等于4并且b等于1或者反之亦然。如果是,选定的预测模式就是具有预测模式组 (4,6,1)的最低成本的预测模式。如果a等于4并且b等于1或者反之亦然都不是真的,可选的搜索算法然后确定 是否a等于1并且b等于3或者反之亦然。如果是,选定的预测模式就是具有预测模式组 (1,8,3)的最低成本的预测模式。如果a等于1并且b等于3或者反之亦然不是真的,可选的搜索算法然后确定是 否a等于3并且b等于0或者反之亦然。如果是,选定的预测模式就是具有预测模式组(3, 7,0)的最低成本的预测模式。图6是可选的4X4预测模式搜索方法600的流程图,其中所述的方法选定宏块的 4X4阵列的预测模式。在一些实施方式中,4X4预测模式搜索方法600包括图1的步骤 115。方法600从将宏块分成16个4X4阵列开始(在605)。该方法然后将第一个4X4 阵列设置成用于处理的当前的4X4阵列(在610)。对于当前的4X4阵列,方法600然后 确定每个预测模式0、1、2、3和4的成本(在615)。该方法将变量a设置成等于具有预测模 式0、1、3和4中最低成本的预测模式的预测指数(在616)。该方法将变量b设置成等于 具有预测模式0、1、3和4中次最低成本的预测模式的预测模式指数(在617)。该方法将 变量η设置成等于具有预测模式0、1、2、3和4中最低成本的预测模式的预测模式指数(在 618)。该方法确定η是否等于2 (在620)。如果是,则该方法将预测模式2设置成当前 4X4阵列的预测模式(在625)。该方法然后确定是否在宏块中存在多个将被处理的4X4 阵列(在685)。如果是,则该方法将下一个4X4阵列设置成当前的4X4阵列(在690), 并继续步骤615。否则,该方法结束。如果该方法确定η不等于2(在620-否),则该方法然后确定条件是否(a等于0 并且b等于4或者反之亦然)为真(在630)。如果是,则该方法然后确定预测模式0、5和 4的每个的成本(在635)。该方法然后将(预测模式0、5和4中)具有最低成本的预测模 式设置成当前4X4阵列的预测模式(在640)。该方法然后继续到步骤685。如果该方法确定条件(a等于0并且b等于4或者反之亦然)非真(在630-否), 则该方法确定条件(a等于4并且b等于1或者反之亦然)是否为真(在645)。如果是,该 方法然后确定每个预测模式4、6和1的成本(在650)。该方法然后将(预测模式4、6和1 中)具有最低成本的预测模式设置成当前4X4阵列的预测模式(在655)。该方法然后继 续到步骤685。如果该方法确定条件(a等于4并且b等于1或者反之亦然)非真(在645_否),则该方法确定条件(a等于1并且b等于3或者反之亦然)是否为真(在660)。如果是,该 方法然后确定每个预测模式1、8和3的成本(在665)。该方法然后将(预测模式1、8和3 中)具有最低成本的预测模式设置成当前4X4阵列的预测模式(在670)。该方法然后继 续到步骤685。如果该方法确定条件(a等于1并且b等于3或者反之亦然)非真(在660_否), 则该方法确定条件(a等于3并且b等于0或者反之亦然)是否为真(在672)。如果是, 则该方法然后确定每个预测模式3、7和0的成本(在675)。该方法然后将(预测模式3、7 和0中)具有最低成本的预测模式设置成当前4X4阵列的预测模式(在680)。该方法然 后继续到步骤685。如果该方法确定条件(a等于3并且b等于0或者反之亦然)非真(在 672-否),该方法然后将该预测模式设置成等于由变量η (在步骤618确定)所指示的预测 模式(在673),即预测模式0、1、2、3和4中具有最低成本的预测模式。该方法然后继续到 步骤685。图7表示计算机系统700,利用该计算机系统实施本发明的一些实施方式。计算机 系统700包括总线705、处理器710、系统存储器715、只读存储器720、永久存储设备725、输 入设备730以及输出设备735。总线705总体来说表示所有的系统、外围设备以及芯片组总线,其可通信地连接 计算机系统700的多个内部设备。例如,总线705可通信地将处理器710与只读存储器720、 系统存储器715以及永久存储设备725相连接。只读存储器(R0M)720存储由处理器710和计算机系统的其它模块所需要的静态 数据和指令。另一方面,永久存储设备725是读写存储设备。该设备是非易失性存储器单 元,即使计算机系统700关闭时其也存储有指令和数据。一些实施方式利用海量存储设备 (诸如磁盘或光盘及其相应的磁盘驱动器)作为永久存储设备725。其它的实施方式利用 可移动的存储设备(诸如软盘或zip 盘,及其相应的磁盘驱动器)作为永久存储设备。和永久存储设备725类似,系统存储器715是读写存储设备。然而与存储设备725 不同的是,系统存储器是易失性读写存储器,诸如随机存取存储器(RAM)。该系统存储器存 储处理器在运行期间所需的一些指令和数据。实现一些实施方式所必需的指令和/或数据存储在系统存储器715、永久存储设 备725、只读存储器720或者三者的任意组合中。例如,不同的存储器单元可以包含用于根 据一些实施方式编码或解码视频数据流的指令,和/或包括视频数据。为了执行一些实施 方式的处理,处理器710从这些不同的存储器单元检索执行的指令和处理的数据。为了执 行一些实施方式的处理,处理器710从这些不同的存储器单元检索执行的指令和处理的数 据。总线705也连接到输入和输出设备730和735。输入设备730可以使得用户传递 信息并选择给计算机系统700的命令。输入设备730包括字母数字键盘和光标控制器。输 出设备735显示由计算机系统700生成的图像。输出设备包括打印机和显示设备,诸如阴 极射线管(CRT)或液晶显示器(LCD)。最后,如图7所示,例如通过网络适配器(未示出),总线705也将计算机系统700 连接到网络765。以这种方式,计算机系统700可以是计算机网络(诸如局域网(“LAN”)、 广域网(“WAN”)或者企业内部互联网)或者一种网络(诸如因特网)的一部分。计算机系统700的任何或所有部件可以结合一些实施方式一起使用。然而,本领域的普通技术人 员将理解任何其它的系统配置也可以用在其它的实施方式中。 根据多个特定的细节对本发明进行了说明,本领域的普通技术人员将认识到在不 背离本发明的精神的情况下,可以以其它特定的形式来实现本发明。例如,以上通过参照宏 块对本发明的多个实施方式进行了描述。本领域的普通技术人员将认识到这些实施方式可 以用在任何其它的像素阵列中。
权利要求
一种用于编码视频图片中的像素块的方法,其中,所述像素块包括多个子块,所述方法包括针对所述像素块中的每个子块,使用预测模式来计算失真值,该失真值基于子块的原始像素值与从所述像素块的边界像素组导出的该子块的预测值组之间的差;以及在所述像素块的所有子块的所有所述失真值都满足预定阈值失真值时,使用所述预测模式来编码所述像素块。
2.根据权利要求1所述的方法,其中,所述预测模式是第一预测模式,所述失真值是第 一失真值,并且所述预测值组是第一预测值组,所述方法还包括在确定所述第一失真值不全满足所述预定阈值失真值时,使用第二预测模式来计算所 述像素块中每个子块的第二失真值;以及当所述像素块的所有子块的第二失真值满足所述预定阈值失真值时,使用所述第二预 测模式来编码所述像素块。
3.根据权利要求2所述的方法,其中,在确定所述第二失真值不全满足所述预定阈值 失真值时,使用第三预测模式来编码所述像素块。
4.根据权利要求3所述的方法,其中,所述第三预测模式指定的所述像素块的分区尺 寸小于所述第二预测模式指定的分区尺寸。
5.根据权利要求1所述的方法,其中,所述边界像素组包括所述像素块的与所述子块 垂直或水平对准的边界上的像素。
6.根据权利要求1所述的方法,其中,针对每个子块使用所述预测模式来计算失真值 包括基于所述预测模式来识别所述像素块的边界像素组;通过使用所识别出的所述像素块的边界像素组,导出子块的预测值组;以及基于所述子块的原始像素值与导出的所述子块的预测值组之间的差,来计算所述失真值。
7.根据权利要求6所述的方法,其中,由所述预测模式识别的边界像素组包括所述像 素块的最左列中的像素。
8.根据权利要求6所述的方法,其中,由所述预测模式识别的边界像素组包括所述像 素块的最上一行中的像素。
9.根据权利要求6所述的方法,其中,预测值是从由所述预测模式识别的边界像素组 的平均值导出的。
10.根据权利要求1所述的方法,其中,所述像素块包括16X16个像素,其中所述像素 块中的每个子块包括4 X 4个像素。
11.一种用于编码视频图片中的像素块的设备,其中,所述像素块包括多个子块,所述 设备包括用于针对所述像素块中的每个子块,使用预测模式来计算失真值的装置,该失真值基 于子块的原始像素值与从所述像素块的边界像素组导出的该子块的预测值组之间的差;以 及用于在所述像素块的所有子块的所有所述失真值都满足预定阈值失真值时,使用所述 预测模式来编码所述像素块的装置。
12.根据权利要求11所述的设备,其中,所述预测模式是第一预测模式,所述失真值是 第一失真值,并且所述预测值组是第一预测值组,所述设备还包括用于在确定所述第一失真值不全满足所述预定阈值失真值时,使用第二预测模式来计 算所述像素块中每个子块的第二失真值的装置;以及用于当所述像素块的所有子块的第二失真值满足所述预定阈值失真值时,使用所述第 二预测模式来编码所述像素块的装置。
13.根据权利要求12所述的设备,还包括用于在确定所述第二失真值不全满足所述 预定阈值失真值时,使用第三预测模式来编码所述像素块的装置。
14.根据权利要求13所述的设备,其中,所述第三预测模式指定的所述像素块的分区 尺寸小于所述第二预测模式指定的分区尺寸。
15.根据权利要求11所述的设备,其中,所述边界像素组包括所述像素块的与所述子 块垂直或水平对准的边界上的像素。
16.根据权利要求11所述的设备,其中,针对每个子块使用所述预测模式来计算失真 值包括基于所述预测模式来识别所述像素块的边界像素组;通过使用所识别出的所述像素块的边界像素组,导出子块的预测值组;以及基于所述子块的原始像素值与导出的所述子块的预测值组之间的差,来计算所述失真值。
17.根据权利要求16所述的设备,其中,由所述预测模式识别的边界像素组包括所述 像素块的最左列中的像素。
18.根据权利要求16所述的设备,其中,由所述预测模式识别的边界像素组包括所述 像素块的最上一行中的像素。
19.根据权利要求11所述的设备,其中,预测值是从由所述预测模式识别的边界像素 组的平均值导出的。
20.根据权利要求11所述的设备,其中,所述像素块包括16X16个像素,其中所述像素 块中的每个子块包括4X4个像素。
全文摘要
本发明涉及对编码视频数据选择编码类型和预测模式。在本发明中,提供了一种用于确定视频帧的宏块的编码类型和预测模式的方法。在一些实施方式中,一般的方法1)基于容易计算的宏块的属性利用编码类型选择算法选择最初为宏块考虑的编码类型,即16×16或4×4,2)如果在步骤1选择了16×16编码类型,则基于失真阈值,利用传统的方法或者改进的16×16预测模式搜索算法,考虑可以用在宏块上的四种16×16预测模式,3)如果在步骤1中选择了4×4编码类型,则基于预测模式之间的位置关系,利用传统的方法或者改进的4×4预测模式搜索算法,选择4×4预测模式用于宏块的16个4×4模块的每个。
文档编号H04N7/32GK101945280SQ201010286538
公开日2011年1月12日 申请日期2005年6月27日 优先权日2004年6月27日
发明者童歆, 聂小春 申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1