HEVC 编解码框架

一、基本的编解码原理

1、 包含的模块、每个模块的作用、 模块的原理

     编码器的流程:首先编码器是将yuv数据经过不同的 协议的 算法 压缩 成对应协议的流。具体来说首先将原始图像进行分块, 然后编码器中的预测模块 生成预测块。 将原始图像的块  同预测块相减 就得到残差数据,残差经过量化 变换 熵编码  后得到码流。这个码流加上预测所需要的一些信息(如预测模式,mv数据等)组成编码后的码流数据。其中预测模块的预测数据是从哪里来的: 预测的数据来自于之前的残差数据经过反变换、反量化、预测、 滤波后得到的重构数据。

    解码器的流程: 首先将编码后的码流 经过熵解码, 然后反变换 反量化然后帧内和帧间的预测  最后进行滤波 得到重构图像。

1.1 码流结构

编码完成之后的码流中还存在描述解码相关的语法元素。  这些语法元素是按照编码的分层结构进行组织的。

包括 sps、pps、vps。

按照层次从上到下 GOP(图像组)-- 图像 -- (slice)---(tile(不一定有))--- ctu -- cu

属于GOP层语法元素 存储在序列参数集(Sequence Parameter Set,SPS)

SPS包含了一个CVS (Coded Video Sequence)中所有图像共用的信息。其中CVS被定义为一个GOP编码后所生成的压缩数据。SPS的内容大致包括解码相关信息,如档次级别、分辨率、某档次中编码工具开关标识和涉及的参数、时域可分级信息等。

属于Slice层中共用 的语法元素 存储在图像参数集(PictureParameter Set,PPS)

PPS包含一幅图像所用的公共参数,即一幅图像中所有SS引用同一个PPS。其大致内容包括初始图像控制信息,如初始量化参数(Quantization Parameter,QP)、分块信息等。此外,为了兼容标准在其他应用.上的扩展,例如可分级视频编码器、多视点视频编码器,

视频参数集( Video Parameter Set,VPS)

内容大致包括多个子层共享的语法元素,其他不属于SPS的特定信息等。

对于-一个SS,通过引用它所使用的PPS,该PPS又引用其对应的SPS,该SPS又引用它对应的VPS,最终得到SS的公用信息。

参数集是一个独立的数据单位,它包含视频的不同层级编码单元的共享信息,只有当参数集直接或间接被sS引用时才有效。一个参数集并不对应某个特定的图像或CVS,同一个VPS或SPS可以被多个CVS引用,同一个PPS可以被多个图像引用。

uploading.4e448015.gif正在上传…重新上传取消

 

uploading.4e448015.gif正在上传…重新上传取消

 

1.2 帧间预测原理了解

    基于块的方式进行处理的、从参考帧来预测预测当前像素的值。然后编码传输预测值和参考值的预测残差 以及 当前块到参考块的位移 称为运动向量。帧间预测是指利用视频时间域的相关性,使用邻近已编码图像像素预测当前图像的像素,以达到有效去除视频时域冗余的目的。由于视频序列通常包括较强的时域相关性,因此预测残差通常是“平坦的”,即很多残差值接近于“0”。将残差信号作为后续模块的输入进行变换、量化、扫描及熵编码,可实现对视频信号的高效压缩。

    目前主要的视频编码标准帧间预测部分都采用了基于块的运动补偿技术。其主要原理是为当前图像的每个像素块在之前已编码图像中寻找一个最佳匹配块,该过程称为运动估计( Motion Estimation,ME)。其中用于预测的图像称为参考图(Reference Frame),参考块到当前像素块的位移称为运动向量(Motion Vector, MV),当前像素块与参考块的差值称为预测残差( Prediction Residual )。

编码 各种方法运用的目标是:

1、要保证解码端恢复的图像损失尽 可能的小 

2、同时编出来的码流也要尽可能的小 

3、编码复杂度也要尽可能的小

三个目标是相互矛盾、要保证码流越小,那么编码损失的可能就越多。需要在这三个目标之间尽可能的达到平衡帧间预测各种方法的使用就是为了保证上面目标 的平衡。有些方法是H261 H264 MPEG4 早前的协议进行 改进而来, 虽然增加了编码复杂度, 但是可以实现编码码流小、编码损失少。

1、 B帧图像定义

    在H.261标准中,P图像的预测方式必须是由前一幅图像预测当前图像,这种方式称为“前向预测”( Forward Prediction)。但实际场景中往往会产生不可预测的运动和遮挡,因此当前图像的某些像素块可能无法从之前的图像中找到匹配块,而在其之后的图像中可以很容易地找到匹配块。为此,MPEG- -1标准”定义了第三类图像-B图像,并规定B图像可以使用3种预测方式:前向预测、后向预测( Backward Prediction)以及双向预测。这样,B图像中的一一个宏块可对应两个MV:--个由前向预测得来,另一个由后向预测得来。

2、亚像素精度运动估计

    由于自然界物体运动具有连续性,因此相邻两图像之间物体的运动不一定是以整像素为基本单位的,而有可能以半像素、1/4 像素甚至1/8像素为单位。此时若仅使用整像素精度运动估计会出现匹配不准确的问题,导致运动补偿残差幅度较大,影响编码效率。而应将运动估计的精度提升到亚像素级别,这可以通过对参考图像像素点进行插值来实现。1/4像素精度相比于1/2 像素精度时的编码效率有明显的提高,但是1/8像素精度相比于1/4 像素精度时的编码效率除了高码率情况以外并没有明显的提升,而且1/8 像素精度运动估计更为复杂。因此现有标准H.264/AVC以及H.265/HEVC都使用1/4 像素精度运动估计。插值就是利用周围像素 在像素间的位置生成一个新的像素。

3、块的划分

    为了尽量提高运动补偿的精度,H.264/AVC 规定了7 种大小的运动补偿块, 分别为16x16、 16x8、 8x16、8x8、8x4、4x8、4x4,并且一个宏块内部允许存在不同大小块的组合。编码器可以根据视频内容自适应地选择块大小,例如对于多细节运动区域以及两个具有不同运动形式的不规则物体的边界处可以使用小块,而静止区域或大面积共同运动区域可以使用较大的块。

4、mv预测

    在大多数图像和视频中,一个运动物体可能会覆盖多个运动补偿块,因此空间域相邻块的运动向量具有较强的相关性。若使用相邻已编码块对当前块MV进行预测,将二者差值进行编码,则会大幅节省编码MV所需的比特数。同时,由于物体运动具有连续  性,因此相邻图像同一位置像素块的MV也具有一-定相关性。H.264/AVC 使用了空域和时域两种MV的预测方式。空域跟时域预测 跟帧内、帧间预测的方式类似。

5、 merge 和 AVMP

    空域上相邻块的MV具有较强的相关性;同时,MV在时域上也具有一定的相关性。若利用空域或时域上相邻块的MV对当前块MV进行预测,仅对预测残差进行编码,则能够大幅节省MV的编码比特数。H.265/HEVC在MV的预测方面提出了两种新的技术一Merge技术和AMVP技术。Merge和AMVP技术都使用了空域和时域MV预测的思想,通过建立候选MV列表,选取性能最优的-一个作为当前PU的预测MV。二者区别主要表现在以下方面。①Merge可以看成一种编码模式,在该模式下,当前PU的MV直接由空域(或时域),上邻近的PU预测得到,不存在MVD;而AMVP可以看成一-种MV预测技术,编码器只需要对实际MV与预测MV的差值进行编码,因此是存在MVD的。

Merge技术和AMVP技术 都分别包含了空域和 时域两种方式。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章