H.264中部分论文记录

<<H.264 中 4x4 块的快速帧内预测算法>>

作者:王启文,黄东军

目前,对帧内预测的研究已取得很多成果,如快速三步法 [1]。该算法利用相邻预测方向的相关性,选择性地计算帧内方向预测模式,以达到减少率失真优化计算量的目的,但它对编码时间的节约效果不理想。文献[2]利用子块边缘的变化方向从预选模式中选取最可能的预测方向,该算法采用边缘梯度直方图法,在几种最可能的预测方向中选取最佳预测方向,在视频场景较复杂的情况下,其视频压缩效果不佳。文献[3]对文献[2]算法进行改进,

但对预测正确率的提高效果不明显。文献[4]提出自适应阈值快速算法,利用邻块相关性为当前块的率失真设置一个阈值,提前判断当前块是否为帧内块,但视频图像的动态变化性导致其阈值很难预测。鉴于此,本文提出一种新的预测方向度量方法。

在 H.264 标准中,通过 RDO 技术,对所有帧内预测模式进行遍历,并选择一种最优预测模式。帧内预测块的预测模式不是直接进行熵编码,而是将其与最可能的模式相减后,

进行熵编码。最可能模式的符号为 most-probable-mode[4],它是由当前块的左边块(图 3 中的 A)和上边块(图 3 中的 B)的预测模式得到的。当前块的预测模式为 most-probable-mode

时,只要用一个比特来表示预测模式,与选用其他模式相比,

其所用比特数最少。

本文算法充分利用了 4×4 块预测模式的方向特性,以及相邻块和相邻方向预测模式的相关性。先对 4 个方向性强的方向预测模式进行度量,即垂直(模式 0)、水平(模式 1)、对角线左下(模式 3)、对角线右下(模式 4)。然后从度量结果中选出候选预测模式,并计算当前块是否具有方向性。如果具有方向性,则根据相邻方向预测模式相关性,将与候选模式相邻的预测模式作为候选预测模式。否则,把模式 2 选为候选模式。最后根据相邻块的相关性,把相邻块的预测模式作为候选模式。

参考文献

[1] Cheng Chao-Chung, Chang Tian-Sheuan. Fast Three Step Intra Prediction Algorithm for 4×4 Blocks in H.264[C]//Proc. of IEEE International Symposium on Circuits and Systems. Kobe, Japan:[s. n.], 2005.

[2] Pan Feng, Lin Xiao. Fast Mode Decision for Intra Prediction[J]. IEEE Trans. on Circuits and Systems for Video Technology, 2005, 15(7): 813-822.

[3] 李世平, 蒋刚毅, 郁梅. 快速帧内预测模式选择新方法[J]. 电子学报, 2006, 34(1): 141-146.

[4] Kim B G. Fast Selective Intra-mode Search Algorithm Based on Adaptive Thresholding Scheme for H.264/AVC Encoding[J]. IEEE Trans. on Circuits and Systems for Video Technology, 2008, 18(1): 127-133.

[5] Lim Keng-Pang. Text Description of Joint Model Reference Encoding Methods and Decoding Concealment Methods[Z]. 2005.

 

<<快速帧内预测模式选择新方法>>

作者:李世平 蒋刚毅 郁梅

 

<<基于 SAD 和 SATD 的 H.264 快速帧内预测算法 >>

作者:谢翠兰,郑艺玲

H.264 帧内预测模式确定过程

H.264 帧内编码中,采用亮度和色度相结合的率失真优化(Rate-Distortion Optimization, RDO)判优准则, RDO 判决准则,通过遍历所有预测模式,寻找率失真代价 RDCost 最小的作为最优预测模式。率失真代价公式为

RDCost=SSD+λ×Rate

其中,SSD 表示当前块与重构块的平方差之和;λ 为量化参数 QP 的函数;Rate 表示熵编码后的码率。

H.264 中确定最优帧内预测模式的过程如下:

(1) 确定 Intra_16×16 方式下的最优预测模式:

1)用 4 种预测模式对待编码宏块进行预测;

2)对预测残差宏块进行哈达马变换,并计算编码代价;

