首页 / 专利库 / 视听技术与设备 / 视频编码层 / MPEG到H.264/AVC视频编码转换系统

MPEG到H.264/AVC视频编码转换系统

阅读:370发布:2021-06-13

专利汇可以提供MPEG到H.264/AVC视频编码转换系统专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种MPEG到H.264/AVC的 视频编码 转换系统,该系统中的编码转换器将输入的MPEG码流完全解码到 像素 域,再进行H.264编码;编码转换器包括频域 帧 内模式判断模 块 和 运动矢量 MV重用&优化及频域宏块模式判断模块;其中频域帧内模式判断模块利用输入码流的VLD解码再反量化后的DCT系数进行 帧内预测 模式判断;运动矢量重用&优化子模块和频域宏块模式,其中运动矢量重用&优化子模块将MPEG-2码流中的整像素MV直接作为H.264的整像素MV,通过快速运动矢量优化 算法 并获得1/4 精度 的MV;频域宏块模式判断子模块则通过MPEG-2解码宏块判断H.264宏块参数。与 现有技术 相比,本发明避免了复杂的解码-重编码处理,所需的计算量极低,采用该技术方案可以使用 软件 方式高效的完成转码处理,系统成本低廉,可以被广泛应用于H.264/AVC系统中,提供优质的数字视频服务。,下面是MPEG到H.264/AVC视频编码转换系统专利的具体信息内容。

1.一种MPEG到H.264/AVC的视频编码转换系统,其特征在于,MPEG节目流或 传输流首先经过MPEG系统层解复用模,解复用后分别提取出MPEG视频数据、音 频及其他数据;解复用得到的MPEG音频数据及其他数据直接送入后端的MPEG系统 层复用模块;而解复用输出的MPEG视频数据通过编码转换器被转码为H.264格式, 然后送入MPEG系统层复用模块,编码转换器将输入的MPEG码流完全解码到像素域, 再进行H.264编码;编码转换器包括频域内模式判断模块和运动矢量MV重用&优化 及频域宏块模式判断模块;其中频域帧内模式判断模块利用输入码流的VLD解码再反 量化后的DCT系数进行帧内预测模式判断;运动矢量重用&优化子模块和频域宏块模 式,其中运动矢量重用&优化子模块将MPEG-2码流中的整像素MV直接作为H.264的 整像素运动矢量MV,再通过快速运动矢量优化算法获得1/4精度的运动矢量MV;频 域宏块模式判断子模块则通过MPEG-2解码宏块判断H.264宏块参数。
2.如权利要求1所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述频域帧内模式判断模块的算法,包括以下步骤:
步骤一、判断预测宏块的大小采用Intra 16x16还是Intra 4×4:
1)计算预测宏块各子块的DC系数的均方差Msd(DC),即
Msd ( DC ) = Var ( DC ) = Σ i = 1 n ( DC i - DC ) 2 , DC = ( Σ i = 1 n DC i ) / n
Var(DC)为DC系数的方差,DCi表示各子块的DCT系数矩阵的DC值,DC表示 各子块DC系数的均值,n表示预测块的子块数;
若Msd(DC)大于或等于阈值TH_DC,确定编码端帧内预测块用4×4块大小进行预 测编码;若Msd(DC)小于阈值TH_DC,转入步骤2);
2)计算预测宏块各子块的DCT系数矩阵的AC系数绝对和,即
Sum _ AC i = Σ j = 2 n = 64 | X j |
AC表示宏块中各子块的AC系数,Sum_ACi的i取0~n-1,分别表示宏块中各子块的 AC系数绝对和;Xj中j取2~64,表示一个DCT系数矩阵的63个AC系数;
如果四个AC系数绝对和不大于阈值TH_SUM_AC,用16×16块进行预测编码; 反之,如果四个AC系数绝对和大于阈值TH_SUM_AC,用4×4块进行预测编码;
步骤二、若上述预测结果是Intra_16x16,则判定Intra_16x16预测模式:
如果某一宏块的UP1、UP2、LEFT1、LEFT2邻块都不存在,则用Intra_16×16_DC 预测模式;如果宏块只有UP1、UP2邻块,那么在Intra_16×16_DC和Intra_16×16_Vertical 中选择;如果宏块只有LEFT1、LEFT2邻块,则在Intra_16×16_DC和 Intra_16×16_Horizontal中选择;对UP1、UP2、LEFT1、LEFT2邻块同时存在的待编码 宏块,则从4种预测方式即Intra_16×16_Vertical、Intra_16×16_Horizontal、 Intra_16×16_DC和Intra_16×16_Plane中选择;
步骤三、若上述预测结果是Intra_4x4,判定Intra_4x4预测模式
1)计算当前4×4子块的AC系数绝对和,记作AC_AS_4,即
AC _ AS _ 4 = Σ i = 1 7 | AC [ i ] |
AC[i]表示当前8×8块DCT系数矩阵第一行或第一列的AC系数,平方向预测用 第一行的AC系数,垂直方向预测用第一列的AC系数;
计算当前4×4块与上边或左边4×4块的绝对AC系数和,记作AC_ADS_4。
AC _ ADS _ 4 = Σ i = 1 7 | AC [ i ] - AC _ ref [ i ] |
AC_ref[i]表示对应参考块的8×8 DCT系数矩阵第一行或第一列的AC系数,水平 预测的时候用当前块和参考块的第一行AC系数,垂直预测的时候用当前块和参考块的 第一列AC系数;
计算内部预测值,记作DC_DI_4,即
DC_DI_4=2|AC[0]|
其中AC[0]是当前宏块第一行或第一列中的第一个AC系数值,水平预测的时候用 第一行的第一个AC系数,能够表示当前块左边和右边的能量差,可近似认为是左右两 部分的亮度差异。垂直预测的时候用第一列的第一个AC系数;
计算外部预测值,记作DC_DO_4,即
DC_DO_4=|DC_ref-DC|
其中DC_ref是参考块的DC值,DC是当前块的DC值;
2)若水平类预测是内部预测,则使用两个判据,即当前4×4子块的AC系数绝对 和AC_AS_4以及内部预测值DC_DI_4:当AC_AS_4小于阈值TH_AC_AS,且 DC_DI_4小于阈值TH_DC_DI时,判定当前子块用水平类预测,且取DC_DI_4作 为第四步的判断是否使用水平预测的DC_H参数,否则该子块不能用水平类预测;
若垂直类预测是内部预测,则使用两个判据,即当前4×4子块的AC系数绝对和 AC_AS_4以及内部预测值DC_DI_4:当AC_AS_4小于阈值TH_AC_AS,且 DC_DI_4小于阈值TH_DC_DI时,判定当前子块用垂直类预测,且取DC_DI_4作 第四步的判断是否使用垂直预测的DC_V参数,否则该子块不能用垂直类预测;
3)若水平类预测是外部预测,则使用两个判据,即当前4×4块与上边或左边4×4 块的绝对AC系数和AC_ADS_4以及外部预测值DC_DO_4;当AC_ADS_4小于 阈值TH_AC_ADS,且DC_DO_4小于阈值TH_DC_DO时,判定当前子块用水平类预 测,且取DC_DO_4作第四步的DC_H,否则该子块不能用水平类预测;
若垂直类预测是外部预测,则使用两个判据:AC_ADS_4和DC_DO_4,当 AC_ADS_4小于阈值TH_AC_ADS,且DC_DO_4小于阈值TH_DC_DO时,判定当 前子块用垂直类预测,且取DC_DO_4作第四步的DC_V,否则该子块不能用垂直类 预测;
4)若上述水平类预测和垂直类预测同时不可用,该子块采用DC类预测;若水平 类和垂直类同时可用,则比较DC_H和DC_V,假如前者小于后者,那么用水平类预 测,若后者小于前者,则用垂直类预测;若仅一种类可用,则用相应类预测。
以上步骤获得当前子块的预测类,然后进行像素域预测来确定最佳预测模式。
3.如权利要求1所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述频域宏块模式判断模块针对P、B图像中帧内编码模式的算法包括以下步骤:
若MPEG-2编码时宏块采用帧内编码模式,将宏块在转码器的编码端直接映射成帧 内编码模式;MPEG-2的P帧内同时存在帧内和帧间编码宏块,对上边和左边的宏块进 行DCT域运动补偿,得到上边和左边宏块亮度的DCT系数矩阵。
4.如权利要求1所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述频域宏块模式判断模块针对P图像中跳过编码模式的算法包括以下步骤:
若MPEG-2编码时宏块采用跳过编码模式,根据H.264标准的跳过模式的条件进行 判断,H.264标准跳过模式的条件为:运动矢量残差为0,像素残差为0。若满足上面 条件,即可判断为跳过编码模式。
5.如权利要求1所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述频域宏块模式判断模块针对帧间预测编码模式的算法包括以下步骤:
若宏块无残差,在编码转换时直接选择P_16×16模式;
若宏块有残差,则利用4个DCT系数矩阵反映该宏块与预测宏块间的残差,按以 下步骤判定H.264/AVC编码端宏块编码模式。
步骤一、分别计算1个宏块的4个子块的64个DCT系数绝对值的和,即
Sum _ x i = Σ j = 1 64 | X ij |
其中Sum_xi的i取1,2,3,4;与4个子块Mb_x1、Mb_x2、Mb_x3和Mb_x4对应, Xij为各块的DCT系数,记作:Sum_x1、Sum_x2、Sum_x3和Sum_x4;
若Min(Sum_x1,Sum_x2,Sum_x3,Sum_x4)大于阈值TH_INTER_SUM1,则该宏 块用8×8预测模式;若这4个值中有三个都小于某阈值TH_INTER_SUM2,则这个宏 块用16×16预测模式。如果以上两个条件都不满足,则进入步骤二。
步骤二、计算左、右各两个块的64个DCT系数绝对值的和,分别为Sum_x1x3和 Sum_x2x4;计算上、下各两个块的64个DCT系数绝对值的和,分别记作Sum_x1x2 和Sum_x3x4,即
Sum_x1x3=Sum_x1+Sum_x3
Sum_x2x4=Sum_x2+Sum_x4
Sum_x1x2=Sum_x1+Sum_x2
Sum_x3x4=Sum_x3+Sum_x4
根据得到的数据做如下判断:
1)、若Max(Sum_x1x2,Sum_x3x4)不大于阈值(2×TH_INTER_SUM2),则这个宏块 用P_16×8预测模式;如果Max(Sum_x1x3,Sum_x2x4)不大于阈值 (2×TH_INTER_SUM2),那么这个宏块用P_8×16预测模式;否则进入步骤2;
2)、若Min(Sum_x1x2,Sum_x3x4)大于阈值(2×TH_INTER_SUM1),则这个宏块用 P_8×8预测模式;如果Min(Sum_x1x3,Sum_x2x4)大于阈值(2×TH_INTER_SUM1),则 这个宏块用P_8×8预测模式;否则进入步骤3;
3)、若Sum_x1x2、Sum_x3x4都小于阈值TH_INTER_SUM3,则用P_16×8预测模 式,如果都大于阈值TH_INTER_SUM3,则用P_8×8预测模式;否则比较 |Min(Sum_x1x2,Sum_x3x4)-TH_INTER_SUM3|和 |Max(Sum_x1x2,Sum_x3x4)-TH_INTER_SUM3|,如果前者小,则用P_16×8预测模式,否 则用P_8×8预测模式;
4)、若Sum_x1x3、Sum_x2x4都小于阈值TH_INTER_SUM3,则用P_8×16预测模 式,如果都大于阈值TH_INTER_SUM3,则用P_8×8预测模式;否则比较 |Min(Sum_x1x3,Sum_x2x4)-TH_INTER_SUM3|和 |Max(Sum_x1x3,Sum_x2x4)-TH_INTER_SUM3|,如果前者小,则用P_8×16预测模式,否 则用P_8×8预测模式。
6.如权利要求5所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 对于MPEG-2帧间编码残差很大的宏块进行帧间编码宏块的帧内编码校正的判决条件 为:
currMB_bits>η×AVG_bits
其中currMB_bits为当前宏块占用的比特数;AVG_bits是宏块的平均比特数,即帧 总比特数除以总宏块数,η为一个系数,取值2。
7.如权利要求1所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述运动矢量重用及优化模块的算法包括以下步骤:
从MPEG-2码流经过变字长解码得到半像素精度的运动矢量,再将这个运动矢量换 算成整像素精度,送到H.264编码部分作为整像素搜索的运动矢量,在这个运动矢量基 础上,搜索包括本点在内的周围9个半像素点,得到最优半像素精度运动矢量MV,再 搜索最优半像素精度运动矢量MV周围的9个1/4像素点,最终得到最优1/4精度运动 矢量MV,每个块进行半像素精度和1/4像素精度的搜索,共18个点的搜索。
8.如权利要求2所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述判定Intra_16x16频域模式的步骤还包括:
对于有邻块UP1、UP2的宏块,计算这两个块的DCT系数绝对和Sum_UP,即:
Sum _ UP = Σ j = 1 64 | X 1 j | + Σ j = 1 64 | X 2 j |
式中X1j和X2j下标中的j取1~64,分别表示UP1和UP2的64个DCT系数值; 若Sum_UP大于阈值TH_SUM_UP,则判此方向的块不可用,即不能选 Intra_16×16_Vertical预测模式;反之判定该方向的块可用,即用Intra_16×16_Vertical预 测模式;
对于有LEFT1、LEFT2邻块的宏块,计算这两个邻块的DCT系数绝对和 Sum_LEFT,即
Sum _ LEFT = Σ j = 1 64 | X 1 j | + Σ j = 1 64 | X 2 j |
式中X1j和X2j下标中的j取1~64,分别表示LEFT1和LEFT2的64个DCT系数 值;若Sum_LEFT大于预测阈值TH_SUM_LEFT,则判此方向的块不可用,即不可选 Intra_16×16_Horizontal预测模式;反之可用Intra_16×16_Horizontal预测模式。
9.如权利要求3所述的MPEG到H.264/AVC的视频编码转换系统,其特征在于, 所述判定Intra_16x16频域模式的步骤还包括:
如果宏块的UP方向可用,计算对应位置DCT系数绝对差值和(SD_UP),即
SD _ UP = Σ k Σ i = 0 8 Σ j = 0 8 | x kij - x 1 ij | + Σ l Σ i = 0 8 Σ j = 0 8 | x lij - x 2 ij |
其中:xkij中的k取1、3,表示宏块中A,C两个块对应位置的DCT系数值;xlij中 的l取2、4,表示宏块中的B,D两个块对应位置的DCT系数值;x′1ij表示UP1块对 应位置的DCT系数值;x′2ij表示UP2对应位置的DCT系数值;
如果LEFT方向可用,计算对应位置的DCT系数绝对差值和(SD_LEFT),即
SD _ LEFT = Σ k Σ i = 0 8 Σ j = 0 8 | x kij - x 1 ij | + Σ l Σ i = 0 8 Σ j = 0 8 | x lij - x 2 ij |
其中:xkij中的k取1、2,表示宏块中A,B两个块对应位置的DCT系数值;xlij中 的l取3、4,表示宏块中C,D两个块对应位置的DCT系数值;x′1ij表示LEFT1块对 应位置的DCT系数值;x′2ij表示LEFT2块对应位置的DCT系数值。
对所得DCT系数绝对差值和进行如下分析:
(1)如果宏块仅UP方向可用,且SD_UP小于阈值TH_SD_UP,则该宏块用 Intra_16×16_Vertical模式;如果SD_UP不小于阈值TH_SD_UP,则该宏块用 Intra_16×16_DC模式。
(2)如果宏块仅LEFT方向可用,且SD_LEFT小于阈值TH_SD_LEFT,则选用 Intra_16×16_Horizontal模式;如果SD_LEFT不小于阈值TH_SD_LEFT,则该宏块用 Intra_16×16_DC模式。
(3)如果宏块UP和LEFT方向均可用,则需进一步分析:
(i)如果SD_UP不小于阈值TH_SD_UP,且SD_LEFT不小于阈值TH_SD_LEFT, 则该宏块用Intra_16×16_DC模式。
(ii)如果SD_UP小于阈值TH_SD_UP,且SD_LEFT小于阈值TH_SD_LEFT,则 该宏块用Intra_16×16_Plane模式。
(iii)如果SD_UP小于阈值TH_SD_UP,SD_LEFT不小于阈值TH_SD_LEFT,则 该宏块用Intra_16×16_Vertical模式;如果SD_LEFT小于阈值TH_SD_LEFT,SD_UP 不小于阈值TH_SD_UP,则该宏块用Intra_16×16_Horizontal模式。

