浙江省城乡和住房建设厅网站首页,南昌网站小程序开发,wordpress有中文吗,做外贸 访问国外网站目录 摘要1.前言2.帧间模式决策概览2.1 H.264/AVC中的帧间模式决策2.2 发现和动机 3.同质性和平稳性的确定3.1 同质性区域的确定3.2 稳定性区域的决定3.3 整体算法 4.实验结果4.1 IPPP序列的测试4.2 IBBP序列测试 5.结论 《Fast Intermode Decision in H.264/AVC Video Coding》… 目录 摘要1.前言2.帧间模式决策概览2.1 H.264/AVC中的帧间模式决策2.2 发现和动机 3.同质性和平稳性的确定3.1 同质性区域的确定3.2 稳定性区域的决定3.3 整体算法 4.实验结果4.1 IPPP序列的测试4.2 IBBP序列测试 5.结论 《Fast Intermode Decision in H.264/AVC Video Coding》 Author: D. Wu; F. Pan; K.P. Lim; S. Wu; Z.G. Li; X. Lin Published in: IEEE Transactions on Circuits and Systems for Video Technology ( Volume: 15, Issue: 7, July 2005) Page(s): 953 - 958 Date of Publication: 27 June 2005 ISSN Information: Print ISSN: 1051-8215 Electronic ISSN: 1558-2205 DOI: 10.1109/TCSVT.2005.848304 Publisher: IEEE
摘要
新的视频编码标准H.264/MPEG-4 AVC在帧间编码中使用了从4x4到16x16的可变块大小。这一新特性相比使用固定块大小对宏块MB进行编码实现了显著的编码增益。然而当使用暴力率失真优化RDO算法时这一特性会导致极高的计算复杂度。本文提出了一种快速帧间模式决策算法用于决定帧间编码的最佳模式。该算法利用了视频对象的空间同质性和时间平稳性特征。具体而言宏块的空间同质性是基于宏块的边缘强度来决定的而时间平稳性则是通过当前宏块与其在参考帧中对应位置的宏块之间的差异来决定的。基于视频对象的同质性和平稳性RDO过程中仅选择少量的帧间模式。实验结果表明快速帧间模式决策算法能够平均减少30%的编码时间且峰值信噪比损失仅为0.03 dB相当于比特率增加0.6%。
1.前言
最近由ISO/IEC MPEG和ITU-T VCEG联合视频团队JVT共同努力完成的新自然视频图像编码标准H.264也称为MPEG-4第10部分高级视频编码AVC已经定稿[1]。与之前的视频编码标准相比H.264/AVC在相同比特率下的峰值信噪比PSNR和视觉质量方面表现出显著更好的性能[2]。这是由于该标准采用了多种新技术例如内编码块的方向预测、可变块大小的运动估计、多参考帧运动估计、整数变换离散余弦变换DCT的近似、环路去块滤波器和基于上下文的自适应二进制算术编码CABAC。为了实现最高的编码效率H.264/AVC使用率失真优化RDO技术来获得最佳的编码结果即最大化编码质量和最小化生成的数据位。RDO的基本过程可以简要概括如下编码器使用所有可能的模式对宏块MB进行编码例如不同块大小的内预测、不同块大小的运动估计、多个参考帧。最终编码中将使用产生最低率失真RD成本的编码模式。然而由于RD成本是在一系列操作之后才能获得的例如运动估计/运动补偿在帧间编码的情况下、整数变换、量化、反量化、逆整数变换和熵编码这导致编码器的计算复杂度极高。因此为了实现实时应用减少H.264/AVC计算复杂度而不牺牲编码效率的算法是必不可少的。
近期针对H.264/AVC视频编码提出了多种快速运动估计算法[3]–[5]。这些算法在几乎不损失编码效率的情况下实现了显著的时间节省。在[5]中提出了一种模式决策方法作为运动估计前的预处理部分。该方法基于不同模式的RD成本之间的预测关系来选择模式。然而一个宏块中不同模式的RD成本不易预测它们之间的关系也不确定。Pan等人也尝试使用局部边缘信息来指导内预测过程[6]。通过使用从边缘图中提取的边缘方向直方图仅使用少数几个内预测模式进行RDO计算从而大大提高了内编码的速度。最近的一项JVT提案[7]源自[8]提供了一种结合快速内模式决策和快速帧间模式决策的方法。该方法根据某些标准如果选定的帧间模式足够好将跳过内模式决策。
在H.264/AVC中帧间运动估计针对不同的块大小进行如16x16、16x8、8x16、8x8、8x4、4x8和4x4。对于每个宏块MB所有这些大小都会尝试选择导致最低RD成本的大小。这种“尝试所有并选择最佳”的理念在决定最终编码的块大小时是最优的。然而这种最优决策是以高计算复杂度为代价的。然而在使用H.264/AVC编解码器对各种视频序列进行实验时我们观察到自然视频序列中普遍存在同质区域。此外许多自然视频序列包含静止区域。这两种类型的区域即空间同质和/或时间静止大多使用较大的块大小如16x16或“跳过”模式进行编码。因此如果我们能够在编码前确定一个宏块是同质的和/或时间静止的我们可以安全地跳过所有其他模式并使用较大的块大小如16x16或8x8对该宏块进行编码。为此我们使用边缘信息来确定16x16或8x8块的同质性并使用当前宏块与其在参考帧中对应位置的宏块之间的差异来决定16x16块的时间静止性。所提出的这种方法能够在几乎不损失编码效率的情况下减少高达45%的总编码时间。本文的其余部分组织如下第二节概述了H.264/AVC中的帧间编码。第三节详细介绍了快速帧间模式决策算法。第四节展示了实验结果第五节给出了结论。
2.帧间模式决策概览
2.1 H.264/AVC中的帧间模式决策
如H.264/AVC所规定共有7种不同的块大小16x16、16x8、8x16、8x8、8x4、4x8和4x4可用于帧间运动估计/补偿。这些不同的块大小实际上在宏块MB内部形成了两级层次结构。第一级包括16x16、16x8或8x16的块大小。在第二级宏块被指定为P8x8类型其中每个8x8块可以是8x8、8x4、4x8或4x4等子类型之一。这些不同块大小之间的关系如图1所示。 目前在H.264/AVC的帧间模式RDO实现中使用所有可能的块大小进行运动估计以找到RD成本最低的块大小这一过程使用拉格朗日乘子法。该过程可以定义如下 其中s和c分别表示源视频信号和重建视频信号QP是量化参数 λ M O D E λ_{MODE} λMODE是拉格朗日乘子SSD是s和c之间的平方差之和 MODE表示一个宏块模式可以是16x16、16x8、8x16或P8x8中的任意一种。R(s,c,MODE|QP)是与所选MODE和QP相关的比特数。在P片中还有一个SKIP模式指的是16x16模式其中不编码运动和残差信息。SSD的计算公式为 其中 s Y [ x , y ] s_Y[x,y] sY[x,y]和 c Y [ x , y , m o d e ∣ Q P ] c_Y[x,y,mode|QP] cY[x,y,mode∣QP]表示的是原始和重建的亮度分量cu,cv和su,sv表示的是对应的色度分量。拉格朗日乘子 λ M O D E λ_{MODE} λMODE计算方式为 8x8子类型的模式决策类似于宏块模式决策通过最小化公式(1)中的拉格朗日函数来完成其中MODE表示从潜在的预测模式集合中选择的模式如8x8、8x4、4x8和4x4。
请注意帧间模式决策是一个极其耗时的过程。对于搜索窗口中的每个位置都需要进行运动估计以找到使以下表达式最小化的运动矢量 其中 m ( m x , m y ) T m(m_x,m_y)^T m(mx,my)T是运动向量 p ( p x , p y ) T p(p_x,p_y)^T p(px,py)T是预测的运动向量SA(T)D表示绝对误差和(SAD)或者经过Hadamard变换之后系数的绝对误差和。速率项 R ( m − p ) R(m-p) R(m−p)仅表示运动信息并通过查表计算。因此只有属于最佳大小块的运动矢量实际被使用其余的运动矢量在最后被丢弃。因此通过 exhaustive穷尽地尝试所有块大小显然浪费了计算资源。
2.2 发现和动机
在H.264/AVC帧间编码中采用七种不同块大小的原因之一是为了更准确地表示场景运动从而减少使用固定块大小预测时的误差。一般来说具有相似运动的较大区域更可能使用较大的块大小进行编码而包含移动物体边界的区域更可能使用较小的块大小进行编码。在自然视频序列中观察到存在大量属于同一视频对象的同质区域当视频对象移动时这些对象的各个部分通常以相似的方式移动。图片中的同质块具有相似的运动很少会被分割成更小的块。
图2分别展示了QCIF序列“News”和CIF序列“Paris”的两个示例帧。覆盖在图像上的不同大小的白框表示由H.264/AVC中的RDO确定的不同块模式。统计数据显示在图2(a)中16x16、16x8、8x16和P8x8块的百分比分别为82.95%、1.14%、3.41%和12.50%。而在图2(b)中这些比例分别为71.87%、4.26%、3.98%和19.89%。从图2(a)中可以看出同质区域如背景和男子的黑色西装使用16x16块大小进行编码。尽管女士西装的边界区域具有强烈的边缘且不均匀但由于在某些时间段内物体保持静止因此该区域也因时间平稳性而使用16x16块大小进行编码。另一方面图像上部的舞者相对较小且包含较多运动因此使用较小的块大小进行编码。同样在图2(b)中同质区域如西装、桌子、男女的头发使用较大的16x16块进行编码而运动区域或运动边界如手、人头和肩膀的边缘则使用较小的块大小进行编码。尽管背景中的书架包含大量的边缘信息但由于时间平稳性它们仍然使用较大的块大小进行编码。 对JVT测试模型临时小组[9]使用的测试视频序列进行的广泛实验表明典型视频帧中平均有35%的同质区域这些区域适合使用较大尺寸的帧间模式编码可以避免小尺寸模式的RD成本计算。因此如果能够预先确定宏块MB的同质性就可以在运动估计和RDO计算中实现显著的时间节省。在实际实现中空间同质性和时间平稳性区域是选择最佳帧间模式的良好指示从而可以跳过不必要的模式试验减少编码器的计算复杂度。
3.同质性和平稳性的确定
3.1 同质性区域的确定
如果一个区域内的纹理具有相似的空间属性则该区域被认为是同质的。有许多技术可以用于检测图像中的同质区域[10]、[11]。简单的统计测量方法如标准差、方差、偏度和峰度是确定同质性的好方法[10]。在[11]中纹理使用高斯马尔可夫随机场进行建模。通过基于假设和检验的方法在不同窗口大小的纹理上分别标记不同的纹理。这种方法非常有效但计算成本较高因此不适合在快速算法中实现。另一种确定同质区域的方法是使用边缘信息因为视频对象边界通常表现出强烈的边缘。边缘检测已经在快速内模式决策算法中进行了[6]因此我们可以利用这些现有的信息避免额外的计算。
在[6]中使用Sobel算子为每一帧创建了一个边缘图。对于亮度图像中的一个像素 p i , j p_{i,j} pi,j定义对应的边缘向量为 D ⃗ i , j { d x i , j , d y i , j } \vec{D}_{i,j}\{dx_{i,j}, dy_{i,j}\} D i,j{dxi,j,dyi,j}为 其中 d x i , j dx_{i,j} dxi,j和 d y i , j dy_{i,j} dyi,j分别表示在垂直和水平方向上的差异程度。边缘向量的幅度通过以下公式计算 一个大小为N×N 的块的同质性其中N为16或8通过使用块中边缘向量的幅度来确定具体使用公式(6)。如果块中所有像素位置的边缘向量幅度之和小于某个阈值 T h d H Thd_H ThdH则该块被分类为同质块。否则该块为非同质块。块的同质性阈值 T h d H Thd_H ThdH是一个预设参数。设 r和c分别为块 B r , c B_{r,c} Br,c的行索引和列索引块的同质性度量 H r , c H_{r,c} Hr,c定义如下 其中 H r , c 1 H_{r,c}1 Hr,c1表示NxN块 B r , c B_{r,c} Br,c是同质块如果 H r , c 0 H_{r,c}0 Hr,c0则认为是非同质块。在对各种视频序列进行的详尽实验中我们观察到当16x16块的同质性阈值设置为20,0008x8块的同质性阈值设置为5,000时性能最佳。必须强调的是边缘幅度的计算已经在快速内模式决策之前完成唯一需要的额外任务是根据公式(7)进行 H r , c H_{r,c} Hr,c的决策。
3.2 稳定性区域的决定
虽然同质性指的是单个视频帧内的纹理相似性平稳性则指连续帧在时间维度上的“静止”状态。如第二节B部分所述在自然视频序列中许多图像区域尤其是在背景区域即使不是完全静止也表现出相似的运动因此被认为是时间上的平稳区域。这些平稳区域通常在RDO计算后使用16x16模式进行编码。因此我们可以使用绝对差之和来检查这个宏块是否发生变化。差异定义如下 其中 M [ i , j ] M[i,j] M[i,j]和 N [ i , j ] N[i,j] N[i,j]分别表示前一个宏块和当前宏块中的像素强度。如果两个宏块之间的变化小于某个阈值 T s T_{s} Ts则该宏块被分类为时间平稳的并使用16x16模式进行运动估计从而可以跳过所有其他模式。基于对所有测试序列的实验结果我们发现将阈值 T s T_{s} Ts设置为200可以为所有测试序列取得良好且一致的结果。
3.3 整体算法
如前所述当一个宏块被确定为同质块时选择16x16块大小。此外16x8或8x16块大小也包括在RDO计算中。包含16x8或8x16块大小的RDO计算的原因是当宏块位于物体边界附近且其一小部分在前一帧中被覆盖时这种情况需要特别考虑。如果发生这种情况编码器无法从前一帧中找到16x16同质块的良好预测。然而需要注意的是这种情况较为罕见因为大多数同质区域不会分裂成更小的块大小。选择16x8或8x16块大小的决策利用了快速内模式决策[6]的结果。如果选择的帧内模式使用垂直预测我们将使用8x16块。如果选择的模式是水平预测我们将使用16x8块。否则仅使用16x16块。同样当检测到8x8块为同质区域时选择的块大小就是8x8从而跳过8x4、4x8和4x4块大小的RDO计算。
当视频序列中的对象是静止的时有很大可能性会使用16x16块进行编码。因此如果预测的运动矢量为零且宏块差异很小仅使用16x16块大小进行RDO计算而跳过所有其他块大小。整个算法如下所示。需要注意的是步骤1和步骤2已经在快速内模式决策算法[6]中实现因此在将这两个算法结合时不会重复执行这些步骤。
步骤1执行边缘检测。 步骤2生成边缘方向直方图。 步骤3预测当前宏块是否有零向量如果没有零向量转到步骤6。 步骤4否则计算宏块差异如果差异之和大于阈值转到步骤6。 步骤5如果差异之和小于或等于阈值对16x16块进行RDO计算。转到步骤13。 步骤6确定宏块是否同质 步骤7如果宏块同质对16x16块进行RDO计算并选择性地对16x8或8x16块进行RDO计算。在这些模式中选择最佳模式。转到步骤13。 步骤8如果宏块非同质对16x16、16x8和8x16块进行RDO计算保存这三种模式中的最佳模式。 步骤9对于宏块中的每个8x8块如果8x8块同质对8x8块进行RDO计算并选择最佳类型为8x8。 步骤10否则对8x8、8x4、4x8和4x4块进行RDO计算并选择最佳块子类型。 步骤11重复步骤9和10直到确定所有最佳的8x8块子类型。 步骤12确定P8x8类型和步骤8中的最佳类型之间的最佳模式 步骤13在帧内模式、帧间模式和‘Skip’模式中选择最终的最佳模式转到步骤3继续处理下一个宏块。
Comments 上述算法流程换成伪代码的方式描述一下
// 1.计算纹理方向
calculate_sobel_direction();
// 2.生成纹理直方图
generate_sobel_histogram();
// 3.进入分支判断
MVs x264_mb_predict_mv_16x16(); // 根据相邻块的MV预测当前块的MV
if (has_zero_mv(MVs)) // 检查预测出来的MV中是否具有零向量
{MB_diff ABS(col_mb - cur_mb); // 根据同位块col_mb和当前块cur_mb来计算数值差异// 如果MB差异小于阈值说明当前块具有比较强的稳定性只需要进行16x16块的RDO计算无需继续划分if (MB_diff Ts) {RDO_candidates { RDO_16x16 };}
}
else // 检测出来的MV中没有零向量说明时域上存在一定的运动量此时检查空域上的同质性
{H_rc check_homogeneity(); // 检查是否具有同质性if (H_rc) // 如果宏块具有同质性{RDO_candidates { RDO_16x16 }; // 添加16x16尺寸的RDOhist_direction get_best_historgram(); // 检查直方图中最大倾向的方向if (hist_direction DIRECTION_VERTICAL) // 如果最大倾向的方向是垂直{RDO_candidates { RDO_16x16, RDO_8x16 }; // 添加8x16尺寸}if (hist_direction DIRECTION_HORIZONTAL) // 如果最大倾向的方向是水平{RDO_candidates { RDO_16x16, RDO_16x8 }; // 添加16x8尺寸}}else // 如果宏块没有同质性 {RDO_candidates { RDO_16x16, RDO_8x16, RDO_16x8 }; // 3种划分方式都会尝试// 遍历每个8x8块for (;;){H_rc_8x8 check_homogeneity_8x8(); // 检查8x8块是否具有同质性这里是针对8x8块的检查if (H_rc_8x8) // 如果8x8具有同质性{// 添加8x8尺寸RDO_candidates { RDO_16x16, RDO_8x16, RDO_16x8, RDO_8x8 };}else{ // 8x8块不具有同质性则会对小于8x8的尺寸进行RDORDO_candidates { RDO_16x16, RDO_8x16, RDO_16x8, RDO_8x8, RDO_8x4, RDO_4x8, RDO_4x4 };}} }
}
check_best_mode(); // 从inter、intra和skip这三个模式中选择最佳的模式4.实验结果
快速帧间模式决策算法已集成至JM5.0c编码器中该编码器同时采用了快速运动估计ME算法和快速内模式决策算法。所使用的快速运动估计算法源自JVT-F017 [4]而快速内模式决策算法则来自JVT-G013 [6]。我们比较了我们提出的快速运动估计、快速内模式和快速帧间模式技术与原有的快速运动估计和快速内模式技术。根据规范[12]测试条件如下
a) 对于QCIF和CIF格式MV搜索范围为像素级。 b) 使用Hadamard变换。 c) 启用RD优化。 d) 参考帧数量设置为5。 e) 启用CABAC。 f) MV分辨率设为像素级。 g) GOP结构为IPPP或IBBP。 h) 序列中的帧数为150帧。
一组实验在测试序列上进行使用了4个量化参数即QP28,32,36,40如[12]中所规定的。需要注意的是测试序列具有代表性涵盖了从低运动活动的序列如“News”到高运动活动的序列如“Mobile”和“Stefan”。在实验中16x16块的同质性阈值 T H T_H TH设置为20,0008x8块的同质性阈值 T H T_H TH设置为5,000时间平稳性阈值 T s T_s Ts设置为200。关于平均PSNR差异和平均比特率差异的计算遵循[13]中的规范。结果汇总在表I和表II中分别对应IPPP和IBBP切片类型。表III至表VI提供了更详细的信息展示了我们在不同QP条件下序列的表现。在表格中“Time(%)”、“Psnr(dB)”和“Bits(%)”分别表示时间变化的百分比、PSNR变化和比特率变化的百分比。正值表示增加负值表示减少。
4.1 IPPP序列的测试
从表I的实验结果中可以看出所提出的方法平均减少了30%的编码时间。对于所有视频序列编码速度都有所提升其中“Mobile”序列的最小增益为9.97%而“Silent”序列的最大增益为45.16%。最大的PSNR损失为0.065 dB相当于比特率增加了1.28%因此可以忽略不计。对于“Silent”和“News”序列编码速度的提升较高因为这两个序列都表现出强烈的空域同质性和时间平稳性。另一方面“Mobile”序列包含许多小的移动物体例如日历上的字母。因此帧内同质区域和帧间平稳区域较少因此该序列的时间节省不如其他序列显著。图3和图4分别显示了“News”IPPP和“Mobile”IPPP的RD曲线。从这两幅图中可以看出与原方法相比所提出的方法没有引入任何明显的PSNR损失。表III和表IV显示了一般趋势即随着QP的减小时间节省增加。这是可以理解的因为在较小的QP下编码质量较高保留了许多细节因此使用了较小的块大小模式。由于篇幅有限没有列出所有测试序列的结果但这一趋势适用于所有测试的序列。
4.2 IBBP序列测试
在表II中实验结果显示快速帧间模式决策算法在IBBP切片类型上的表现与IPPP切片类型相似。平均而言编码时间减少了30%。所有视频序列都实现了持续的时间节省其中“Mobile”序列的最小时间节省为9.21%而“Silent”序列的最大时间节省为45.92%。最大的PSNR损失为0.055 dB相当于比特率增加了1.21%。考虑到所实现的时间节省这种损失可以忽略不计。IBBP和IPPP序列的时间节省相似是预期的因为同质性指的是帧内的区域不受参考帧的影响而平稳性指的是相对于附近参考帧变化不大的区域。类似地图5和图6分别显示了“News”IBBP和“Mobile”IBBP的RD曲线。表V和表VI显示对于IBBP切片类型随着QP的减小时间节省增加的一般趋势仍然成立。
5.结论
本文提出了一种利用视频对象纹理的同质性和视频序列的时间平稳性特征的快速帧间模式决策算法。块的同质性决策依赖于边缘信息而宏块差异用于判断宏块是否时间平稳。该快速帧间模式决策算法能够平均减少30%的编码时间同时PSNR损失仅为0.03 dB比特率增加0.6%这些影响可以忽略不计。