3)选择编码代价最小的模式作为 Intra_16×16 方式下的最优预测模式。

(2)结合色度编码,计算待编码宏块在Intra_16 × 16 方式下的率失真代价RDCostI16。

(3)确定 Intra_4 × 4 方式下的最优预测模式。

将待编码宏块划分为 16 个 4×4 块,分别确定每个 4×4块的最优预测模式:

1)用 9 种预测模式对 4×4 块进行预测;

2)对预测残差块进行 DCT 变换/量化、 反DCT 变换/反量化,计算编码代价 RDCost;

3)选择 RDCost 最小的模式为当前 4×4 块的最优预测 模式。

(4)结合色度编码,统计待编码宏块在Intra_4×4 方式下的率失真代价RDCostI4。

(5)确定最优的帧内预测模式。

比较待编码宏块的RDCostI16 和RDCostI4 ,选择RDCost小的作为待编码宏块最终的亮度编码方式,该方式对应的预测模式即最优帧内预测模式。

由上述可知:每一个宏块都要按照 2 种方式进行编码,共需要进行 3 328 次预测、144 次解码/重构以及 68 次 4×4 哈达马变换,可见其复杂性是相当高的。

快速算法流程

该算法流程如下:

(1)确定 Intra_16 × 16 方式下的最优预测模式,步骤同H.264 原算法。

(2)结合色度编码,计算待编码宏块在Intra_16 × 16 方式下的率失真代价RDCostI16。

(3) 计 算 最 优 Intra_16 × 16 预 测 模 式 下 待 编 码 宏 块 的SAD,如果 SAD<T1(QP≤20 时,T1=500;其余, T1=1000), 则跳到(6)。

(4)确定 Intra_4 × 4 方式下的最优预测模式。

将待编码宏块划分为 16 个 4 × 4 块,分别确定每个 4 × 4 块的最优预测模式:

1)用 9 种预测模式对 4 × 4 块进行预测;

2)分别对每种模式对应的预测残差块进行哈达马变换, 并计算变换后的绝对残差和 SATD;

3)计算SATD的平均值SATDaverage;

4)选择满足SATD ≤SATDaverage 条件的预测模式为候选模式;

5)分别对每种候选模式对应的预测残差块进行 DCT 变换/量化、反 DCT 变换/反量化,并计算其编码代价RDCost;

6)比较所有候选模式的 RDCost,选择具有最小 RDCost 的预测模式为当前 4×4 块的最优预测模式。

(5)结合色度编码,统计待编码宏块在Intra_4 × 4 方式下的率失真代价RDCostI4。

(6)确定最优的帧内预测模式,步骤同 H.264 原算法。

 

 

<<H.264 帧内预测和帧间预测的研究>>(硕士论文)

作者:武 敬

研究现状:

目前,帧间预测方面的研究主要集中在快速运动估计、快速参考帧选择和快速模式选择三个方向,特别是在H.264编码中最耗时、最复杂的运动估计方面,投入了大量研究工作,提出了很多快速算法,使得在编码效率几乎没有降低的情况下节省了可观的编码计算时间。这些算法大致可以分为两类:一类是优化运动估计算法,如基于六边形的搜索算法(HBS),增强的预测区域搜索法(EPZS),非对称十字型多六边形混和搜索(UMHexagonS)法以及ARPS-3法。其中UMHexagonS算法在取得相当好的PSNR性能的同时,比以前H.264采用的快速全搜索算法节省了90%-95%的运算量,目前已被JVT采纳。另一类是提前终止运动估计计算,如Libo Yang等人提出的可变块尺寸最优运动检测(VBBMD)算法。

在帧内预测方面,主要从两个方面解决计算复杂度过高的问题:一方面是简化代价函数,另一方面是缩小模式选择的范围。目前提出的快速算法主要有:PAN Feng等利用子块边缘的变化方向从预选模式中选取最有可能的预测方向,根据边缘方向直方图(Edge Direction Histogram)

预先排除一些可能性小的预测模式,从而减小复杂度。