说明书全文

技术领域

发明涉及一种视频编码技术,特别是涉及利用软件方法实现两种视频编码的转换 的方法。

背景技术

近年来,数字视频编码技术发展迅速,多媒体应用领域呈现出多种标准共存的局面。 H.264/AVC作为国际电信联盟电信标准化部(ITU-T)和ISO/IEC联合完成的最新视频 编码标准,采用了一系列更加复杂而有效的视频压缩算法,与先前的编码标准相比,压 缩性能明显提高。此外,H.264/AVC还具有抗误码性能强,易于适应网络环境和网络接 口多样性等优点。H.264/AVC标准将在数字电视、IPTV以及移动多媒体服务等领域中获 得广泛的应用。
然而,由于H.264/AVC标准的产业化才刚刚起步,符合H.264/AVC标准的数字多媒 体资源还非常少,实际应用中急需可以提供H.264/AVC格式的硬件或软件产品,相对于 提供硬件来说,利用软件的方法实现将目前应用普遍的MPEG编码转换为H.264/AVC格 式是更为有效和经济的技术手段,这也成为本发明亟待解决的问题。

发明内容

鉴于上述技术问题,本发明提出了一种MPEG到H.264/AVC视频编码转换系统, 在现有MPEG视频编码系统中,利用软件实现MPEG编码到H.264编码的转换,以及 实现大量MPEG-2格式的码流共享为H.264/AVC格式。
本发明提出了一种MPEG到H.264/AVC的视频编码转换系统,其特征在于,MPEG 节目流或传输流首先经过MPEG系统层解复用模,解复用后分别提取出MPEG视频 数据、音频及其他数据;解复用得到的MPEG音频数据及其他数据直接送入后端的 MPEG系统层复用模块;而解复用输出的MPEG视频数据通过编码转换器被转码为 H.264格式,然后送入MPEG系统层复用模块,编码转换器将输入的MPEG码流完全 解码到像素域,再进行H.264编码;编码转换器包括频域内模式判断模块和运动矢量 MV重用&优化及频域宏块模式判断模块;其中频域帧内模式判断模块利用输入码流的 VLD解码再反量化后的DCT系数进行帧内预测模式判断;运动矢量重用&优化子模块 和频域宏块模式,其中运动矢量重用&优化子模块将MPEG-2码流中的整像素运动矢量 MV直接作为H.264的整像素运动矢量MV,再通过快速运动矢量优化算法获得1/4精 度的运动矢量MV;频域宏块模式判断子模块则通过MPEG-2解码宏块判断H.264宏块 参数。
所述频域帧内模式判断模块的算法,包括以下步骤:
步骤一、判断预测宏块的大小采用Intra_16x16还是Intra_4×4:
1)计算预测宏块各子块的DC系数的均方差Msd(DC),即
Msd ( DC ) = Var ( DC ) = Σ i = 1 n ( DC i - DC ) 2 , DC = ( Σ i = 1 n D C i ) / n
Var(DC)为DC系数的方差,DCi表示各子块的DCT系数矩阵的DC值,DC表示 各子块DC系数的均值,n表示预测块的子块数;
若Msd(DC)大于或等于阈值TH_DC,确定编码端帧内预测块用4×4块大小进行预测 编码;若Msd(DC)小于阈值TH_DC,转入步骤2);其中,阈值TH_DC在各个Qp下 的取值见阈值表11;
2)计算预测宏块各子块的DCT系数矩阵的AC系数绝对和,即
Sum _ A C i = Σ j = 2 n = 64 | X j |
AC表示宏块中各子块的AC系数,Sum_ACi的i取0~n-1,分别表示宏块中各子 块的AC系数绝对和;Xj中j取2~64,表示一个DCT系数矩阵的63个AC系数;
如果四个AC系数绝对和不大于阈值TH_SUM_AC,用16×16块进行预测编码;反 之,如果四个AC系数绝对和大于阈值TH_SUM_AC,用4×4块进行预测编码;其中, 阈值TH_SUM_AC在各个Qp下的取值见阈值表11;
步骤二、若上述预测结果是Intra_16x16,则判定Intra_16x16预测模式:
如果某一宏块的UP1、UP2、LEFT1、LEFT2邻块都不存在,则用Intra_16×16_DC 预测模式;如果宏块只有UP1、UP2邻块,那么在Intra_16×16_DC和Intra_16×16_Vertical 中选择;如果宏块只有LEFT1、LEFT2邻块,则在Intra_16×16_DC和 Intra_16×16_Horizontal中选择;对UP1、UP2、LEFT1、LEFT2邻块同时存在的待编码 宏块,则从4种预测方式即Intra_16×16_Vertical、Intra_16×16_Horizontal、 Intra_16×16_DC和Intra_16×16_Plane中选择;
步骤三、若上述预测结果是Intra_4x4,判定Intra_4x4预测模式
1)计算当前4×4子块的AC系数绝对和,记作AC_AS_4,即
AC _ AS _ 4 = Σ i = 1 7 | AC [ i ] |
AC[i]表示当前8×8块DCT系数矩阵第一行或第一列的AC系数,平方向预测用 第一行的AC系数,垂直方向预测用第一列的AC系数;
计算当前4×4块与上边或左边4×4块的绝对AC系数和,记作AC_ADS_4。
AC _ ADS _ 4 = Σ i = 1 7 | AC [ i ] - AC _ ref [ i ] |
AC_ref[i]表示对应参考块的8×8DCT系数矩阵第一行或第一列的AC系数,水平 预测的时候用当前块和参考块的第一行AC系数,垂直预测的时候用当前块和参考块的 第一列AC系数;
计算内部预测值,记作DC_DI_4,即
DC_DI_4=2|AC[0]|
其中AC[0]是当前宏块第一行或第一列中的第一个AC系数值,水平预测的时候用 第一行的第一个AC系数,能够表示当前块左边和右边的能量差,可近似认为是左右两 部分的亮度差异。垂直预测的时候用第一列的第一个AC系数;
计算外部预测值,记作DC_DO_4,即
DC_DO_4=|DC_ref-DC|
其中DC_ref是参考块的DC值,DC是当前块的DC值;
2)若水平类预测是内部预测,则使用两个判据,即当前4×4子块的AC系数绝对 和AC_AS_4以及内部预测值DC_DI_4:当AC_AS_4小于阈值TH_AC_AS,且 DC_DI_4小于阈值TH_DC_DI时,判定当前子块用水平类预测,且取DC_DI_4作 为第四步的判断是否使用水平预测的DC_H,否则该子块不能用水平类预测;
若垂直类预测是内部预测,则使用两个判据,即当前4×4子块的AC系数绝对和 AC_AS_4以及内部预测值DC_DI_4:当AC_AS_4小于阈值TH_AC_AS,且 DC_DI_4小于阈值TH_DC_DI时,判定当前子块用垂直类预测,且取DC_DI_4作 第四步的判断是否使用垂直预测的DC_V,否则该子块不能用垂直类预测;
3)若水平类预测是外部预测,则使用两个判据,即当前4×4块与上边或左边4×4 块的绝对AC系数和AC_ADS_4以及外部预测值DC_DO_4;当AC_ADS_4小于 阈值TH_AC_ADS,且DC_DO_4小于阈值TH_DC_DO时,判定当前子块用水平类预 测,且取DC_DO_4作第四步的DC_H,否则该子块不能用水平类预测;
若垂直类预测是外部预测,则使用两个判据:AC_ADS_4和DC_DO_4,当 AC_ADS_4小于阈值TH_AC_ADS,且DC_DO_4小于阈值TH_DC_DO时,判定当 前子块用垂直类预测,且取DC_DO_4作第四步的DC_V,否则该子块不能用垂直类 预测;
4)若上述水平类预测和垂直类预测同时不可用,该子块采用DC类预测;若水平 类和垂直类同时可用,则比较DC_H和DC_V,假如前者小于后者,那么用水平类预 测,若后者小于前者,则用垂直类预测;若仅一种类可用,则用相应类预测。
以上步骤获得当前子块的预测类,然后进行像素域预测来确定最佳预测模式。
所述频域宏块模式判断模块针对P、B图像中帧内编码模式的算法包括以下步骤:
若MPEG-2编码时宏块采用帧内编码模式,将宏块在转码器的编码端直接映射成帧 内编码模式,MPEG-2的P帧内同时存在帧内和帧间编码宏块,由于判断帧内预测模式 的需要(见频域帧内模式判断模块),应该对上边和左边的宏块进行DCT域运动补偿, 得到上边和左边宏块亮度的DCT系数矩阵。
所述频域宏块模式判断模块针对跳过编码模式的算法包括以下步骤:
若MPEG-2编码时宏块采用跳过编码模式,由于MPEG-2和H.264对跳过模式定义 不一致,故需要根据H.264标准的跳过模式的条件进行判断,H.264标准跳过模式的条 件为:运动矢量残差为0,像素残差为0。若满足上面条件,即可判断为跳过编码模式。
所述频域宏块模式判断模块针对帧间预测编码模式的算法包括以下步骤:
若宏块无残差,在编码转换时直接选择P_16×16模式;
若宏块有残差,则利用4个DCT系数矩阵反映该宏块与预测宏块间的残差,按以 下步骤判定H.264/AVC编码端宏块编码模式。
步骤一、分别计算1个宏块的4个子块的64个DCT系数绝对值的和,即
Sum _ x i = Σ j = 1 64 | X ij |
其中Sum_xi的i取1,2,3,4;与4个子块Mb_x1、Mb_x2、Mb_x3和Mb_x4对应, Xij为各块的DCT系数,记作:Sum_x1、Sum_x2、Sum_x3和Sum_x4;
若Min(Sum_x1,Sum_x2,Sum_x3,Sum_x4)大于阈值TH_INTER_SUM1,则该宏 块用8×8预测模式;若这4个值中有三个都小于某阈值TH_INTER_SUM2,则这个宏 块用16×16预测模式。如果以上两个条件都不满足,则进入步骤二。
步骤二、计算左、右各两个块的64个DCT系数绝对值的和,分别为Sum_x1x3和 Sum_x2x4;计算上、下各两个块的64个DCT系数绝对值的和,分别记作Sum_x1x2 和Sum_x3x4,即
Sum_x1x3=Sum_x1+Sum_x3
Sum_x2x4=Sum_x2+Sum_x4
Sum_x1x2=Sum_x1+Sum_x2
Sum_x3x4=Sum_x3+Sum_x4
根据得到的数据做如下判断:
1)若Max(Sum_x1x2,Sum_x3x4)不大于阈值(2×TH_INTER_SUM2),则这个宏块 用P_16×8预测模式;如果Max(Sum_x1x3,Sum_x2x4)不大于阈值 (2×TH_INTER_SUM2),那么这个宏块用P_8×16预测模式;否则进入2);
2)若Min(Sum_x1x2,Sum_x3x4)大于阈值(2×TH_INTER_SUM1),则这个宏块用 P_8×8预测模式;如果Min(Sum_x1x3,Sum_x2x4)大于阈值(2×TH_INTER_SUM1),则 这个宏块用P_8×8预测模式;否则进入3);
3)若Sum_x1x2、Sum_x3x4都小于阈值TH_INTER_SUM3,则用P_16×8预测模 式,如果都大于阈值TH_INTER_SUM3,则用P_8×8预测模式;否则比较 |Min(Sum_x1x2,Sum_x3x4)-TH_INTER_SUM3|和 |Max(Sum_x1x2,Sum_x3x4)-TH_INTER_SUM3|,如果前者小,则用P_16×8预测模式,否 则用P_8×8预测模式;
4)若Sum_x1x3、Sum_x2x4都小于阈值TH_INTER_SUM3,则用P_8×16预测模 式,如果都大于阈值TH_INTER_SUM3,则用P_8×8预测模式;否则比较 |Min(Sum_x1x3,Sum_x2x4)-TH_INTER_SUM3|和 |Max(Sum_x1x3,Sum_x2x4)-TH_INTER_SUM3|,如果前者小,则用P_8×16预测模式,否 则用P_8×8预测模式。
对于MPEG-2帧间编码残差很大的宏块进行帧间编码宏块的帧内编码校正的判决 条件为:
currMB_bits>η×AVG_bits
其中currMB bits为当前宏块占用的比特数;AVG_bits是宏块的平均比特数,即帧 总比特数除以总宏块数,η为一个系数,取值2。
所述运动矢量重用及优化模块的算法包括以下步骤:
从MPEG-2码流经过变字长解码得到半像素精度的运动矢量,再将这个运动矢量换 算成整像素精度,送到H.264编码部分作为整像素搜索的运动矢量,在这个运动矢量基 础上,搜索包括本点在内的周围9个半像素点,得到最优半像素精度运动矢量MV,再 搜索最优半像素精度运动矢量MV周围的9个1/4像素点,最终得到最优1/4精度运动 矢量MV,每个块进行半像素精度和1/4像素精度的搜索,共18个点的搜索。
所述判定Intra_16x16频域模式的步骤还包括:
对于有邻块UP1、UP2的宏块,计算这两个块的DCT系数绝对和Sum_UP,即:
Sum _ UP = Σ j = 1 64 | X 1 j | + Σ j = 1 64 | X 2 j |
式中X1j和X2j下标中的j取1~64,分别表示UP1和UP2的64个DCT系数值; 若Sum_UP大于阈值TH_SUM_UP,则判此方向的块不可用,即不能选 Intra_16×16_Vertical预测模式;反之判定该方向的块可用,即用Intra_16×16_Vertical预 测模式;
对于有LEFT1、LEFT2邻块的宏块,计算这两个邻块的DCT系数绝对和 Sum_LEFT,即
Sum _ LEFT = Σ j = 1 64 | X 1 j | + Σ j = 1 64 | X 2 j |
式中X1j和X2j下标中的j取1~64,分别表示LEFT1和LEFT2的64个DCT系数 值;若Sum_LEFT大于预测阈值TH_SUM_LEFT,则判此方向的块不可用,即不可选 Intra_16×16_Horizontal预测模式;反之可用Intra_16×16_Horizontal预测模式。
所述判定Intra_16x16频域模式的步骤还包括:
如果宏块的UP方向可用,计算对应位置DCT系数绝对差值和(SD_UP),即
SD _ UP = Σ k Σ i = 0 8 Σ j = 0 8 | x kij - x 1 ij | + Σ l Σ i = 0 8 Σ j = 0 8 | x lij - x 2 ij |
其中:xkij中的k取1、3,表示宏块中A,C两个块对应位置的DCT系数值;xlij中 的l取2、4,表示宏块中的B,D两个块对应位置的DCT系数值;x′1ij表示UP1块对 应位置的DCT系数值;x′2ij表示UP2对应位置的DCT系数值;
如果LEFT方向可用,计算对应位置的DCT系数绝对差值和(SD_LEFT),即
SD _ LEFT = Σ k Σ i = 0 8 Σ j = 0 8 | x kij - x 1 ij | + Σ l Σ i = 0 8 Σ j = 0 8 | x lij - x 2 ij |
其中:xkij中的k取1、2,表示宏块中A,B两个块对应位置的DCT系数值;xlij中 的l取3、4,表示宏块中C,D两个块对应位置的DCT系数值;x′1ij表示LEFT1块对 应位置的DCT系数值;x′2ij表示LEFT2块对应位置的DCT系数值。
对所得DCT系数绝对差值和进行如下分析:
(1)如果宏块仅UP方向可用,且SD_UP小于阈值TH_SD_UP,则该宏块用 Intra_16×16_Vertical模式;如果SD_UP不小于阈值TH_SD_UP,则判该宏块用 Intra_16×16_DC模式。
(2)如果宏块仅LEFT方向可用,且SD_LEFT小于阈值TH_SD_LEFT,则该宏 块用Intra_16×16_Horizontal模式;如果SD_LEFT不小于阈值TH_SD_LEFT,则该宏块 用Intra_16×16_DC模式。
(3)如果宏块UP和LEFT方向均可用,则需进一步分析:
(i)如果SD_UP不小于阈值TH_SD_UP,且SD_LEFT不小于阈值TH_SD_LEFT, 则该宏块用Intra_16×16_DC模式。
(ii)如果SD_UP小于阈值TH_SD_UP,且SD_LEFT小于阈值TH_SD_LEFT,则 宏块用Intra_16×16_Plane模式。
(iii)如果SD_UP小于阈值TH_SD_UP,SD_LEFT不小于阈值TH_SD_LEFT,则 该宏块用Intra_16×16_Vertical模式;如果SD_LEFT小于阈值TH_SD_LEFT,SD_UP 不小于阈值TH_SD_UP,则该宏块用Intra_16×16_Horizontal模式。
上述所有阈值在各个Qp下的取值见阈值表11。
现有技术相比,本发明所提供的MPEG-2到H.264/AVC的高效转换编码技术, 避免了复杂的解码-重编码处理,所需的计算量极低,有着非常广阔的应用前景。实验 表明,采用该技术方案可以使用软件方式高效的完成转码处理,系统成本低廉,可以被 广泛应用于H.264/AVC系统中,提供优质的数字视频服务。
附图说明
图1为本发明的MPEG到H.264/AVC的视频编码转换系统结构图;
图2为待编码宏块及与周边8×8块的关系图;
图3为分成4个4×4块的8×8块及与周边4×4块的关系图;
图4为宏块的4个DCT系数矩阵图;
图5为Mobile测试序列的R-D曲线图;
图6为Foreman测试序列的R-D曲线图;
图7为Flower测试序列的R-D曲线图;
图8为Flower测试序列的R-D曲线图;
图9为Mother测试序列的R-D曲线图。

