HEVC学习提纲

一、关于标准

JPEG图片、mp3、mp4、DVD等。多媒体编码格式,蕴含的技术均在标准中定义。

1. ITU-T H.26x系列视频:H.263、H.263/H.263+/H.263++、H.264,H.265(HEVC)、H.266

2. MPEG系列多媒体:MPEG1(VCD)、MEPG2(DVD,音频mp3)、MPEG4(mp4,AVC/H.264)、HEVC(H.265)

3. AVS视频:AVS1.0,AVS2.0(4K),AVS3.0(8K)

 

二、关于图像与视频

1. 像素:pixel,图像像素、显示设备像素。亮度、色度。亮度值(0-255)。色度值(0-255)。RGB(三原色):RGB三色光互相叠加。YUV/YCbCr,Y表示明亮度 ,UV表示色度。Cr /Cb分别反映RGB红色部分/蓝色部分与RGB信号亮度值之间的差异。

2. 采样,量化,位数,采样位数,量化位数/位深/比特数,量化误差。

3. 人眼对亮度的敏感度大于色度:色度亚采样。

4. 图像:尺寸(像素数)、显示尺寸、分辨率。

5. 视频:帧、帧速率(帧率、帧频)、码率。显示方式:隔行扫描(顶场、底场)、逐行扫描。视频由连续图像构成。

6. 图像的数字化表示:bmp,数据量大。

7. 编码、解码、译码、压缩、解压、编码器、译码器、播放器。

8. 多视角(multiview)、3D视频、全息(带景深信息)。

9. 扫描方式:隔行扫描,逐行扫描。

10. 图像格式:sub-QCIF,QCIF,... HDTV,HRI(超高清)。

 

三、视频压缩基本原理

1. 信息的冗余表达:逐像素固定位数表达是多余的。20 20 20 20 20 100 100 100 100 150 150= 4个20+4个100+2个150。

2. 行程编码:重复个数1+数值1、重复个数2+数值2。适合重复有规律的数值。

3. 熵编码:VLC,可变长编码,用短码表示频繁出现的数据。霍夫曼编码:Huffman Coding。比如用b00表示20(8bit),b010表示100(8bit),b0111表示150(8bit)。需要事先计算字符出现概率,建立编码表。

4. 人眼对高频分量不敏感。只保留低频分量,去除高频分量。做法:时域信号转换为频域信号。时域数值-->代表某频率分留的系数。可以互换,在播放时恢复。

5. 人眼分辨率有限:分不出细微的亮度或色度差,比如看不出亮度255和254的差异。分不出快速的变化(视觉暂留):25fp。

6. 时间相关性(时间冗余):前后几帧之间存在强相关性。以一参考帧为基准,差值很小(残差);I帧,P帧,B帧。

7. 空间相关性(空间冗余):同一帧内部,形成残差。

8. 有损压缩、无损压缩。

9. 基本流程:残差、变换、量化、熵编码。

 

四、预测编码基本概念

1. 预测编码,失真,预测偏差/预测误差(帧内)/预测残差(帧间),代价,率失真。

2. 帧内预测,帧间预测,帧间帧内预测。

3. 帧内预测参考像素:邻近已编码重建像素;

4. 帧间预测参考像素:当前图像前已编码图像中匹配块的重建像素

 

五、帧内预测

1. H.264模式:垂直模式,水平模式,DC模式,Plane模式,对角模式

2. HEVC模式:35种预测模式,Planar模式(水平+垂直滤波器的平均),DC模式,33种角度模式。若对每一个模式都进行预测、变换、量化等操作,找出最优模式,则速度很慢。若先遍历35种帧内预测模式,对于每一种模式都进行预测操作,选出代价最优的几种模式作为候选模式,只对这几种模式进行预测、变换、量化等操作,因为候选列表中的模式的数量比较少,因此速度会很快。

3. 相邻块预测模式的相关性,可以使用相邻PU的帧内模式来预测当前PU的帧内模式。预测之后可以得到若干个模式,把这些模式加入模式候选列表中。

4. 参考像素滤波(加权平均),预测误差。