Meng Bo Jun等提出EIP算法,利用代价函数和多阈值的方法提高了4×4子块的编码速度。但是,上述算法存在的主要不足是算法比较复杂,难于实现。因此研究更为有效且易于实现的帧内预测模式选择快速算法具有重要理论意义和应用价值。

视频图像质量的衡量标准

MSE和PSNR从总体上反映重建图像和原始图像的差别,不能反映少数像素点存在的较大灰度差别和较多像素点有较少的灰度差别等情况。对图像中各像素点同样对待,显然不能反映人眼的视觉特性。图像最终是给人观看的,因此合理的

图像质量评价方法还应充分考虑主观质量评价。

H.264中的分层结构

如何增强编码视频的网络适应性,扩展视频编码标准的应用范围日益成为人们关注的焦点。

为此,H.264在系统结构设计上引入了全新的分层设计概念,将整个编码系统分成视频编码层(Video Coding Layer,VCL)和网络提取层(Network Abstraction Layer,NAL),如图2.2所示。视频编码层VCL主要负责对数字视频进行高效编解码,提供具有高质量、高压缩比、健壮性、可分级等特性的视频编码码流。

这一部分也是整个H.264视频编码标准的核心部分,但是编码视频比特流对于不同的传输网络和传输协议并不具有一般的适应性。为此,H.264标准在视频编码层的外部定义了网络提取层NAL。NAL主要负责将视频编码层VCL产生的视频编码数据正确、恰当地映射到不同的传输网络。

当VCL产生的编码视频比特流将在某种特定网络中传输时,NAL针对这种网络及其传输协议的特性,对VCL的编码码流进行适合该网络及其传输协议的封装。这样H.264就可以在面向不同的传输网络时,灵活地提供不同的封装方式,增强了网络的适应性。NAL不但使H.264对目前现存的不同网络具有很强的网络友好性,而且使它对未来的网络同样具有很强的适应性。

H.264中的帧间预测

为了更高效的消除视频序列的时域冗余,H.264帧间预测采用了以下新技术:

(1)预测时所用块的大小可变

与仅使用16×16块进行预测相比,使用不同大小和形状的块可以使码率节省15%以上。

(2)精细的预测精度。

运动估计是利用视频图像的时域相关性,产生相应的运动矢量(Motion Vector,MV), 运动补偿是利用运动估计算出的运动矢量,将参考帧图像中的宏块移至水平和垂直方向上的相应位置,即可生成对被压缩图像的预测

H.264支持亮度分量的1/4像素和色度分量的1/8像素的运动估计。如此精细的预测精度较之整数精度可以使码率节省超过20%。

(3)支持多参考帧预测。

采用这一技术,可以改善运动估计的性能,提高H.264解码器的错误恢复能力,较之只使用一个参考帧,使用五个参考帧可以节省5%-10%的码率。

在H.264标准中,运动估计和运动补偿占了全部运算时间的1/2,运动补偿预测编码算法的关键是如何利用当前帧和参考帧估算运动矢量。

H.264帧间模式选择算法流程如下:

(1)对当前宏块的模式16×16,16×8,8×16执行运动估计并计算RDO;

(2)对每个8×8块的模式8×8、8×4、4×8和4×4执行运动估计并计算RDO, 选择RDO最小的模式作为8×8块的最佳模式;

(3)重复执行第二步直到计算完三个8×8块并得出8×8模式的RDO;

(4)为SKIP模式计算预测运动矢量和RDO;

(5)从16×16,16×8,8×16,8×8、8×4、4×8、4×4、SKIP中选择RDO最小的模式作为帧间宏块编码模式。

混合非对称十字多六边形搜索算法

混合非对称十字多六边形搜索算法(UMHexagonS)是目前搜索效果最好的快速搜索算法,已被H.264官方参考软件JM采用。UMHexagonS搜索过程分四步:运动矢量预测、非对称的十字形搜索、不均匀多重六边形搜索、扩展六边形搜索。

图3.10表示当搜索窗为16时的搜索过程,起始点为(0,0)。

(1)按照H.264标准的算法进行运动矢量预测,确定搜索的起始位置。