具体实施方式

实际应用中的数字多媒体资源主要为MPEG-2标准格式,MPEG-2标准的多媒体资 源可以分为节目流(PS)和传输流(TS)两种,针对这两种格式,采用本发明的编码转换系 统完成从MPEG-2标准格式到H.264标准格式的编码转换。由于H.264标准中的系统层 和音频编码标准均可兼容MPEG标准的系统层和音频标准,因此,本发明的编码转换 系统中,对系统层和音频编码标准复用采用了符合MPEG标准的技术。
如图1所示,为MPEG到H.264/AVC的视频编码转换系统结构图,MPEG节目流 (PS)或传输流(TS)首先经过“MPEG系统层解复用”模块11,解复用后分别提取出 MPEG视频数据、音频及其他数据;其中解复用得到的MPEG音频数据及其他数据不 进行转码处理,直接送入后端的“MPEG系统层复用”模块13;而解复用输出的MPEG 视频数据通过编码转换器12被转码为H.264格式,然后送入“MPEG系统层复用”模 块13。其中,编码转换器12将MPEG格式视频数据转换成H.264格式视频数据的处 理结构见图1中的虚线方框部分,该转换器将输入的MPEG码流完全解码到像素域, 再进行H.264编码:MPEG到H.264的转码器中的关键处理模块为转换器12中的频域 帧内模式判断模块121和运动矢量MV重用&优化及频域宏块模式判断模块122,还包 括硬件部分,包括变长解码(VLD)、反量化(IQ)、反向离散余弦转换器(IDCT)、运 动补偿(MC)等。但是,与传统的简单级联编码转换器结构(解码器编码器级联) 不同的是,本发明编码转换器12充分利用了MPEG-2解码信息,在H.264编码某宏块 之前就基本确定了该宏块的编码参数,在H.264编码器中直接编码,而不是采用遍历式 的编码转换方式。
其中,“频域帧内模式判断”模块121利用输入码流的VLD解码再反量化后的DCT 系数进行帧内预测模式判断;“运动矢量(MV)重用&优化及频域宏块模式判断”模块 122中的运动矢量重用&优化子模块将MPEG-2码流中的整像素MV直接作为H.264的 整像素MV,再通过快速运动矢量优化算法并获得1/4精度的MV;频域宏块模式判断 子模块则通过MPEG-2解码宏块的编码类型、编码比特数信息,快速判断H.264宏块的 编码类型,尺寸划分等参数,采用这两个子模块可以极大地降低转码计算量。
H.264标准支持使用环路滤波处理来保证低码率条件下的视频质量,但是,本专利 所提出的转换结构主要针对数字电视和IPTV应用,输出码流码率较高,块效应并不是 很明显,因此没有使用。以下将对本专利中的主要算法模块-“频域帧内预测模式判断” 和“运动矢量重用&优化及频域宏块模式判断”进行详细介绍。
一、频域帧内模式判断模块算法
对于帧内亮度宏块,H.264标准支持16x16和4x4两种块大小的帧内预测,分别对 应Intra_16x16和Intra_4x4两种模式。其中,Intra_16x16有4种预测模式可供选择,分 别是垂直、水平、DC和平面预测;Intra_4x4有9种预测模式可供选择,分别是垂直、 水平、DC、下左对线、下右对角线、右垂直、下水平、左垂直、上水平。
Intra_4×4模式下对每个4×4亮度信号块都单独进行预测,这对图像中部分区域的 细节可以描述得很好。Intra_16×16模式则对16×16的亮度信号块进行预测,更适合对 图像平坦区编码。
H.264的标准编码器JM10.1采用遍历的方法计算Intra_16x16和Intra_4×4模式各预 测方向的rd_cost,选择最小值对应的预测模式为该宏块的预测模式。这样做固然可以获 得最优预测模式,但所需要的计算量非常巨大。为了最大限度的减少计算量,本专利提 出两步法进行快速帧内预测:第一步判断预测块尺寸,即采用Intra_16x16还是 Intra_4×4;第二步判断Intra_16x16对应4种预测模式中哪个为最佳。如果第一步中选 用Intra_4×4,则判断Intra_4x4对应9种预测模式中哪个为最佳。
第一步:编码宏块尺寸的确定
像素信息经DCT变换后的DCT系数矩阵有如下特点:当宏块包含的纹理信息较少 时,DCT系数矩阵非0系数很少,甚至仅有DC系数;当宏块含较多纹理信息时,DCT 系数矩阵所含非0系数较多。而DCT系数矩阵中的DC系数值大小反映宏块整体能量 的大小。按H.264/AVC标准进行预测时,对图像的平坦区宜采用大尺寸16×16分块, 而对细节多,运动复杂的图像区域,则适合采用小尺寸4×4分块。据此,本专利提出如 下判断算法来确定转换编码中编码端帧内预测块的大小。
1)利用直流系数判断:
对某一宏块(如图2所示),假定已知其A、B、C、D四个子块的8×8DCT系数矩 阵。取每个子块的DCT系数矩阵的DC值,记作DC_A,DC_B,DC_C,DC_D。
若各块DC系数的方差为均方差Msd(DC),计算如式(1)所示。
Msd ( DC ) = Var ( DC ) = Σ i = 1 4 ( DC i - DC ) 2 - - - ( 1 )
DC = ( Σ i = 1 4 DC i ) / 4
同理,若某宏块包括n个8x8块,则上述公式(1)中i取1~n。若Msd(DC)小于 阈值TH_DC,则该宏块的四个8x8块所含能量接近,进入2);否则可知该宏块的四个 块的能量有很大差异,于是可判断用4×4块大小进行预测编码。
2)利用交流系数进行判断:
像素值经DCT变换后得DCT系数矩阵,其AC系数反映整个宏块的纹理信息。由 式错误!未找到引用源。可得一宏块的4个DCT系数矩阵的4组AC系数绝对和。如 果这4个AC系数和不大于阈值TH_SUM_AC,那么可判定这个宏块比较平坦,应该用 16×16块进行预测编码。反之,可判定该宏块含较多纹理信息,适合用4×4块进行预测 编码。
Sum _ AC i = Σ j = 2 n = 64 | X j | - - - ( 2 )
其中Sum_ACi的i取0~3,分别表示图2中A、B、C、D四个块的AC系数绝对 和;Xj的j取2~64,是一个DCT系数矩阵的63个AC系数。
第二步:Intra_16x16和Intra_4x4最佳预测模式的判定
1.Intra_16x16最佳预测模式的判定
H.264/AVC对16×16预测块有4种预测方式供选用。本节重点讨论如何快速判定 待编码宏块预测方式。频域模式判断的过程如下:
1)利用宏块位置进行频域模式判断
H.264/AVC标准规定用宏块相邻像素预测,对某一宏块(如图2所示),如果UP1、 UP2、LEFT1、LEFT2邻块都不存在,则直接用Intra_16×16_DC预测模式。如果宏块只 有UP1、UP2邻块,则只需在Intra_16×16_DC和Intra_16×16_Vertical中选择;如果宏 块只有LEFT1、LEFT2邻块,就只需在Intra_16×16_DC和Intra_16×16_Horizontal中选 择;对于UP1、UP2、LEFT1、LEFT2邻块同时存在的待编码宏块,则需要从4种预测 方式即Intra_16×16_Vertical、Intra_16×16_Horizontal、Intra_16×16_DC和 Intra_16×16_Plane中选择。
2)利用宏块的可用性进行频域模式判断
H.264/AVC规定用宏块的相邻像素预测,对某宏块,即使UP1、UP2、LEFT1、LEFT2 都存在(图2),受允许的预测误差阈值限制,也不一定选用对应方向的预测。考虑本 文在频域预测,尽管DCT系数可反映块纹理信息,但只是整体上反映,无法确切反映 块中某行或某列信息。为此,本文首先分析DCT系数矩阵,如果该宏块较平坦,那么 可用DCT系数预测某一行或某一列信息。判定方法如下:
对存在邻块UP1、UP2的宏块(图2),按式(3)计算这两个块的DCT系数绝对和 Sum_UP。若Sum_UP大于阈值TH_SUM_UP,则判此方向的块不可用,即不能选 Intra_16×16_Vertical预测模式;反之判该方向的块可用,即用Intra_16×16_Vertical预测 模式。
Sum _ UP = Σ j = 1 64 | X 1 j | + Σ j = 1 64 | X 2 j | - - - ( 3 )
式中X1j和X2j下标中的j取1~64,分别表示UP1和UP2的64个DCT系数值。
对有LEFT1、LEFT2的宏块,用式(4)计算这两个邻块的DCT系数绝对和 Sum_LEFT。若Sum_LEFT大于预测阈值TH_SUM_LEFT,则判该方向的块不可用, 即不可选Intra_16×16_Horizontal预测模式;反之可用Intra_16×16_Horizontal预测模式。
Sum _ LEFT = Σ j = 1 64 | X 1 j | + Σ j = 1 64 | X 2 j | - - - ( 4 )
式中X1j和X2j下标中的j取1~64,分别表示LEFT1和LEFT2的64个DCT系数 值。
3)预测模式的判定
通过1)和2),可初步判定待编码宏块可能的预测模式。如果宏块的UP方向可用, 那么就用式(5)计算对应位置DCT系数绝对差值和(SD_UP)。同理,若LEFT方向可用, 则用式(6)计算对应位置的DCT系数绝对差值和(SD_LEFT)。
SD _ UP = Σ k Σ i = 0 8 Σ j = 0 8 | x kij - x 1 ij | + Σ l Σ i = 0 8 Σ j = 0 8 | x lij - x 2 ij | - - - ( 5 )
其中:xkij中的k取1、3,表示宏块中A,C两个块对应位置的DCT系数值;xlij中的l 取2、4,表示宏块中的B,D两个块对应位置的DCT系数值;x′1ij表示UP1块对应位 置的DCT系数值;x′2ij表示UP2对应位置的DCT系数值。
SD _ LEFT = Σ k Σ i = 0 8 Σ j = 0 8 | x kij - x 1 ij | + Σ l Σ i = 0 8 Σ j = 0 8 | x lij - x 2 ij | - - - ( 6 )
其中:xkij中的k取1、2,表示宏块中A,B两个块对应位置的DCT系数值;xlij中的l 取3、4,表示宏块中C,D两个块对应位置的DCT系数值;x′1ij表示LEFT1块对应位 置的DCT系数值;x′2ij表示LEFT2块对应位置的DCT系数值。
对所得DCT系数绝对差值和进行如下分析:
(1)如果宏块仅有UP方向可用,且SD_UP小于阈值TH_SD_UP,则该宏块用 Intra_16×16_Vertical模式;如果SD_UP不小于阈值TH_SD_UP,则判该宏块用 Intra_16×16_DC模式。
(2)如果宏块仅有LEFT方向可用,且SD_LEFT小于阈值TH_SD_LEFT,则该宏块 用Intra_16×16_Horizontal模式;如果SD_LEFT不小于阈值TH_SD_LEFT,则该宏块用 Intra_16×16_DC模式。
(3)如果宏块UP和LEFT方向均可用,则需进一步分析:
(i)若SD_UP不小于阈值TH_SD_UP,且SD_LEFT不小于阈值TH_SD_LEFT, 则该宏块用Intra_16×16_DC模式。
(ii)如果SD_UP小于阈值TH_SD_UP,且SD_LEFT小于阈值TH_SD_LEFT,那 么判此宏块用Intra_16×16_Plane模式。
(iii)若SD_UP小于阈值TH_SD_UP,SD_LEFT不小于阈值TH_SD_LEFT,则判 该宏块用Intra_16×16_Vertical模式。如果SD_LEFT小于阈值TH_SD_LEFT, SD_UP不小于阈值TH_SD_UP,则判其用Intra_16×16_Horizontal模式。
2.Intra_4x4最佳预测模式的判定
当一个16×16宏块用Intra_4×4方式进行块分割预测时,这个宏块共分成16个4×4 子块。其中,宏块的每个8×8块分成4个4×4子块,它们单独进行预测编码。
为了利用DCT信息进行Intra_4×4模式判定,首先将H.264/AVC标准支持4×4块 的9种预测方式分成3类:DC类、水平类和垂直类。其中,DC类包括Intra_4×4_DC; 水平类包括Intra_4×4_Horizontal、Intra_4×4_Horizontal_Down、Intra_4×4_Horizontal_Up 和Intra_4×4_Diagonal_Down_Right;垂直类包括:Intra_4×4_Vertical、 Intra_4×4_Vertical_Left、Intra_4×4_Vertical_Right和Intra_4×4_Diagonal_Down_Left。其 次由子块所在8×8块的DCT系数矩阵得到对应4×4子块的纹理信息,通过分析子块的 纹理信息,对子块进行归类。最后用H.264参考软件JM10.1的算法,判定子块所用预 测模式。
当参考像素不在当前8×8块中时,需要用周边块进行判定,本专利称这种情况为外 部预测。如图3中的BLOCK1,其水平和垂直方向的参考像素需要参考左边和上边对应 位置的像素,这些像素不包括在本块中,对其预测称外部预测。如果参考像素在本块中, 则可用本块的信息判定,这种情况专利称内部预测,如BLOCK4,使用BLOCK2和 BLOCK3中的像素来预测。
下面通过5个步骤判定4×4子块预测模式:
(1)用式(7)计算当前4×4子块的AC系数绝对和,记作AC_AS_4。
AC _ AS _ 4 = Σ i = 1 7 | AC [ i ] | - - - ( 7 )
其中AC[i]表示当前8×8块DCT系数矩阵第一行或第一列的AC系数,水平方向预 测用第一行的AC系数,垂直方向预测用第一列的AC系数。
用式(8)计算当前4×4块与上边或左边4×4块的绝对AC系数和,记作AC_ADS_4。
AC _ ADS _ 4 = Σ i = 1 7 | AC [ i ] - AC _ ref [ i ] | - - - ( 8 )
其中AC_ref[i]表示对应参考块的8×8DCT系数矩阵第一行或第一列的AC系数, 水平预测的时候用当前块和参考块的第一行AC系数,垂直预测的时候用当前块和参考 块的第一列AC系数。
用式(9)计算内部预测值,记作DC_DI_4。
DC_DI_4=2|AC[0]|(9)
其中AC[0]是当前宏块第一行或第一列中的第一个AC系数值,水平预测的时候用 第一行的第一个AC系数,能够表示当前块左边和右边的能量差,可近似认为是左右两 部分的亮度差异。垂直预测的时候用第一列的第一个AC系数。
用式(10)计算外部预测值,记作DC_DO_4。
DC_DO_4=|DC_ref-DC|(10)
其中DC_ref是参考块的DC值,DC是当前块的DC值。
(2)如果水平预测是内部预测,那么可用两个判据:AC_AS_4和DC_DI_4。当 AC_AS_4小于阈值TH_AC_AS,且DC_DI_4小于阈值TH_DC_DI时,可判定当前子 块用水平类预测,且取DC_DI_4作为第四步的DC_H,否则该子块不能用水平类预 测。同理,若垂直预测是内部预测,则可得两个判据:AC_AS_4和DC_DI_4。当 AC_AS_4小于阈值TH_AC_AS,且DC_DI_4小于阈值TH_DC_DI时,可判当前子块 用垂直类预测,且取DC_DI_4作第四步的DC_V,否则该子块不能用垂直类预测。
(3)如果水平预测是外部预测,那么可得两个判据:AC_ADS_4和DC_DO_4。当 AC_ADS_4小于阈值TH_AC_ADS,且DC_DO_4小于阈值TH_DC_DO时,可判当 前子块用水平类预测,且取DC_DO_4作第四步的DC_H,否则该子块不能用水平类 预测。同理,若垂直预测是外部预测,则得两个判据:AC_ADS_4和DC_DO_4。 当AC_ADS_4小于阈值TH_AC_ADS,且DC_DO_4小于阈值TH_DC_DO时,可判 当前子块用垂直类预测,且取DC_DO_4作第四步的DC_V,否则该子块不能用垂直 类预测。
(4)当水平类和垂直类同时不可用时,这个子块采用DC类预测;若水平类和垂直类 同时可用,则比较DC_H和DC_V,假如前者小于后者,那么用水平类,若后者小于 前者,则用垂直类;若仅一种类可用,则用相应类预测。
(5)通过以上步骤可得当前子块可用的预测类。然后进行像素域预测来确定最佳预测 模式。
二、帧间宏块模式判断快速算法
1.宏块编码类型映射和宏块预测尺寸说明
对于帧间宏块,H.264/AVC标准提供了多种编码类型。虽然MPEG-2宏块编码类型 不能和H.264/AVC宏块编码类型一一对应,不能在编码端被直接使用,但是它却能反 映出图像的区域特性,从而根据这些区域特性判断H.264/AVC宏块的编码类型。表1、 表2给出了转换编码过程中MPEG-2帧间宏块编码类型到H.264/AVC帧间宏块编码类 型的转换初始化映射表。
表1P帧宏块编码类型初始化映射表

