帧内预测模式
- 格式:doc
- 大小:28.00 KB
- 文档页数:2
HEVC帧内预测编码(一)帧内预测编码原理1、HEVC的基本编码框架如图2.1所示,其核心编码模块包括:帧内/间预测、变换和量化、炮编码、环内滤波等等。
编码器控制模块根据视频顿中不同图像块的局部特性,选择该图像块所釆用的编码模式。
(1)对帧内预测编码的块进行频域或空域预测;(2)对帧间预测编码的块进行运动补偿预测;(3)预测的残差再通过变换和量化处理形成残差系数,最后通过熵编码器生成最终的码流。
HEVC的基本编码框架图1、基本概念(1)编码是以尺寸为]6 x 16的宏块(MB)为单位进行的。
一个宏块由一个尺寸为16 X 16的亮度像素块和两个尺寸为8x8的色度像素块Cb和Cr组成。
根据预测模式的不同,一个宏块可以划分为多个子块进行预测。
(2)编码单元(CU):每个CU包含着与之相关联的预测单元(PU)和变换单元(TU)。
3、帧内预测模式(1)帧内预测是指通过当前帖中已编码块的重构图像预测当前块。
HEVC—共定义了35种帧内预测模式。
HEVC帧内预测模式(2)参考像素的选择设当前块的左上角第一个像素为坐标原点,(x,y)为坐标值,,R x y 表示参考像素,P(x,y)表示当前块的预测像素。
(3)模式选择利用拉格朗日率失真优化模型(RDO ):J =D +R λ⋅选择最合适的帧内预测模式。
(4)模式编码(a )建立一个帧内预测候选列表candModeList,表中有三种候选预测模式,用于存储相邻PU 的预测模式;(b )candModeList 建立完成后,可利用该列表对当前PU 模式信息进行编码。
4、帧内预测过程理论上,HEVC 的帧内预测可以分为三个步骤:1、判断当前TU 相邻参考像素是否可用,获取相邻参考像素;2、对参考像素进行滤波;3、根据滤波后的参考像素以及预测模式,计算当前TU 的预测像素值。
在代码实现中,这几部分分别对应,如以下的流程图所示:(二)源代码:1、fillReferenceSamples 函数它主要功能是在真正进行帧内预测之前,使用重建后的Yuv 图像对当前PU 的相邻样点进行赋值,为接下来进行的角度预测提供参考样点值。
hevc原理HEVC(High Efficiency Video Coding)是一种高效的视频编码技术,它是H.264/AVC的继任者,由ISO/IEC 23008-10和ITU-T H.265标准制定。
HEVC的主要目标是提高视频压缩效率,相较于H.264/AVC,它在相同画质条件下可以将码率降低50%,从而节省带宽和存储空间。
HEVC的原理主要包括以下几个方面:1. 空间预测:HEVC继承了H.264/AVC中的空间预测技术,包括相邻帧预测、隔帧预测等。
通过参考帧之间的预测关系,可以减少冗余信息,进一步提高压缩效率。
2. 帧内预测:HEVC引入了更多的帧内预测模式,包括水平、垂直、DC、角度等,用于预测当前块的像素值。
这些预测模式可以减少帧内冗余,从而降低码率。
3. 变换和量化:与H.264/AVC类似,HEVC使用离散余弦变换(DCT)对预测残差进行变换,然后对变换系数进行量化,从而降低数据量。
4. 熵编码:HEVC采用了基于Context-Adaptive Binary Arithmetic Coding(CABAC)的熵编码方法,与H.264/AVC中的霍夫曼编码相比,CABAC能够在相同码率下提供更好的压缩性能。
5. 率失真优化:HEVC通过率失真优化技术,根据视频内容的特性,自适应地调整量化参数,以达到最佳的压缩效果。
6. 层次化结构:HEVC支持层次化结构,允许编码器和解码器根据需求灵活地选择不同的配置,以满足不同场景的应用需求。
总之,HEVC通过多种技术手段提高视频编码效率,使得在相同画质条件下,码率降低,从而为用户节省带宽和存储空间。
然而,相比H.264/AVC,HEVC的计算复杂度更高,可能导致实时解码性能下降。
因此,在实际应用中,需要根据具体需求权衡画质与计算性能。
帧内宏块预测编码模式的改进:主要是提前退出,从而减少运算次数,达到提高运动估计速度的目标。
或者根据周围块的预测编码模式提前预判本块可能的编码模式,减少计算量。
还可以采取减少编码模式的策略,将很少使用的编码模式直接省略。
利用纹理信息预先排除不可能的编码模式。
1、提前预判编码模式:根据周围块的预测模式提前预判本块编码模式。
(1)16X16块时
当LEFT和TOP都存在时,其编码模式最多有4种,I_PRED_16x16_V | I_PRED_16x16_H | I_PRED_16x16_DC | I_PRED_16x16_P;
当只有左块LEFT存在时,其编码模式有两种:I_PRED_16x16_DC_LEFT | I_PRED_16x16_H;
当只有上块TOP存在时,其编码模式有两种:I_PRED_16x16_DC_TOP | I_PRED_16x16_V;当左块和上块都不存在时,其编码模式只能为:I_PRED_16x16_DC_128。
(2)4X4块时
当LEFT和TOP都存在时,可能编码模式分两种情形:
(A)当左上块也存在时,有9种:I_PRED_4x4_DC | I_PRED_4x4_H | I_PRED_4x4_V | I_PRED_4x4_DDL | I_PRED_4x4_DDR | I_PRED_4x4_VR | I_PRED_4x4_HD | I_PRED_4x4_VL | I_PRED_4x4_HU;
(B)当左上块不存在时,有6种:I_PRED_4x4_DC | I_PRED_4x4_H | I_PRED_4x4_V | I_PRED_4x4_DDL | I_PRED_4x4_VL | I_PRED_4x4_HU;
当只有左块存在时,可能编码模式有3种:I_PRED_4x4_DC_LEFT | I_PRED_4x4_H | I_PRED_4x4_HU;
当只有上块存在时,可能编码模式有4种:I_PRED_4x4_DC_TOP | I_PRED_4x4_V | I_PRED_4x4_DDL | I_PRED_4x4_VL;
当左块与上块都不存在时,其编码模式只能为:I_PRED_4x4_DC_128。
(3)提前预判准则:在预测编码中,由于每帧图像的第一列宏块和第一行宏块的编码模式对其他块的编码模式起着非常重要的作用,所以对第一行和第一列宏块的编码模式不进行提前预判别。
除此之外,当左块和上块都存在且它们的编码模式相同时:PRED_MODE = LEFT_MODE = TOP_MODE。
(包括4X4分块及16X16宏块)考虑其最可能的预测模式为垂直模式,所以当垂直模式与水平模式代价相等时,首选垂直模式为其最优模式。
2、提前跳出:主要针对是否进行4X4分块;如果进行4X4分块,能否提前结束4X4块的编码模式代价运算。
(1)当左块和上块都存在,且其最小代价编码模式都为16X16时,不进行4X4分块运算。
(2)对于16X16宏块,当该16X16块的某次编码模式代价很小时(某个阈值),直接结束代价运算,并把该次编码模式选定为该16X16块代价最小16X16编码模式
(3)如果进行4X4分块运算,当该4X4块的某个编码模式代价很小时(某个阈值),直接结束代价运算,并把该次编码模式选定为该4X4块代价最小4X4编码模式。
(4)如果4X4块编码代价和已经大于16X16模式时,提前结束4X4分块代价运算,并且选用16X16模式为最小代价编码模式。
3、利用纹理信息:根据纹理信息预先排除或者选择可能的编码模式
(1)16X16块时
(A)当纹理信息极其复杂(可以计算宏块像素点差值的平方和,即当其大于某个阈值时,也即无明显边界),直接将该16X16块编码模式设置为I_PRED_16x16_DC_128。
(B)如果纹理很复杂时,直接进行4X4块子编码模式代价计算(可以计算宏块像素点差值的平方和,即当其大于某个阈值且不满足A中的条件时)
(C)如果纹理信息很简单,则直接跳过4X4编码模式代价计算(可以计算宏块像素点差值的平方和,即当其小于某个阈值时),且将其编码模式预设为水平模式或垂直模式。
(2)4X4块时
(A)当4X4块像素点差值的平方和为0时或者小于某个阈值时,可将其编码模式预设为水平模式或垂直模式。
(B)当纹理信息极其复杂,(可以计算宏块像素点差值的平方和,即当其大于某个阈值时,也即无明显边界),直接将该4X4块编码模式设置为I_PRED_4x4_DC_128。
(3)其他更精确的纹理信息获取方式。