(2)非对称的十字形搜索。据观察,在自然运动的视频图像序列中,水平方向的运动幅度要大于垂直方向的运动,因此可以通过非对称的十字形搜索进行最佳运动矢量的初步搜索。所谓非对称是指以搜索起点为中心的十字形搜索范围水平方向为垂直方向的2倍,十字形搜索的水平方向长度为搜索窗口宽度,垂直方向为搜索窗口高度的一半,搜索点之间的步长为2。找到当前的最佳匹配点作为下一步的搜索中心。

(3)不均匀多重六边形搜索。这一步分为两步进行。先以当前的搜索中心为中心,在5×5范围内进行全搜索,

如图3.10中Step3.1的圆点所示;然后采用如图3.11 所示的16点六边形搜索模式,进行多重六边形搜索。六边形能覆盖更大的搜索区域,并且在六边形中左右两侧的搜索点数比上下两侧多,也符合自然运动的规律。这种16点六边形搜索由内至外逐层嵌套,搜索出最佳匹配块位置作为下一步搜索的中心。

(4)扩展六边形搜索。上一步的多重六边形搜索得到的运动矢量距搜索中心的距离不同,则运动矢量的精度也不同,当运动矢量位于距搜索中心较远的外部同心六边形区域时,其精度较低,因而需要在此基础上进一步采用一些基于中心的搜索模式进行细化搜索,一般采用六边形模板搜索。先用半径为2的六边形搜索,直至最佳点为六边形的中心,然后采用半径为1的小六边形(小菱形)继续搜索,搜索到最佳匹配位置点位于小六边形的中心为止。与全搜索相比,UMHexagonS能降低90%的整像素运动搜索计算量,而PSNR的下降小于0.1dB,码率基本保持不变,是一种比较好的整像素快速搜索算法。

帧内编码

帧内编码主要应用于以下几种情况:

(1)整个视频序列的第一帧(IDR)。由于编码视频序列的第一帧前没有任何已编码过的帧作为参考帧,因此必须采用帧内编码方式。

(2)I帧。由于规定I帧不参考其它帧的信息独立进行编码,因此I帧必须采用帧内编码方式。

(3)P帧和B帧中的部分宏块。在现有的视频编码标准中(除MPEG-4第二部分),都是先将输入图像在空间上进行宏块级的分割,然后以宏块为基本单位进行编码。对于P帧和B帧中的每一个宏块,都要按照帧间编码和帧内编码两种方式进行编码,利用率失真优化准则计算两种方式的编码代价。对于某一个宏块,如果帧内编码的代价小于帧间编码的代价,则该宏块采用帧内编码方式。造成这种现象主要是由于序列运动过于剧烈,使得参考帧中没有合适的参考块能够很好的H.264帧内预测和帧间预测的研究与待编码宏块匹配,从而导致帧间编码代价过高。另一方面,当待编码帧是场景切换后的第一帧时,由于失去了时间上的相关性,尽管是P帧或B帧,但还是要采用帧内编码方式。

(4)差错恢复:当解码一个采用帧间方式进行编码的宏块时,需要得到当前宏块的参考块信息。如果由于信道的问题导致传输过程中出现差错,在解码端不能得到参考块的信息或得到错误的信息时,当前宏块就不能按照帧间方式正确解码。对于这种受错误影响的区域,可以采用帧内编码方式进行差错恢复。在编码端,通过信源算法或缓冲区算法估计出待编码宏块对应的失真度,以确定该宏块是否采用帧内编码方式。这种差错恢复技术称为帧内更新,也是帧内编码的一个重要应用。