表2B帧宏块编码类型初始化映射表

表2中,W、H分别表示帧间预测块的宽和高,均可取8和16,组合起来代表宏块 的16×16、16×8、8×16和8×8分块模式。
在MPEG-2中,帧间宏块预测尺寸为16×16或16×8,预测残差进行8×8DCT, 得8×8DCT系数矩阵。H.264/AVC标准规定每个帧间宏块(16×16像素)可按4种方 式分割:1个16×16、2个16×8、2个8×16或4个8×8。若采用8×8模式,每个子 宏块还可进一步分割成:1个8×8、2个8×4、2个4×8或4个4×4。这些分割大大 提高了各宏块之间的关联性。但每种分割或子宏块都各自进行运动补偿,各个MV都需 要进行编码和传输,分割方式也需要在比特流中表示。对大的分割尺寸而言,MV和分 割方式只需较少比特,但运动补偿残差在多细节区将加大。小尺寸分割的运动补偿残差 能量低,但需较多比特表征MV和分割类型。两种情况表明,分割尺寸的选择影响着压 缩率的高低。
理论上,运动补偿的分块越小,得到的残差图像能量就越小。然而,运动补偿的分 块越小,也造成了搜索算法复杂度的上升(有更多分块需比较),所需传输的运动矢量 数目也更多。传输这些运动矢量带来的额外比特消耗可能会高于降低残差图像能量而节 省的比特数。
有文献显示,更小的分块8×4、4×8、4×4的引入,对图像质量的提高并不明显 (0.1dB左右),然而运动补偿的复杂度大大增加(编码时间增加25%),码率也有相应 增加。鉴于此,本专利并不引入更小的分块8×4、4×8、4×4。对一个16×16的宏块, 本专利采用的宏块预测尺寸有16×16、16×8、8×16和8×8。
2.频域帧间预测模式判定快速算法
MPEG-2编码P帧时,宏块编码模式有帧内编码、帧间预测编码和跳过宏块三种。 帧间预测编码又分:有运动矢量,有预测残差;有运动矢量,无预测残差;无运动矢量, 有预测残差三种模式。H.264/AVC编码P帧时,宏块编码同样有帧内编码、帧间预测编 码和跳过宏块三种,但与MPEG-2有下列重要差别:
(1)帧内编码:H.264/AVC采用预测编码来去除图像的空间相关性,MPEG-2则 直接编码。
(2)帧间编码:H.264/AVC比MPEG-2有更多的块尺寸分割方式,并可用多参考 帧预测。
(3)跳过宏块:MPEG-2规定当前块与参考帧相同位置块的预测残差为0(MV为 0,残差为0)时,该宏块用跳过模式。而H.264/AVC与MPEG-2的差异在于不是MV 为0,而是PMV(预测MV与实际MV的差值)为0。
从输入的MPEG-2码流中,可以得到各宏块的编码模式。若某宏块(如图4所示) 是帧内编码,由解码的4个DCT系数矩阵(Mb_×1、Mb_×2、Mb_×3、Mb_×4),按前 面的算法可导出该宏块的纹理信息,其中需要考虑UP和LEFT宏块是帧间宏块的情况。 对帧间编码宏块,解码的DCT系数矩阵(Mb_×1、M_b×2、Mb_×3、Mb_×4)反映该 宏块与预测宏块之差。对跳过宏块,不包含DCT系数。这三种编码宏块在转码器的编 码端需转换到H.264/AVC目标码流中。对此,本文经实验研究,提出了下列算法。
考虑到编码一个帧间宏块可以有不同的编码模式,下面将针对每一种情况提出模式 判定的具体方法:
1)帧内编码模式
如果MPEG-2码流中的某宏块采用帧内编码模式,那么说明此宏块采用帧间编码的 效果比未用预测的帧内编码还要差(H.264的帧内编码是带预测的,效果应该比未用预 测的好),那么此宏块在转码器的编码端直接映射成帧内编码模式是最好的选择。考虑 到H.264/AVC的帧内编码又有多种模式,需用前面的算法,在DCT域内予以确定。注 意到在MPEG-2的P帧内,帧内编码宏块和帧间编码宏块同时存在,有可能有的帧内宏 块的上边和左边宏块是帧间宏块,这时由于判断帧内预测模式的需要,就应该对上边和 左边的宏块进行DCT域运动补偿,得到上边和左边宏块亮度的DCT系数矩阵而不是残 差的DCT系数矩阵。
2)跳过宏块
如果MPEG-2码流中的某宏块采用跳过编码模式,说明当前块没有运动(MV为0, 残差也为0),但是H.264的P帧的跳过宏块的条件是MV残差为0,与MV为0不同, 所以不能直接映射为跳过模式,需要进一步根据H.264的跳过模式的条件进行判断。
3)帧间预测编码模式
如果MPEG-2码流中的某宏块为帧间预测编码模式,则按其有无预测残差,采用下 述不同算法。
(1)无残差帧间预测编码模式的转换
如果MPEG-2码流中的某宏块为帧间预测编码模式且无残差,那么表明预测最佳, 在转码时直接选择P_16×16模式,且不需要进行运动矢量的进一步精细化。为进一步提 高编码效率,这种宏块还可以按H.264的规定,判断是否可将其编码成SKIP模式。
(2)有残差帧间预测编码模式的转换
如果MPEG-2码流中的某宏块为帧间预测编码模式且有残差,那么4个DCT系数 矩阵就能够反映该宏块与预测宏块间的残差。若残差较大,表明预测效果不佳,反之说 明预测效果较好。于是可依据预测残差,按以下步骤判定H.264/AVC编码端宏块编码 模式。
①由式(11)分别计算1个宏块的4个块Mb_x1、Mb_x2、Mb_x3和Mb_x4的64 个DCT系数绝对值的和,记作:Sum_x1、Sum_x2、Sum_x3和Sum_x4。若Min(Sum_x1, Sum_x2,Sum_x3,Sum_x4)大于阈值TH_INTER_SUM1,则该宏块用P_8×8预测模式; 若这4个值中有三个都小于某阈值TH_INTER_SUM2,则该宏块用P_16×16预测模式。 如果两个条件都不满足,则进入步骤②。
Sum _ x i = Σ j = 1 64 | X ij | - - - ( 11 )
其中Sum_xi的i取1,2,3,4;与4个块Mb_x1、Mb_x2、Mb_x3和Mb_x4对应, Xij为各块的DCT系数。
②由式(12)计算左、右各两个块的64个DCT系数绝对值的和,分别记作Sum_x1x3 和Sum_x2x4;由式(13)计算上、下各两个块的64个DCT系数绝对值的和,分别记 作Sum_x1x2和Sum_x3x4:
Sum_x1x3=Sum_x1+Sum_x3
Sum_x2x4=Sum_x2+Sum_x4(12)
Sum_x1x2=Sum_x1+Sum_x2
Sum_x3x4=Sum_x3+Sum_x4(13)
③根据得到的数据做如下判断:
a)如果Max(Sum_x1x2,Sum_x3x4)不大于阈值(2×TH_INTER_SUM2),则这个宏 块用P_16×8预测模式;如果Max(Sum_x1x3,Sum_x2x4)不大于阈值 (2×TH_INTER_SUM2),那么这个宏块用P_8×16预测模式。否则进入b)。
b)如果Min(Sum_x1x2,Sum_x3x4)大于阈值(2×TH_INTER_SUM1),则这个宏块 用P_8×8预测模式;如果Min(Sum_x1x3,Sum_x2x4)大于阈值(2×TH_INTER_SUM1), 则这个宏块用P_8×8预测模式。否则进入c)。
c)如果Sum_x1x2、Sum_x3x4都小于阈值TH_INTER_SUM3,则用P_16×8预测 模式,如果都大于阈值TH_INTER_SUM3,则用P_8×8预测模式。否则比较 |Min(Sum_x1x2,Sum_x3x4)-TH_INTER_SUM3|和 |Max(Sum_x1x2,Sum_x3x4)-TH_INTER_SUM3|,如果前者小,则用P_16×8预测模式,否 则用P_8×8预测模式。
d)如果Sum_x1x3、Sum_x2x4都小于阈值TH_INTER_SUM3,则用P_8×16预测 模式,如果都大于阈值TH_INTER_SUM3,则用P_8×8预测模式;否则比较 |Min(Sum_x1x3,Sum_x2x4)-TH_INTER_SUM3|和 |Max(Sum_x1x3,Sum_x2x4)-TH_INTER_SUM3|,如果前者小,则用P_8×16预测模式,否 则用P_8×16预测模式。
4)帧间编码宏块的帧内编码校正
由于H.264的帧内宏块采用了预测编码,在帧间编码残差很大的情况下,也许帧内 编码比帧间编码效果更好。因此,对于MPEG-2帧间编码残差很大的宏块,启用帧间编 码宏块的帧内编码校正。
判决条件如下:
currMB_bits>η×AVG_bits    (14)
currMB_bits为当前宏块占用的比特数;AVG_bits是宏块的平均比特数,即帧总比 特数除以总宏块数(由于跳过宏块不占用bit信息,故除去跳过宏块),η为一个系数, 本专利中η取2。
三、运动矢量重用及优化
运动估计处理在视频编码过程中计算量巨大,其中用于帧间宏块编码的运动估计处 理占用了整个编码过程约70%的运算量。因此在转换编码器中充分利用MPEG-2中现 有运动矢量(MV)可以提高H.264编码部分的运动估计速度,进而提高整个转换编码器 的效率。
在相同标准间的转换编码过程中,输入码流的运动矢量是经过编码器运动估计过程 的,在某种运动搜索算法和匹配法则下的最优运动矢量,因此运动矢量基本可以不加修 改的重用。而由于不同标准间的差异很多,运动矢量就不能直接加以利用。
MPEG-2和H.264在帧间运动估计方面的差异有:
(1)预测精度不同。MPEG-2中MV是1/2像素精度的,而H.264标准中的MV 是1/4像素精度的;
(2)半像素内插公式不同。在MPEG-2中,半像素的内插是相邻2个像素的算数 平均值。而在H.264中,亮度的半像素是用一个6阶有限冲击响应滤波器对相邻整数位 置的像素值进行内插得到的,1/4的像素值用线性插补得到。
(3)预测帧的数量不同。在MPEG-2中,只能使用前面一帧和后面一帧的数据进 行预测,最大范围是2帧。而在H.264中,可以使用多帧预测,最大范围是16帧。
(4)预测块大小不同。在MPEG-2中是按照16×16的宏块或16×8的块进行预测 的,而在H.264中,可以将宏块划分成16×16,16×8,8×16和8×84种子块,而8 ×8的子块又可以进一步划分成8×8,8×4,4×8和4×44种更小的块来进行预测。
由于MPEG-2的整像素运动矢量也是经过全局运动搜索得到的,得到的参考块与当 前待编码块相关性最高,因此可用MPEG-2的全局运动搜索结果来替代H.264中整像素 全局运动搜索,节省大量的计算量。方法是从MPEG-2码流经过变字长解码得到半像素 精度的运动矢量,再将这个运动矢量换算成整像素精度,送到H.264编码部分作为整像 素搜索的运动矢量,在这个运动矢量基础上,搜索本点在内的周围9个半像素点,得到 最优半像素精度MV,再搜索最优半像素精度MV周围的9个1/4像素点,最终得到最 优1/4精度MV。按照这种方法每个块需要进行半像素精度和1/4像素精度的搜索,共 18个点的搜索。
这种算法的优点在于节省了编码端整像素搜索部分的计算量,运算速度明显提高。 由于整像素部分的搜索H.264和MPEG-2差异很小,对于半像素和1/4像素搜索部分没 有任何影响,因此获得的编码质量很好,与采用H.264编码器进行重编码相比,PSNR 差异很小。PSNR产生差异主要是由于MPEG-2中进行的整像素搜索是基于16×16的 宏块进行的,而在H.264中,如果宏块分成16×8,8×16,8×8甚至更小的8×4,4 ×8和4×4,得到的整像素搜索结果可能是不同的,这就可能引起最终预测结果与JM 中的标准预测结果不同,造成编码效率变化。
不直接利用MPEG-2的半像素运动矢量进行优化起点的原因在于,MEPG-2和H.264 的半像素插值公式不同,插值出来的参考半像素图像也就不同,所以MPEG-2的最优运 动矢量在H.264中不一定是最优的,这会导致图像质量的降低。
实例
1.Intra_16×16预测模式判断算法实验结果
实验数据包括两部分:用前面提出的算法判断采用Intra_16×16还是Intra_4×4块分 割方式。对Intra_16×16预测模式,用Intra_16x16最佳预测模式的判定提出的算法判定 预测模式。对Intra_4×4预测模式,用JM10.1计算每种预测方式的SAD,取其最小值 对应的预测模式。得到的第一部分实验数据,后文用“New_Method”表示。用JM10.1 作参考得到的第二部分实验数据,后文用“Ref_Method”表示。实验序列Football、Flower、 Bus和Mobile为CIF(352×288)格式,实验序列Foreman和Akiyo为QCIF(176×144) 格式,序列均长30帧,帧率为30,采用全I帧编码。
1)R-D曲线的比较
R-D曲线的比较在用本文提出的Intra_16×16预测模式判定算法和参照转码器采用 JM10.1算法判定Intra_16×16预测模式所得R-D曲线间进行。图5和图6分别示出了 测试序列Mobile和Foreman在使用本文提出算法和参考算法下所得的R-D曲线。横坐 标为比特率(kbit/s),纵坐标为亮度信号信噪比(dB)。图5和图6表明,本文提出的 算法和参考算法相比得到的R-D曲线几乎没有发生变化。
2)模式判定时间的比较
比较针对采用不同算法的两种转码器所用时间进行。一种是图1所示,采用本文提 出的Intra_16×16模式判定算法,对Intra_16×16模式进行预测模式判定。另一种是级 联型参照转码器(MPEG-2解码器与JM10.1简单串联),采用JM10.1算法,对Intra_16 ×16模式进行预测模式判定。实验机器配置:CPU为Pentium 4 1.6GHz,内存为512MB。 表3列出了不同测试序列在转码器编码端用定值QP(QP=32)编码判定模式所花时间 的实验数据。表中实验数据表明,本文提出的算法与参考算法相比,模式判定时间平均 节省58.44%。
表3模式判定时间的比较