5. HEVC亮度分量支持5种大小尺寸的PU(Prediction Unit)。

 

六、帧间预测

1. 基于块的预测,最佳匹配块,运动估计,运动补偿(运动预测),参考图像,运动向量(运动矢量,MV),预测残差。

2. 运动估计精度:1/N像素,亚像素精度运动估计,插值,搜索算法,快速搜索算法。

3. P帧,B帧(2个MV)。

4. 运动估计准则:最小均方误差(MSE)、绝对误差和(SAD)等。

5. 拉格朗日代价:综合考虑SAD和运动信息编码比特,取加权平均值的最小值。

6. 空间相邻块运动向量相关性,空域预测,MV预测,差分编码。

7. H.264时间相邻运动向量相关性,时域预测,B帧同向2个MV平均,直接模式MV预测(匀速运动)。

8. HEVC新增MV时域预测:Merge模式,AMVP。

9. Merge:建立包括5个MV的候选列表,选择最优一个,将其索引传递给解码侧。解码侧按同样规则建立同样的包括5个候选MV的列表,并得到索引后确定最优MV。空域候选列表、时域候选列表。

10. AMVP:高级运动向量预测,类似Merge,长度为2,选择最优MV为预测MV,然后计算MV与预测MV之间的差值,并传递到译码侧。

11. 多参考图像、多参考图像加权预测、显式/隐式加权预测。

 

七、DCT变换

1. 时域/空间域,变换编码,变换域,频域(类似于油画过程),连续信号傅里叶变换,余弦变换,离散余弦变换(DCT),IDCT变换。

2. 计算复杂度为N*N(N为像素数)。

3.分块(变换单元):8*8(宏块,MB)--->增加4*4----->增加16*16/32*32(HEVC),降低复杂度,提高并行度。

4. 变换后系数排列和zigzag扫描(可以形成更多连续0系数),不均匀量化(高频量化因子大)。

5. 作用对象:I帧分块,帧内残差,P或B帧间残差。

6. DST变换:仅用于帧内4*4亮度残差编码。

 

八、量化

1. 量化,反量化,多对一,标量量化,量化步长,矢量量化,均匀量化。

2. 量化误差,最优量化,熵编码量化器,自适应量化。

3. 率失真优化量化(RDOQ):码率+失真。

4. 量化参数QP(step),量化组QG,量化矩阵。

5. QP预测编码。

 

九、环路滤波

1. 方块效应、振铃效应。

2. 去方块滤波:边界平滑,消除方块效应。滤波决策,强滤波,弱滤波,不滤波。

3. SAO:样点自适应补偿,消除振铃,调平整。

 

十、熵编码

1. CAVLC 基于上下文的自适应变长编码,用于编码SEI、参数集、片头。变长码。零阶(或者k阶)哥伦布指数编码(变长编码,类似于哈夫曼编码那样),主要用于VPS、SPS、PPS、slice头部信息的编码。对于一个数字,先把它转换成索引index(即codeNum)。if n > 0, index= 2n - 1。else index= -2n。

2. 算术编码:符号序列概率。输入一串数输出一个[0,1)之间的实数。把[0,1)区间划分为互不重叠的子区间,子区间的宽度恰好是各符号序列的概率。这样信源发出的不同符号序列将与各子区间一一对应,因此每个子区间内的任意一个实数都可以用来表示对应的符号序列,这个数就是该符号序列所对应的码字。显然,一串符号序列发生的概率越大,对应的子区间就越宽,要表达它所用的比特数就减少,因而相应的码字就越短。假设信源符号为{a, b, c, d},这些符号的概率分别为{ 0.1, 0.4, 0.2, 0.3 },根据这些概率可把间隔[0, 1)分成4个子间隔:[0, 0.1), [0.1, 0.5), [0.5, 0.7), [0.7, 1), 如果二进制消息序列的输入为:c a d a c d b。编码时首先输入的符号是c,找到它的编码范围是[0.5, 0.7)。由于消息中第二个符号a的编码范围是[0, 0.1),因此它的间隔就取[0.5, 0.7)的第一个十分之一作为新间隔[0.5, 0.52)(即在上一步输入后确定的区间内再等比例划分)。依此类推,编码第3个符号d时取新间隔为[0.514, 0.52),编码第4个符号a时,取新间隔为[0.514, 0.5146)。… 。消息的编码输出可以是最后一个间隔中的任意数(取比特数最少的)。假设结果是0.51439,则可以直接转换为51439+终止符。如果是0.514394,则转换为514394+终止符,需要更多比特表示。