由于视频序列的空间相关性远小于其时间相关性,为了确保获得高压缩比和较好的重构品质,根据视频图像的局部纹理特征和像素值在不同方向上的变化走向,在H.264中总共提供17种帧内预测模式,这样可以对图像局部不同特性的纹理进行较为准确地预测。由图像的统计特性可知,相邻像素随着距离的增大,其相关性呈指数性递减,因此采用不同的块大小在变化起伏不定的场景中效果是不同的。在相对变换较大、包含多个不同对象的场景中,使用相对较小的块对不同的纹理进行更为精细的预测,以提供足够的预测精度。对于4×4块而言,可以对多种方向上的不同纹理特征进行极为准确的预测。而对于平滑的背景区域,使用16×16的块效果会更好,而且一般背景纹理相对平滑,起伏变化小,在标准中只提供了四种预测模式。对于色差块而言,由于人的视觉系统对色度变换的敏感度小于亮度变换的敏感度,因此,对于色度的预测只使用了8×8的块,共四种预测模式。

 

帧内预测方式

H.264采用了基于空间域进行预测的帧内预测算法,与H.263+高级帧内编码模式中DCT域的帧内预测相比, PSNR值平均提高了4.37dB[7]。

在H.264帧内编码中,每个宏块亮度信号都要完成9种4×4预测模式和4种16×16预测模式,然后通过预测模式选择,得出一种最佳预测模式使得编码性能和效率最高。H.264中模式选择方法有两种:

(1)率失真优化(RDO)方法:对每一种预测模式都要进行预测、整数变换、量化和变长编码,并进行反量化和反变换,再比较各种模式的编码码率和重建图像质量,选择最佳的一种。

(2)计算 Cost 值。 Cost 的计算方法为:

(a)根据一种预测模式构造出4×4的预测块 P ;

(b)计算原始块与预测块P之间的绝对误差和 SAD16

(c)计算Cost16 = SAD16 + 4 Rλ (QP)(4-1)

其中, λ (QP) 是量化因子QP的指数函数,如果当前模式是最有可能预测模式时 R 取值为0, 其他8种情况下R取值为1。SAD表示预测值与图像像素值的差值。

为了更准确地比较每种模式的 Cost 值,H.264还对这些差值进行Hadamard变换,将差值变换到频域求绝对差值和。在这里使用Hadamard变换而不是DCT变换,主要考虑到Hadamard变换比较简单,且比较接近DCT变换。在计算宏块的 Cost 值后,

将 Cost 值最小的模式选为最佳预测模式。对于亮度信号的模式选择,首先在9种4×4预测模式中根据最小 Cost 准则选出一种最佳预测模式,然后在4种16×16预测模式中同样根据最小 Cost 准则选出一种最佳预测模式,最后比较一个宏块做一次16×16预测后的 Cost 值 Cost16 和做16次4×4预测后的 Cost 值相加得到的总的 Cost值的大小,选取 Cost 值最小的作为最后宏块的预测模式。如果 Cost 值相同,4×4

预测模式将被优先选取,如果9种4×4预测模式或4种16×16预测模式中出现相同Cost 值时,序号较小的预测模式将被选为最佳预测模式。

实际上,H.264编码器为了得到最佳的模式通常采用RDO技术。对于每一种模式计算出率失真代价 RDCost 。图4.6给出了某一宏块某种模式下 RDCost 的计算过程。采用率失真优化模型可有效地提高编码的率失真效果,但率失真代价的计算需要确定模式对应的比特数以及重建图像与原始图像的失真,这就需要对每一种模式进行预测、变换、量化、编码,得到编码比特数;再对量化后的系数进行反量化、反变换、重建图像,从而得到重建图像与原始图像的失真,因此计算过程十分复杂。而对于不采用率失真优化模型,模式选择只需要进行预测、计算预测残差的SAD或SSD(Sum of Square Difference)。因此,相对而言,采用RDO使得计算复杂度大大增加。

快速帧内预测模式选择算法

减少帧内预测复杂度的方法分为两类:第一类是简化代价函数,第二类是缩小预测模式的选择范围。本文主要讨论第二类方法。对于这类方法,主要是利用当前块及其周围像素的某些特征,预先排除某些可能性很小的预测模式,或提前终止某些可能性小的模式的代价计算,从而降低帧内预测的复杂度。由于H.264帧内编码是基于帧内冗余性的,空间相关性较大。因此,基于空间域的快速算法在数量上占有绝对优势。

posted @ 2012-07-28 13:52  Mr.Rico  阅读(...)  评论(...编辑  收藏