3)实验数据说明
以上实验数据表明:本专利提出的Intra_16×16预测模式判定算法与参照算法相比, 可在几乎不影响图像质量情况下,平均节省58.44%左右的模式判定时间。这一方面是 由于DCT变换属线性变换,通过分析宏块的DCT系数矩阵,可很好的获取该宏块的纹 理信息,因此有利于模式判定。另一方面,通过分析DCT系数判定模式不需像参照算 法中进行Intra_16×16预测模式的全搜索,从而提高了模式判定效率。
2.Intra_4×4预测模式判断算法实验结果
实验数据同样由两部分组成:用前面提出的算法判断采用Intra_16×16还是Intra_4 ×4块分割方式。接着对Intra_16×16模式,用JM10.1算法,计算每种预测方式的SAD, 取最小值对应的预测模式。对Intra_4×4模式,用前文提出的算法来判定预测模式,得 到第一部分实验数据,后文中用“New_Method”表示。使用JM10.1中算法得到第二部 分实验数据,后文中用“Ref_Method”表示。实验序列Football、Flower、Bus和Mobile 为CIF(352×288)格式,实验序列Foreman和Akio为QCIF(176×144)格式,序列均 长30帧,帧率为30,采用全I帧编码。
1)比特率和亮度信号信噪比的实验比较
表4给出了6个测试序列在转码器采用两种算法,且编码端用定值QP(QP=32) 编码所得的比特率和亮度信号信噪比的实验数据。表5给出了测试序列Flower在转码 器采用两种算法,且编码端用不同定值QP编码所得比特率和亮度信号信噪比的实验数 据。
表4两种算法判断Intra_4×4模式的比较(QP=32)


