编解码标准简介"/>
HEVC视频编解码标准简介
系列文章目录
HEVC视频编解码标准简介
【x265编码器】章节1——lookahead模块分析
【x265编码器】章节2——编码流程及基于x265的编码器demo
【x265编码器】章节3——帧内预测流程
【x265编码器】章节4——帧间预测流程
【x265编码器】章节5——x265帧间运动估计流程
【x265编码器】章节6——x265的码率控制
【x265编码器】章节7——滤波模块
目录
1.概要
2.HEVC整体框架流程
3.帧内预测模块
帧内预测流程:
4.帧间预测模式
帧间预测流程:
merge模式流程:
skip模式:
inter模式(AMVP)流程:
5.变换量化
变换:
量化:
6.DBF去块滤波和SAO
DBF流程:
SAO:
BO流程:
EO流程:
7.熵编码
8.参考资料
1.概要
HEVC(即h.265)编码框架跟h.264一脉相承,除了多了一个SAO滤波模块,其他框架都没有变化,都是在这个基础提出了新算法,做了优化。
2.HEVC整体框架流程
其中与h.264标准在框架上不同的点是:
1.h.265会多一个SAO滤波模块;
2.h.264使用最大16x16的宏块作为编码单元,而h.265有CU(编码单元)、PU(预测单元)、TU(变换单元),其中CU支持4x4、8x8、16x16、32x32和64x64不同的尺寸;PU最大不超过CU尺寸;TU支持4x4、8x8、16x16和32x32;
3.帧内预测模块
h.264:原先只支持4x4和16x16亮度块划分,分别有9种预测模式和4种预测模式,后来因为新增了8x8的DCT,要求新增了8x8的亮度块划分,它的模式跟4x4的一样;另外色度块只支持8x8,即不划分直接预测,模式跟16x16的亮度块一样。
h.265:亮度块支持4x4、8x8、16x16、32x32和64x64划分,帧内预测模式支持35种。
帧内预测流程:
1.参考像素填充:如NxN大小的CU块,参考像素为左侧N个+左上角1个+上边N个=2N+1,如果实际可用像素不满足2N+1个,则需要根据填充规则直接进行填充;
2.参考像素平滑滤波:a.4x4不需要滤波;b.8x8只需对三个对角方向进行滤波,即模式2、18和34;c.16x16除了水平方向附近9、10和11,以及垂直方向25、26和27,不需要滤波外,其他27个角度都要;32x32除了水平模式10和垂直模式26外,其余31个角度模式都要滤波,且32x32块具有两种平滑滤波:常规平滑滤波和强平滑滤波。
3.计算预测值
4.帧间预测模式
h.265对比h.264优化的点有三个:
1.支持非对称的划分;
2.采用了更加合理的子像素插值算法,进一步提高帧内运动估计和运动补偿的准确度;h.264:1/2内插使用了6抽头滤波器,1/4内插则采用两端整数点和半像素点进行平均处理;h.265:1/2内插采用了8抽头,1/4采用了7抽头;
3.新增了merge模式;
帧间预测流程:
1.运动估计,得到运动矢量;
2.运动补偿;
3.运动参数的编码,有三种方式skip、merge和inter(也叫AMVP);
merge模式流程:
1.构建参考mvp候选表(5个),5个空余候选中最多选出4个,2个时域候选最多选出1个,不足则补0,凑齐5个候选;
2.选取最优的mvp;
3.确定参考块;
4.求预测残差;
5.编码残差和mvp索引;
skip模式:
skip是特殊的merge模式,即2Nx2N的编码块(CBF)为0的merge模式,实际上是不需要传输预测残差的merge模式。
inter模式(AMVP)流程:
1.构建候选表(2个);
2.选取最优的mvp;
3.在该mvp为起点,进行运动估计得到最优mv;
4.以该mv确定参考块;
5.计算预测残差,参考块-当前块=预测残差
6.mvp-mv求得运动向量残差;
7.编码;
inter和merge模式的不同点:1.候选个数不同;2.inter模式得到mvp后,还需要以这个为起点,继续进行运动估计得到最优mv;
5.变换量化
h.265相对h.264有以下的优化:
变换:
1.尺寸支持4x4、8x8、16x16和32x32;
2.支持4x4的离散正弦变换;
量化:
1.支持加权量化系数;
2.也支持自定义的量化矩阵;
备注:
1.量化参数和量化步长:
2.率失真优化的编码模式选择,拉格朗日乘子:
3.率失真优化的运动估计,拉格朗日乘子:
6.DBF去块滤波和SAO
DBF是仅用于块边界处的像素值,而SAO是针对满足条件的所有像素;
编码块效应产生的原因:基于块的编码方式,同时由于变换量化过程中,量化是一个有损的过程,所以导致块效应出现;
SAO是为了解决振铃效应,产生的原因是:跳变信号经过系统输出后产生失真的吉布斯现象;
DBF流程:
1.根据编码参数和边界强度(BS)判断目标边界是否需要进行滤波;
2.判断进行普通滤波还是强滤波;
3.具体的滤波处理;
滤波是基于8x8进行,滤波的顺序:亮度垂直边界、亮度水平边界、色度垂直边界、色度水平边界;
边界强度是0-2,2为最强,两边中只要有帧内模式,则BS=2;BS>0时,就要进行滤波,其中普通滤波每次处理3个像素,强滤波每边处理3个像素;
h.264:去方块滤波的强度为5个等级;
h.265:去方块滤波的强度仅有3个等级;
SAO:
SAO的滤波类型有两种,边缘补偿EO和带补偿BO;
BO流程:
1.对像素0-255进行32等分;
2.统计各个带的平均值;
3.计算得到预测图像与原始图像偏差值最大的4个连续的带,并计算偏差值;
4.编码传输BO模式并附加这4个补偿值;
EO流程:
1.确认像素梯度方向,从水平、垂直、135度、45度中确定一个方向,整个CTU都认为是该模式;
2.在给定EO模式情况下,计算CTU中所有点和周围两个点的关系,从谷值、峰值、凹拐点、凸拐点其他这五种中确认一种;
3.编码传输CTU的4个补偿值;
7.熵编码
h.265基本上延用了h.264的CABAC(基于上下文的自适应二进制算法编码)方法,改变的地方不多。主要特点如下:
1.采用二进制算法编码,将所有的语法元素转化为二进制符号串,消除了乘法运算操作,降低了计算复杂度,提高了编码效率;
2.依据信息熵理论,符号概率分布相差越大,则其变长编码的效率越高,二进制化其实是人为改变了符号分布概率,所以针对不同的编码参数信息用不同的上下文模型,进一步提高编码效率;
8.参考资料
《H.265/HEVC视频编码新标准及其拓展》朱秀昌、刘峰、胡栋编著
点赞、收藏,会是我继续写作的动力!赠人玫瑰,手有余香。
更多推荐
HEVC视频编解码标准简介
发布评论