3. CABAC:基于上下文的自适应二进制算术编码。

(1) 二进制化,上下文建模,二进制算术编码。HEVC中除参数集、SEI和slice头部外均采用CABAC。上下文建模对0和1的概率进行更新,使概率能够实时准确地反映0和1的分布。最大概率符号MPS(1bit)和概率状态索引pStateIdx(6bit),这样一个上下文模型可用一个7位的无符号整数表示。

(2) 对近似均匀分布的语法元素,在编码和解码时选择盘路(bypass)模式,可以免除上下文建模,提高编解码的速度。

 

十一、网络适配层

 

十二、HEVC编码结构

1. GOP:图像组(Group Of Pictures,GOP),每一个GOP以IDR(Instantaneous Decoding Refresh)图像开始,各个GOP之间独立编解码。每个GOP又被划分为多个片(Slice),片与片之间进行独立编解码。其主要目的之一是在数据丢失情况下进行重新同步。CVS(编码视频序列):Coded video sequence,一个GOP编码后所生成的压缩数据。

2. Slice:片/条带,独立编码/解码,当数据丢失后能再次保证解码同步。每个片由一个或多个片段(Slice Segment,SS)组成。

3. Tile:在HEVC中一幅图像可以划分为若干个Tile,即从从水平和垂直方向将图像分割为若干个矩形区域,把这些矩形区域称为Tile。同样可以独立编码/解码,增强并行处理能力。

4. Slice与Tile关系:可以独立存在/不存在,也可以互相包含,形状不同。

5. Slice条带/Tile区块->CTU树形编码单元(CTB树形编码块)->CU编码单元(CB编码块)->PU预测单元(PB预测块)/TU变换单元(TB变换块)。

6. CU:帧内编码或帧间编码或帧内帧间编码决定点。对于luma CU:有35个可选的帧内预测方向(Plannar(0)、DC(1)和方向预测(2~34))。

7. TU:变换编码作用区域。

8. PU:预测编码作用区域。TU和PU无包含关系,但在帧内编码下,由于相邻PU间有依赖关系,一个TU至多对应一个PU,可以限定预测范围(减少搜索范围)。

9. 单元:包括色度xx单元和亮度xx单元。

10. 块:亮度xx块或色度xx块。

 

十三、HEVC语法元素

1. 档次(profile):main,main 10, main still picture

2. 层(level):尺寸等,13级

3. 级别(tier):码率,Main, High

4. SPS:序列参数集(Sequence Parameter Set,SPS),SPS包含了一个CVS(Coded Video Sequence)中所有图像共用的信息。SPS的内容大致包括解码相关信息,如档次级别、分辨率、某档次中编码工具开关标识和涉及的参数、时域可分级信息等。

5. PPS:图像参数集(Picture Parameter Set,PPS),PPS包含一幅图像所用的公共参数,即一幅图像中所有SS引用同一个PPS。其大致内容包括初始图像控制信息,如初始量化参数(Quantization Parameter,QP)、分块信息等。

6. VPS:视频参数集(Video Parameter Set,VPS),为了兼容标准在其他应用上的扩展,例如可分级视频编码器、多视点视频编码器。其内容大致包括多个子层共享的语法元素,其他不属于SPS的特定信息等。对于一个SS(Slice Segment),通过引用它所使用的PPS,该PPS又引用其对应的SPS,该SPS又引用它对应的VPS,最终得到SS的公用信息。H.265/HEVC压缩码流的结构如图3.3所示。

7. 补充增强信息SEI。主要起补充和增强的作用。SEI没有图像数据信息,只是对图像数据信息或者视频流的补充。

posted @ 2024-05-06 10:52  luckylan  阅读(140)  评论(0)    收藏  举报