表5Flower序列两种算法判断Intra_4×4模式的比较(QP取不同值)

表中所列数据表明,在图像质量(PSNR)相当的情况下,本文所提算法比参照算 法的比特率略有提高。主要是本文所提算法从DCT域进行帧内模式判断,用MPEG-2 中得到的是8×8的DCT系数矩阵来判断4×4子块的特性,确定编码模式,这样引入的 误差较大,而且H.264/AVC中Intra_4×4的预测方向划分的比较细,两个预测方向之间 仅仅相差22.5°,这对于模式判断的细节要求很高,但从DCT域进行判断无法达到这 么敏感,因此使得编码效率会下降。
2)R-D曲线的比较
进行比较的R-D曲线分别对应本文所提Intra_4×4预测模式判定算法和参照转码器 用JM10.1算法判定Intra_4×4预测模式。图7给出了测试序列Flower的R-D曲线。横 坐标为比特率(kbit/s),纵坐标为亮度信号信噪比(dB)。该图表明,本文提出的算法 和参照算法相比在相同码率情况下,PSNR值约降低0.5dB。
3)模式判定时间的比较
比较针对采用不同算法的两种转码器所用时间进行。一种是图1所示,采用本文提 出的Intra_4×4模式判定算法,对Intra_4×4模式判定预测模式。另一种是级联型参照 转码器(MPEG-2解码器与JM10.1简单串联),采用JM10.1算法,对Intra_4×4模式 判定预测模式。实验机器配置:CPU为Pentium 4 1.6GHz,内存为512MB。表6给出 了不同测试序列在转码器编码端用定值QP(QP=32)编码所需模式判定时间的实验数 据。实验数据表明,本文提出的算法与参考算法相比,模式判定时间平均节省71.51%。
表6模式判定时间的比较

