视频编码第一节:H.265/HEVC原理——入门

写在开头:

        最近工作原因接触了视频编码方面的技术,觉得有必要对经典的H.265/HEVC视频编码技术了解学习,开这个版块的博客目的一方面作为学习笔记,另一方面希望能多和大家一起沟通交流,有任何不足不对的地方,还请大家多多指教。

        这个系列首先介绍H.265/HEVC视频编码主要框架,之后介绍大框架下几个关键的模块以及关键的知识点。(本节在介绍H.265/HEVC视频编码框架的基础上,还会记录关于各个模块的一些问题,待后续研究后解答,也欢迎大家提问)

1, H.265/HEVC视频编码框架

从根本上来说,H.265/HEVC视频编码标准的编码框架相比之前的H.264等并没有革命性的改变。类似于以往的国际标准,H.265/HEVC仍旧采用混合编码框架,如下图。

视频编码第一节:H.265/HEVC原理——入门_第1张图片

1. 帧内预测

该模块主要用于去除图像的空间相关性。通过编码后的重构块信息来预测当前像素块以去除空间冗余信息,提高图像的压缩效率。与以往的标准相比,H.265/HEVC支持更多的帧内预测模式。

Q1,   如何通过重构块预测当前像素块?

Q2,相比H.264多了哪些帧内预测模式?为了更快?为了预测更准确?

 

2. 帧间预测

该模块用于去除图像的相关性,帧间预测通过将已编码后重建图像作为当前帧的参考图像,来获取各个块的运动信息(计算块的运动信息寻找最匹配的块作为预测参考块),从而去除时间冗余,提高压缩效率。在H.265/HEVC中,帧间预测可采用单向和双向的参考图像来进行预测,包括类似H.264/AVC中分层B帧的预测结构。

Q1: 如何进行分块CU?

Q2: 如何计算运动信息

Q3: 如何选择预测参考块

Q4: 单向和双向的参考图像是什么意思?FFmpeg工具等如何查看或修改相关参数

Q5:什么是分层B帧结构? Pyramid B帧结构?

Q6: FFmpeg工具等参考帧个数是否可调

 

3.变换量化

该模块通过对残差数据进行变换量化以去除频域相关性,对数据进行有损压缩。变换编码将图像从时域信号变换至频域,将能量集中至低频区域。量化模块可以减小图像编码的动态范围。变换编码和量化模块从原理上是两个独立的过程,但是在H.265/HEVC中,两个过程相互结合,减少了计算复杂度。

Q1: 对什么信息需要变换量化?

A1: 视频编码器对预测后的残差而不是原始像素值进行变换、量化、熵编码,大幅提高编码效率

Q2: 变换为频域后将高频信息舍弃吗?

Q3: 量化模块为什么可以缩小图像编码的动态范围?

Q4: H.265 如何结合变换和量化两个模块达到减少计算复杂度的目的

 

4. 去方块滤波

在基于块的视频编码中,形成的重构图像会出现方块效应,采用去方块滤波可以削弱甚至消除方块效应的目的,提高图像的主观质量和压缩效率。H.265/HEVC仍然是基于块的视频编码,因此延续了环内去方块滤波的思想。

Q1: 什么是方块效应?方块效应的图像长什么样子?

Q2: 为什么会出现方块效应?

Q3: 为什么去方块滤波可以削弱甚至消除方块效应?

Q4: 环内去方块滤波的思想是什么?

 

5. 样点自适应补偿

样点自适应补偿(Sample Adaptive Offset, SAO)滤波处于去方块滤波之后,通过解析去方块滤波后的像素的统计特性,为像素添加相应的偏移值,可以在一定程度上削弱振铃效应,提高图像的主观质量和压缩效率。该技术为H.265/HEVC新增技术。

Q1: 什么是振铃效应?振铃效应图像长什么样?

Q2:削弱振铃效应,为什么可以提升压缩效率

Q3: 通过解析去方块滤波后的像素的统计特性,为像素添加相应的偏移后,为什么可以削弱振铃效应

 

6. 熵编码

该模块将编码控制数据、量化变换系数、帧内预测数据以及运动数据等编码为二进制流进行存储或传输。熵编码模块的输出数据即原始视频压缩后的码流。H.265/HEVC中采用先进的基于上下文的自适应二进制算术编码(CABAC)进行熵编码,引入了并行处理架构,在速度、压缩率和内存占用等方面均得到了大幅改善。

Q1: 熵编码都对哪些数据编码?

Q2:CABAC的原理是什么?

 

下节介绍H.265/HEVC的编码单元

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(视频压缩)