H.264/AVC 帧内预测

u1s1,和265、266比起来,264的帧内预测真滴朴实无华

在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的。对亮度像素而言,P块用于4x4子块或者16x16宏块的相关操作。4x4亮度子块有9种可选预测模式,独立预测每一个4×4亮度子块,适用于带有大量细节的图像编码;16×16 亮度块有4 种预测模式,预测整个16×16 亮度块,适用于平坦区域图像编码;色度块也有4 种预测模式,类似于16×16 亮度块预测模式。

还有一种帧内编码模式称为I_PCM 编码模式。该模式下,编码器直接传输图像像素值,
而不经过预测和变换。在一些特殊的情况下,特别是图像内容不规则或者量化参数非常低时该模式比起“常规操作”(帧内预测—变换—量化—熵编码)效率更高

帧内预测使用的参考块一般都是使用帧内预测模式的临近块,而不是使用帧间预测模式的临近块,因为帧间预测会有运动补偿引发的误码扩散。

1. 4x4的亮度预测模式

 H.264/AVC 帧内预测_第1张图片

 此图展示了待编码像素a~p和参考的已重建像素A~Q,9中预测模式的示意图如下所示

H.264/AVC 帧内预测_第2张图片

 对于预测模式3~8,预测像素由A~M加权平均得到。

在预测过程中,每种模式都会算一遍,得到SAE值,选择SAE值最小的作为当前4x4的最终预测模式。

 2. 16x16的亮度块预测模式

16x16大小的宏块的亮度分量有4种预测模式,如下图所示:

H.264/AVC 帧内预测_第3张图片

 就简单的水平垂直DC和planer,我万万没想到264的这种大尺寸块没有角度预测模式。

3. 8x8的色度块预测模式

 每个帧内编码宏块的8x8色度分量由已编码左上方色度像素预测得到,cb和cr通常使用相同的预测模式。它的4种预测模式类似于前面16x16亮度块的4种预测模式,只不过模式号不同(DC是0,Hor是1,Ver是2,planer是3)。

4. 信号化帧内预测模式(Signalling intra prediction modes)

这个主要介绍的是怎么编码帧内预测模式,直接用原文了。

每个4×4 块帧内预测模式必须转变成信号传给解码器。该信息可能需大量比特表示,但邻近块的帧内模式通常是相关的。例如,A、B、E 分别为左边、上边和当前块,如果A 和B 预测模式为模式1,E 的最佳预测模式很可能也为模式1。所以通常利用这种关联性信号化4×4 帧内模式。

对每个当前块E,编码器和解码器计算最可能预测模式和A、B 预测模式的较小者。如果这些
相邻块不被提供(当前片外或者非帧内4×4 模式),相应值A 或B 置2(DC 预测模式)。

编码器分配每个4×4 块一个标志prev_intra4×4_pred_mode。该标志置1 时,使用最可能预测模式;置0 时,使用参数rem_intra4×4_pred_mode 来指明模式变rem_intra4×4_pred_mode 小于当前最可能模式时,预测模式选rem_intra4×4_pred_mode。否则预测模式为rem_intra4×4_pred_mode+1。rem_intra4×4_pred_mode 值为0~7。

举例:块A 和B 分别用模式3 和模式1 预测。最可能模式则为1,prev_intra4×4_pred_mode 置0,rem_intra4×4_pred_mode 被传送。取决于rem_intra4×4_pred_mode 的值,下表 所示的8 种预测模式中的一种被选定。

H.264/AVC 帧内预测_第4张图片

帧内16×16 亮度和色度预测模式在宏块头中指明。

这里需说明的是,包括帧内预测的所有预测都不能跨片边界预测,每片必须独立编解码。

可见,帧内预测以绝对误差和(SAE)为标准选取最佳预测模式,使预测帧更加接近原始 帧,减少了相互间的差异,去除时间上的数据冗余,提高了编码的压缩效率。帧内预测中,块或宏块利用已编码并重建的块作为参考,进行预测。具体编程时,编码器通过计算并比较各种模式下的SAE,选取SAE 值最小的模式作为最佳预测模式,并将该模式信息化,同时传送至解码端,以供正确解码。

你可能感兴趣的:(视频编解码,编码器,视频处理)