4)实验数据说明
实验数据表明:本专利提出的Intra_4×4预测模式判定算法与参考算法相比,两者 的PSNR值差异不大,比特率有所增加,同时新算法比参考算法判定Intra_4×4预测模 式的时间约节省71.51%。这里造成比特率变大的原因是8×8的DCT系数矩阵反映8×8 像素块整体的纹理信息,从中获取其4×4子块的纹理信息有一定难度,导致无法正确判 定Intra_4×4的9种预测模式哪种最优。新算法又先将9种预测模式分成3类,最后只 需对某类的预测模式进行计算,从而避免了对每个Intra_4×4都要进行9种预测模式的 计算,这就提高了判定Intra_4×4预测模式的效率。
3.变换系数帧间模式快速判断算法实验结果
实验条件:测试序列Flower、Mobile和Bus为CIF(352×288)格式,测试序列 Mother、Foreman和Akio为QCIF(176×144)格式,长度均为30帧,每一个GOP为 12,帧结构为IPPPPPPP。
在所进行的试验中,运动矢量的重用和优化技术均采用了以上小节“运动矢量重用 及优化”中的相应方法进行优化。
1)比特率和亮度信号信噪比的比较
使用参考转码器(MPEG-2解码器和H.264编码器简单串联)所得实验数据用 Ref_Method表示,使用文中提出的快速算法所得实验数据用New_Method表示。表7 给出了6个测试序列在转码器采用不同算法,且编码端用定值QP(QP=32)编码所得 比特率和亮度信号信噪比的实验数据。表8和表9分别给出了测试序列Mobile、Foreman 在转码器采用不同算法,且编码端用不同定值QP编码所得比特率和亮度信号信噪比的 实验数据。这些数据表明,在图像质量(PSNR)几乎不变的情况下,本算法的码率略 高于参照算法。
表7两种判断帧间预测模式算法的比较

表8Mobile测试序列帧间预测模式两种判断算法的比较

表9Mother测试序列帧间预测模式两种判断算法的比较

2)R-D曲线的比较
图8和图9分别给出了测试序列Flower和Mother的R-D曲线。图中带菱形点的 R-D曲线对应参考转码器,采用JM10.1算法判定帧间预测模式。带方形点的为采用图 1转码器和本文帧间预测模式判定算法所得R-D曲线。图8和图9表明,本算法和参照 算法的R-D曲线几乎无差别。
3)模式判定时间的比较
表10给出了不同测试序列在转码器编码端用定值QP(QP=32)编码所需模式判 定时间的实验数据。实验机器配置:CPU为Pentium 41.6GHz,内存为512MB。表中, New_Method栏所列为用本文帧间预测模式判定算法判定预测模式所用时间, Ref_Method栏所列为参考转码器判定帧间预测模式所需时间。表10表明,本算法与参 照算法相比模式判定时间约节约17.40%。
表10模式判定时间的比较

表11文中用到的阈值(未说明的QP均为32)

4)实验结果分析
以上实验结果表明,本专利提出的帧间预测模式判定算法与参照算法相比,在图像 质量几乎不变的情况下,平均约节省17.40%的模式判定时间。这一方面是由于DCT变 换属线性变换,宏块的DCT系数矩阵表征宏块的纹理信息,可借以判定帧间预测模式; 另一方面是在DCT域判定帧间预测模式,不需像参考算法那样进行全搜索。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