视频编解码学习

视频编解码学习之一:理论基础

第1章介绍

1. 为什么要进行视频压缩?

  • 未经压缩的数字视频的数据量巨大
  • 存储困难
    • 一张DVD只能存储几秒钟的未压缩数字视频。
  • 传输困难
    • 1兆的带宽传输一秒的数字电视视频需要大约4分钟。

2. 为什么可以压缩

  • 去除冗余信息
    • 空间冗余:图像相邻像素之间有较强的相关性
    • 时间冗余:视频序列的相邻图像之间内容相似
    • 编码冗余:不同像素值出现的概率不同
    • 视觉冗余:人的视觉系统对某些细节不敏感
    • 知识冗余:规律性的结构可由先验知识和背景知识得到

3. 数据压缩分类

  • 无损压缩(Lossless)
    • 压缩前解压缩后图像完全一致X=X'
    • 压缩比低(2:1~3:1)
    • 例如:Winzip,JPEG-LS
  • 有损压缩(Lossy)
    • 压缩前解压缩后图像不一致X≠X'
    • 压缩比高(10:1~20:1)
    • 利用人的视觉系统的特性
    • 例如:MPEG-2,H.264/AVC,AVS

4. 编解码器

  • 编码器(Encoder)
    • 压缩信号的设备或程序
  • 解码器(Decoder)
    • 解压缩信号的设备或程序
  • 编解码器(Codec)
    • 编解码器对

5. 压缩系统的组成

(1) 编码器中的关键技术

(2) 编解码中的关键技术

6. 编解码器实现

  • 编解码器的实现平台:
    • 超大规模集成电路VLSI
      • ASIC, FPGA
    • 数字信号处理器DSP
    • 软件
  • 编解码器产品:
    • 机顶盒
    • 数字电视
    • 摄像机
    • 监控器

7. 视频编码标准

编码标准作用:

  • 兼容:
    • 不同厂家生产的编码器压缩的码流能够被不同厂家的解码器解码
  • 高效:
    • 标准编解码器可以进行批量生产,节约成本。

主流的视频编码标准:

  • MPEG-2
  • MPEG-4 Simple Profile
  • H.264/AVC
  • AVS
  • VC-1

标准化组织:

  • ITU:International Telecommunications Union
    • VECG:Video Coding Experts Group
  • ISO:International Standards Organization
    • MPEG:Motion Picture Experts Group

8. 视频传输

  • 视频传输:通过传输系统将压缩的视频码流从编码端传输到解码端
  • 传输系统:互联网,地面无线广播,卫星

9. 视频传输面临的问题

  • 传输系统不可靠
    • 带宽限制
    • 信号衰减
    • 噪声干扰
    • 传输延迟
  • 视频传输出现的问题
    • 不能解码出正确的视频
    • 视频播放延迟

10. 视频传输差错控制

  • 差错控制(Error Control)解决视频传输过程中由于数据丢失或延迟导致的问题
  • 差错控制技术:
    • 信道编码差错控制技术
    • 编码器差错恢复
    • 解码器差错隐藏

11. 视频传输的QoS参数

  • 数据包的端到端的延迟
  • 带宽:比特/秒
  • 数据包的流失率
  • 数据包的延迟时间的波动

第2章 数字视频

1.图像与视频

  • 图像:是人对视觉感知的物质再现。
  • 三维自然场景的对象包括:深度,纹理和亮度信息
  • 二维图像:纹理和亮度信息

  • 视频:连续的图像。
  • 视频由多幅图像构成,包含对象的运动信息,又称为运动图像。

2. 数字视频

  • 数字视频:自然场景空间和时间的数字采样表示。
    • 空间采样
      • 解析度(Resolution)
    • 时间采样
      • 帧率:帧/秒

3. 空间采样

  • 二维数字视频图像空间采样

4. 数字视频系统

  • 采集
    • 照相机,摄像机
  • 处理
    • 编解码器,传输设备
  • 显示
    • 显示器

5. 人类视觉系统HVS

  • HVS
    • 眼睛
    • 神经
    • 大脑

  • HVS特点:
    • 对高频信息不敏感
    • 对高对比度更敏感
    • 对亮度信息比色度信息更敏感
    • 对运动的信息更敏感

6. 数字视频系统的设计应该考虑HVS的特点:

  • 丢弃高频信息,只编码低频信息
  • 提高边缘信息的主观质量
  • 降低色度的解析度
  • 对感兴趣区域(Region of Interesting,ROI)进行特殊处理

7. RGB色彩空间

  • 三原色:红(R),绿(G),蓝(B)。
  • 任何颜色都可以通过按一定比例混合三原色产生。
  • RGB色度空间
    • 由RGB三原色组成
    • 广泛用于BMP,TIFF,PPM等
    • 每个色度成分通常用8bit表示[0,255]

8. YUV色彩空间

  • YUV色彩空间:
    • Y:亮度分量
    • UV:两个色度分量
    • YUV更好的反映HVS特点

9. RGB转化到YUV空间

亮度分量Y与三原色有如下关系:

经过大量实验后ITU-R给出了, ,  ,

主流的编解码标准的压缩对象都是YUV图像

10. YUV图像分量采样

  • YUV图像可以根据HVS的特点,对色度分量下采样,可以降低视频数据量。
  • 根据亮度和色度分量的采样比率,YUV图像通常有以下几种格式:

11. 通用 的YUV图像格式

  • 根据YUV图像的亮度分辨率定义图像格式

12. 帧和场图像

  • 一帧图像包括两场——顶场,底场

13. 逐行与隔行图像

  • 逐行图像:一帧图像的两场在同一时间得到,ttop=tbot。
  • 隔行图像:一帧图像的两场在不同时间得到, ttop≠tbot。

14. 视频质量评价

  • 有损视频压缩使编解码图像不同,需要一种手段来评价解码图像的质量。
  • 质量评价:
    • 客观质量评价
    • 主观质量评价
    • 基于视觉的视频质量客观评价
  • 客观质量评价:通过数学方法测量图像质量评价的方式。
  • 优点:
    • 可量化
    • 测量结果可重复
    • 测量简单
  • 缺点:
    • 不完全符合人的主观感知

15. 客观评价的方法

常用的客观评价方法:

16. 主观评价方法

  • 主观质量评价:用人的主观感知直接测量的方式。
  • 优点:
    • 符合人的主观感知
  • 缺点:
    • 不容易量化
    • 受不确定因素影响,测量结果一般不可重复
    • 测量代价高

常用主观评价方法

17. 基于视觉的视频质量客观评价方法

  • 基于视觉的视频质量客观评价:将人的视觉特性用数学方法描述并用于视频质量评价的方式。
  • 结合了主观质量评价和客观质量评价两方面优点。
  • 常用方法:结构相似度(Structural SIMilarity,SSIM)方法。
  • 将HVS的特征用数学模型表达出来。
  • 未来重要的研究方向

 

第3章 信息论基础

1. 通信系统的组成

  • 信源:产生消息
  • 信道:传输消息
  • 信宿:接收消息

2. 基本概念

  • 通信中对信息的表达分为三个层次:信号,消息,信息。
    • 信号:是信息的物理层表达,可测量,可描述,可显示。如电信号,光信号。
    • 消息:是信息的载体,以文字,语言,图像等人类可以认知的形式表示。
    • 信息:不确定的内容。

3. 信息熵

信息的特点

信息的测量

自信息量

条件信息量

4. 信息熵

5. 条件熵和联合熵

6. 熵的性质

  • 非负性:信源熵是非负值,即 H(X) >=0;
  • 扩展性:信源熵X有M个符号,如果其中一个符号出现的概率趋于零,信源熵就等于剩余M-1个符号的信源熵;
  • 极值性(最大信息熵):对于具有M个符号的信源,只有在所有符号等概率出现的情况下,信源熵达到最大值,即
  • 可加性:
  • 熵不增:条件熵不大于信息熵 H(X|Y) <= H(X)
  • 联合熵不大于各信息熵的和,即H(XY) <= H(X) + H(Y)

7. 互信息量

8. 互信息

  • 物理意义:H(X)是X所含的信息,H(X|Y)是已知Y的条件下X还能带来的信息量。那么两者之差就是由于知道Y使得X减少的信息量,也即由Y可以得到的关于X的信息量。

9. 各种熵的关系

11. 信源编码

  • 信源编码:将消息符号转变成信道可传输的信息。
  • 两个基本问题:
    • 用尽可能少的信道传输符号来传递信源消息,提高传输效率;
    • 减少由于信道传输符号的减少导致的失真。

12. 离散信源统计特性

13. 离散信源类型:简单无记忆信源和马尔可夫信源

14. 编码分类

  • 等长码:在一组码字集合C中的所有码字cm (m = 1,2, …,M),其码长都相同,则称这组码C为等长码。
  • 变长码:若码字集合C中的所有码字cm (m = 1,2, …,M),其码长不都相同,称码C为变长码。

15. 平均码长

16. 等长码与变长码比较

  • 等长编码将信源输出符号序列的任意一种取值(概率可能不同)都编码成相同长度的输出码字,没有利用信源的统计特性;
  • 变长编码可以根据信源输出符号序列各种取值的概率大小不同,将他们编码成不同长度的输出码字,利用了信源的统计特性。因此又称其为熵编码。

17. Huffman编码

  • Huffman编码:典型的变长编码。
  • 步骤:
    • 将信源符号按概率从大到小的顺序排列,假定p(x1)≥ p(x2)… ≥ p(xn)
    • 给两个概率最小的信源符号p(xn-1), p(xn)各分配一个码位"0"和"1",将这两个信源符号合并成一个新符号,并用这两个最小的概率之和作为新符号的概率,结果得到一个只包含(n-1)个信源符号的新信源。称为信源的第一次缩减信源,用S1表表示。
    • 将缩减信源S1的符号仍按概率从大到小的顺序排列,重复步骤2,得到只含(n-2)个符号的缩减信源S2
    • 重复上述步骤,直至缩减信源只剩下两个符号为止,此时所剩两个符号的概率之和必为1。然后从最后一级缩减信源开始,依编码路径向前返回,就得到各信源符号所对应的码字。

 

18. 信道编码

  • 信道编码主要考虑如何增加信号的抗干扰能力,提高传输的可靠性,并且提高传输效率。
  • 一般是采用冗余编码法,赋予信码自身一定的纠错和检错能力,使信道传输的差错概率降到允许的范围之内。

19. 信道类型

  • 根据信道连续与否分类
    • 离散信道
    • 连续信道
    • 半连续信道
  • 根据信道是否有干扰分类
    • 无干扰信道
    • 有干扰信道
  • 根据信道的统计特性分类
    • 无记忆信道
    • 有记忆信道
    • 恒参信道
    • 变参信道
    • 对称信道
    • 非对称信道

20. 信道容量

  • 在信息论中,称信道无差错传输的最大信息速率为信道容量。
  • 仙农信道容量公式:
    • 假设连续信道的加性高斯白噪声功率为N,信道带宽为B,信号功率为S,则该信道的容量为
    • 由于噪声功率N与信道带宽B有关,则噪声功率N=n0。因此,仙农公式还可以表示为

21. 香农信道容量公式的意义

  • 在给定BS/N的情况下,信道的极限传输能力为C,而且此时能够做到无差错传输。如果信道的实际传输速率大于值,则无差错传输在理论上就已不可能。因此,实际传输速率一般不能大于信道容量,除非允许存在一定的差错率。
  • 提高信噪比S/N(通过减小n0或增大S),可提高信道容量C。特别是,若n0->0,则C->∞ ,这意味着无干扰信道容量为无穷大;
  • 增加信道带宽B,也可增加信道容量C,但做不到无限制地增加。这是因为,如果 Sn0一定,有
  • 维持同样大小的信道容量,可以通过调整信道的BS/N来达到,即信道容量可以通过系统带宽与信噪比的互换而保持不变。

22. 失真

  • 失真:信源的消息经过编解码后不能完全复原
  • 在实际的信源和信道编码中,消息的传输并不总是无失真的。
    • 由于存储和传输资源的限制
    • 噪声等因素的干扰

23. 率失真理论

  • 仙农定义了信息率失真函数R(D)
    • D是消息失真
    • R是码率
  • 率失真定理:在允许一定失真度D的情况下,信源输出的信息率可压缩到R(D)。

24. 失真函数

  • 失真函数:信源符号X={x1x2, …..xn},经信道传输接收端符号Y={y1y2….yn},对于每一对(xiyj)指定一个非负函数 d(xiyj),称d(xiyj)为单个符号的失真度或失真函数。对于连续信源连续信道的情况,常用d(xy)表示。
  • 常用失真函数:

  • 平均失真度:


视频编解码学习之二:编解码框架

第四章 视频编码基础

1. 压缩码流

  • 语法:码流中各个元素的位置关系
    • 01001001…
    • 图像编码类型(01),宏块类型(00),编码系数1001等
  • 语义:每个语法元素所表达的意义。
    • 例如:图像编码类型

2. 编码层次

  • 序列(Sequence)
  • 图像组(Group of Pictures,GOP)
  • 图像(Picture)
  • 条带(Slice)
  • 宏块(Macroblock,MB)
  • 块(Block)

3. 码流结构

3. PB帧编码

4. 序列编码对象

(1)IBBP序列

  • 序列:一段连续编码的并具有相同参数的视频图像。
  • 序列起始码:专有的一段比特串,标识一个序列的压缩数据的开始
    • MPEG-2的序列起始码为十六进制数000001(B3)。
  • 序列头:记录序列信息
    • 档次(Profile),级别(Level),宽度,高度,是否是逐行序列,帧率等。
  • 序列结束码:专有的一段比特串,标识该序列的压缩数据的结束
    • MPEG-2的序列结束码为十六进制数000001(B7)。

5. 图像组编码对象

6. 图像编码结构

  • 图像:
  • 图像起始码:专有的一段比特串,标识一个图像的压缩数据的开始
    • MPEG-2的图像起始码为十六进制数000001(00)。
  • 图像头:记录图像信息
    • 图像编码类型,图像距离,图像编码结构,图像是否为逐行扫描。

7. 图像分块编码

8. 条带编码结构

  • 条带:多个宏块的组合。
  • 条带起始码:专有的一段比特串,标识一个条带的压缩数据的开始
    • MPEG-2的条带起始码为十六进制数000001(0~AF)。
  • 条带头:记录当前图像的相关信息
    • 条带位置,条带量化参数,宏块编码技术标识等。

9. 条带编码对象

10. 宏块编码结构

  • 宏块:16x16的像素块(对亮度而言)。
  • 宏块内容:宏块编码类型,编码模式,参考帧索引,运动矢量信息,宏块编码系数等。

11. 宏块编码对象

12. 块编码结构

  • 8x8或4x4块的变换量化系数的熵编码数据。
  • CBP (Coded Block Patten):用来指示块的变换量化系数是否全为零。
    • 对于YUV(4:2:0)编码,CBP通常6比特长,每个比特对应一个块,当某一块的变换量化系数全为零时,其对应比特位值为0,否则为1。
  • 每个块的变换量化系数的最后用一个EOB (End of Block)符号来标识。

13. 视频编解码关键技术

  • 预测:通过帧内预测和帧间预测降低视频图像的空间冗余和时间冗余。
  • 变换:通过从时域到频域的变换,去除相邻数据之间的相关性,即去除空间冗余。
  • 量化:通过用更粗糙的数据表示精细的数据来降低编码的数据量,或者通过去除人眼不敏感的信息来降低编码数据量。
  • 扫描:将二维变换量化数据重新组织成一维的数据序列。
  • 熵编码:根据待编码数据的概率特性减少编码冗余。

14. 预测

  • 空间预测:利用图像空间相邻像素的相关性来预测的方法。
    • 帧内预测技术:利用当前编码块周围已经重构出来的像素预测当前块
    • Intra图像编码(I帧)
  • 时间预测:利用时间上相邻图像的相关性来预测的方法。
    • 帧间预测:运动估计(Motion Estimation,ME),运动补偿(Motion Compensation,MC)
    • Inter图像编码:前向预测编码图像(P帧),双向预测编码图像(B帧)

15. 帧内预测

  • I帧图像的每个宏块都采用帧内(Intra)预测编码模式。
  • 宏块分成8x8或者4x4块,对每个块采用帧内预测编码,称作Intra8x8或者Intra4x4。
  • 帧内预测有多个预测方向:水平,垂直,左下,右上。
  • 帧内预测还有直流(DC)预测。
  • 色度块预测还有平面预测。

16. 帧间预测

  • 块基运动估计:为待预测块在参考帧上找到最佳的预测块,并记录预测块在参考帧上的相对位置。
  • 运动矢量(MV):参考帧上的预测块与当前帧上的的待预测块的相对位置。
    • MV有两个分量:(x,y)

  • 分像素运动估计
    • 最佳的预测块不在整像素位置,而在分像素位置;
    • 1/2,1/4,1/8像素插值得到分像素值。

  • 帧间预测流程:

  • 运动补偿:给定MV和参考帧,为待解码块从参考帧上获取预测块。
  • 运动矢量编码
    • MV预测:用当前块的周围可得到邻块的运动矢量来预测当前块的运动矢量
    • 运动矢量差(MV difference,MVD):实际运动矢量与预测运动矢量的差,即:
    • 运动矢量差采用变长编码。

17. 预测残差

18. 变换编码

  • 变换编码:通过变换将空域信号转换为频域信号来去除空间信号的冗余信息,减少编码数据。
  • 二维离散余弦变换
    • 4x4变换,8x8变换

  • 二维离散余弦变换

例:

  • 变换系数:直流(DC)系数,交流(AC)系数

19. 量化

  • 量化原理:将含有大量的数据集合映射到含有少量的数据集合中。

  • 一般情况下量化后高频部分包含大量的零系数

  • 量化对主观质量的影响

20. 扫描

  • 扫描:将二维数据转换为一维的数据序列。

21. 熵编码

  • 熵编码:根据符号出现的概率,对经常出现的符号分配较短的码字,对不常出现的符号分配较长的码字。
  • Level-Run编码:用数据中非零值和其前面非零值之间出现零值的个数重新描述量化系数序列为(Level,Run)二元组序列

  • 变长编码
    • 将Level-Run编码后的(level,run)变长编码成最终的比特串。

22. 码率控制

  • 受到缓冲区,带宽的限制,编码码率不能无限制的增长,因此需要通过码率控制来将编码码流控制在目标码率范围内。
  • 一般通过调整量化参数的手段控制码率
    • 帧级控制
    • 条带级控制
    • 宏块级控制
  • 码率控制考虑的问题
    • 防止码流有较大的波动,导致缓冲区发生溢出,
    • 同时保持缓冲区尽可能的充满,让图像质量尽可能的好而且稳定
  • CBR(Constant Bit Rate)
    • 比特率稳定,但图像质量变化大
  • VBR(Variable Bit Rate)
    • 比特率波动大,但图像质量稳定
  • 码率控制算法
    • 码率分配
    • 码率控制
  • 码率控制属于非标准技术
    • 编码端有,解码端没有

第5章 预测

1. 预测技术

  • 目的:去除空间冗余和时间冗余。
  • 视频存在大量的空间冗余和时间冗余
    • 空间冗余:用帧内预测编码去除
      • 基于块的帧内预测
    • 时间冗余:用帧间预测编码去除
      • 基于块匹配(Block Matching)的帧间预测
  • 预测后得到去除大部分空间或时间冗余的残差

2. 空间冗余

  • 图像空间相邻像素具有很强的相关性。
  • 帧内预测技术去除空间冗余

3. 亮度预测模式

4. 色度预测模式

5. 时间冗余

  • 视频图像在时间上有较强的相关性,即存在时间冗余
  • 去除时间冗余的编码技术
    • 运动估计(Motion Estimation,ME)
      • 为待编码块搜索最相似的预测块
      • 记录运动矢量(Motion Vector,MV)
      • 记录预测残差:
    • 运动补偿(Motion Compensation,MC)
      • 根据运动矢量获取预测块
      • 根据预测残差计算重构块:

6. 运动模型

(1)平移

7. 匹配准则

8. 匹配准则简化

  • 简化技术方法
    • 分别计算当前块和预测块的象素值和
    • 根据简化形式,比较当前块和预测块
    • 如果用简化准则对预测块和当前块比较的结果比以前最好的结果差,可以确定预测效果不好,不必对预测块再进行比较。

9. 运动估计

  • 去除视频图像的时间冗余
  • 运动估计在搜索范围内为当前块寻找匹配最好的预测块
  • 全搜索方式的运动估计计算复杂度高

10. 全搜索复杂度分析

  • 图像大小:MxM
  • 预测块大小:NxN
  • 搜索范围:(-R,R)
  • 每个搜索点象素比较个数:N2
  • 搜索点个数(2R+1)2
  • 在搜索范围内的象素比较个数总和N2(2R+1)2
  • 一帧图像所有块的全搜索象素比较个数总和N2(2R+1)2(M/N)2=(2R+1)2M2
  • 例:M=512,N=4,R=8,帧率:30帧/秒

    (2R+1)2M2

    =172X5122

    = 75759616次/帧

    = 75759616x30次/秒

    =2272788480次/秒

    采用SSD匹配准则:每次象素比较需1个减法,1个乘法,1个加法,则上述全搜索计算每秒需要2272788480x2次加减法和2272788480次乘法操作。

11. 快速运动估计

  • 在保持预测精度的同时减少运动估计的搜索次数。
    • 三步搜索(Three Step Search,TSS)
    • 二维Log搜索(2D Logarithmic Search,2DLOG)
    • 正交搜索(Orthogonal Search Algorithm,OSA)
    • 十字搜索(Cross Search Algorithm,CSA)
    • 新三步搜索(New Three Step Search,NTSS)
    • 四步搜索(Four Step Search,FSS)
    • 共轭方向搜索(Conjugate Direction Search,CDS)
    • 梯度下降搜索(Gradient Descent Search,GDS)
    • 层次块搜索(Hierarchical Block Matching Algorithm,HBMA)

12. 三步搜索

  • 由粗到精搜索最优点,初始步长为R/2.
  • 第一步:检查起始点和其周围步长为R/2的8个点,将最优点作为第二步的起始点;
  • 第二步:以新的起始点为中心检查其周围步长为R/4的8个点,找到最优点作为第三步的起始点;
  • 第三步:以新的起始点为中心检查其周围步长为R/8的8个点,找到最优点,如果R/8=1则搜索终止,最优点位置的预测块作为最优的预测块,否则重复该过程直到R/n2=1;
  • 三步搜索方法检查点的个数为1+8log2(d+1),当d=8时,检查点个数为9+8+8=25

13. 二维Log搜索

  • 每一步采用十字搜索模式
  • 如果每一步的最优点为中心点或者搜索窗的边界点,搜索步长减半,否则搜索步长不变
  • 当搜索步长为1时,中心点周围的8个点都要检查
  • 两个搜索路径一个需要5+3+3+8=19,另外一个需要5+3+2+3+2+8=23

14. 正交搜索

  • 起始搜索步长R/2,从起始点开始水平搜索三个点,得到最优点并沿着最优点垂直方向搜索相邻的两个点,得到最优点,以搜索步长为R/4再以同样的方式先水平再垂直搜索,当步长为1时停止搜索
  • 搜索方法检查点的个数为1+4log2(d+1),当d=8时,检查点个数为3+2+2+2+2+2=13。

 

15. 十字搜索

  • 起始搜索步长R/2,从起始点开始以"X"形十字搜索,当搜索步长降为1时,如果上一步的最优点为中心点,左上点或右下点,则这一步搜索以"+"形状十字搜索,然后结束搜索,否则还是以"X"形十字搜索,然后结束搜索。
  • 十字搜索方法检查点的个数为1+4log22d,当d=8时,检查点个数为5+4+4+4=17

16. 新三步搜索

  • 与三步搜索方法不同的是,考虑到运动矢量高的中心分布特点,新三步搜索方法,除了围绕起始点为中心搜索步长为R/2的8个点之外,在起始点周围增加了步长为1的8个搜索点,如果最优点为步长为1的8个搜索点之一,则在最优点邻近的三个点中搜索最优点,然后结束搜索,否则,和三步搜索方法过程一样
  • 其中一个搜索路径需要检查点个数为17+3=20,另一个需要17+8+8=33。

 

17. 块梯度下降搜索

  • 该方法以起始点为中心搜索8个步长为1的相邻点,确定最优点,再以最优点为中心搜索8个步长为1的相邻点,如此循环下去,不限制搜索步骤,但当搜索得到的最优点为中心点或者到搜索窗的边界,搜索终止。

18. 层次块搜索

  • 对编码图像和参考图像下采样,分别得到编码图像和参考图像的下采样图像,未经采样处理的编码图像和参考图像属于第0层,一次下采样的编码图像和参考图像属于第1层,对第1层图像再进行下采样得到的编码图像和参考图像属于第2层,依次重复上述过程,得到第n层下采样的编码图像和参考图像。
  • 然后在n层下采样参考图像的搜索范围中找到与下采样编码图像块最佳匹配块的MV,该MV作为n-1层的运动估计搜索范围的中心点,依次重复上述过程,直到n=0为止,此时得到的最佳匹配块就是编码图像的预测块,其对应的MV为最终的最优MV。

19. 搜索算法复杂度比较

20 . 分像素运动估计与运动补偿

  • 时域运动位置更可能在整象素之间,即分像素上。
  • 利用相邻的整象素可以估计出分象素的值
    • 常用线性或双线性插值得到分象素的值。
  • 分象素运动估计有更高的预测精度,但复杂度也更高,
    • 1/2分象素运动估计,图像存储空间增加4倍,运动矢量需要放大2倍,1/4分象素运动估计,图像存储空间增加16倍,运动矢量需要放大4倍,计算复杂度也成倍增加。

 

21. 分像素插值

 

22. 多参考帧预测

  • 有更多的候选图像,搜索更精确的预测块
  • 需要更多的参考图像存储空间
  • 码流需要标识参考帧索引的语法元素

 

23. 图像分块编码

  • 视频内容的运动非常复杂,图像分块编码可以更好的提高运动预测精度,提高压缩效率。
  • 要在编码块大小和附信息(MV,Mode)编码比特数之间权衡,小的编码块大小会有更好的预测但有更多的附信息比特数。

23. 双向预测编码

24. B帧有更好的编码效率

  • B帧有更好的编码效率
    • 新出现的对象参考将来的帧有更好的预测效果
    • 前后两个预测的平均值可以减少预测方差

25. 全局运动估计

  • 基于全局仿射运动模型
  • 预测精度不如基于块的运动估计
  • MV数目少,适合简单运动场景的运动估计


视频编解码学习之三:变换,量化与熵编码

第6章 变换编码

1. 变换编码

  • 变换编码的目的
    • 去除空间信号的相关性
    • 将空间信号的能力集中到频域的一小部分低频系数上
    • 能量小的系数可通过量化去除,而不会严重影响重构图像的质量
  • 块变换和全局变换
    • 块变换:离散余弦变换(Discrete Cosine Transform,DCT),4x4,8x8,16x16
    • 全局变换:小波变换(Wavelet)
  • 变换的能量集中特性
    • DCT编码

2. 变换类型

  • K-L变换
  • 傅里叶变换
  • 余弦变换
  • 小波变换

3. KL变换

  • 最优变换
  • 基函数根据具体图像而确定
  • 没有快速算法
  • 实际中很少使用
    • 复杂度极高

  • K-L变换非常复杂度很高,不实用
    • 需要计算协方差矩阵U
    • 需要计算特征向量
    • 需要发送 到解码器

4. 离散傅立叶变换

5. 离散傅立叶变换性质

6. 离散余弦变换

  • 比K-L变换,傅里叶变换的复杂度更低
  • 变换性能仅次于K-L变换
  • 有快速算法可以加快变换速度
  • 可以用整数变换进一步降低复杂度

7. DCT与DFT的关系

8. 离散余弦变换的重要性质

 

9. 快速DCT变换

下图是一个动态展示:

 

 

10. 整数离散余弦变换

  • 离散余弦变换为浮点操作
    • 需要64位精度
    • 浮点计算复杂度高
    • 变换精度高
  • 整数变换:离散余弦变换的整数近似
    • 需要更少的位宽
    • 整数计算复杂度低
    • 好的整数变换的变换精度接近浮点变换
  • 浮点近似方法

11. H.264的4x4整数变换

12. 小波变换

  • 新的变换方法
  • 避免由于块编码带来的块效应
  • 更适合视频空间可分级编码

 

第7章 量化

1. 量化Quantization

  • 用更小的集合表示更大的集合的过程
    • 对信号源的有限近似
    • 有损过程
    • 应用
      • A/D转换
      • 压缩
    • 量化方法
      • 标量(Scalar)量化
      • 矢量(Vector)量化

2. 量化的基本思想

  • 映射一个输入间隔到一个整数
  • 减少信源编码的bit
  • 一般情况重构值与输入值不同

3. 量化模型

4. 量化的率失真优化

  • 量化器设计问题
    • 量化水平的个数,即Bin的个数
    • 决策边界:Bin的边界
    • 重构水平
  • 量化器设计是对率失真的优化
    • 为了减少码率的大小,需要减少Bin的个数
    • Bin的个数减少导致重构的误差增大,失真也就随着增大

5. 失真测量

6. 量化器设计

  • 量化器设计的两个方面
    • 给定量化水平数目M,找到决策边界xi和重构水平 使MSE最小
    • 给定失真限制D,找到量化水平数目M,决策边界xi和重构水平yi使MSE<=D

7. 均匀量化(Uniform Quantization)

8. 量化与峰值信噪比

9. 中升量化器(Midrise Quantizer)

10. 中平量化器(Midtread Quantizer)

11. 死区量化器(Deadzone Quantizer)

12.非均匀量化(Non-uniform Quantization)

  • 如果信源不是均匀分布的,采用均匀量化不是最优的
  • 对于非均匀量化,为了减少MSE,当概率密度函数fX(x)高时,使Bin的量化步长减小,当概率密度函数fX(x)低时, 使Bin的量化步长增加。

13. 最优的标量量化

14. 量化编码

  • 定长编码量化水平
    • 使用等长的码字编码每个量化水平,码字长为:
  • 熵编码量化水平
    • 根据量化水平的概率分布情况,用变长的码字编码每个量化水平
    • 平均码字长
    • 比定长编码量化水平效率高
    • 广泛应用在图像和视频编码中

15. 矢量量化

  • 标量量化:对数据一个一个的进行量化,称为标量量化。
  • 矢量量化:将数据分组,每组K个数据构成K维矢量,再以矢量为处理单元进行量化。
    • 矢量量化是标量量化的多维扩展
    • 标量量化是矢量量化的特殊情况
  • 矢量量化工作过程

  • 二维矢量量化

  • 矢量量化优点
    • 只传码字的下标,编码效率高
    • 在相同码率下,比标量量化失真小
    • 在相同失真下,比标量量化码率低
  • 矢量量化缺点:复杂度随着维数的增加呈指数增加

 

第8章 熵编码

1. 熵编码

  • 熵(Entropy):信源的平均信息量,更精确的描述为表示信源所有符号包含信息的平均比特数
    • 信源编码要尽可能的减少信源的冗余,使之接近熵
    • 用更少的比特传递更多的信源信息
  • 熵编码:数据压缩中根据信源消息的概率模型使消息的熵最小化
    • 无损压缩
    • 变长编码

2. 熵

  • 信息量:

单位:比特

  • 熵:

单位:比特/符号

3. 定长编码

4. 变长编码

  • 变长编码:用不同的比特数表示每一个符号
    • 为频繁发生的符号分配短码字
    • 为很少发生的符号分配长码字
    • 比定长编码有更高的效率
  • 常用的变长编码
    • Huffman编码
    • 算术编码

5. Huffman编码

  • 前缀码:任何码字不是其它码字的前缀
    • 如果011为一个有效码字,则0,1,01,11必不是有效码字
    • 不会引起解码歧义
  • Huffman:
    • 二叉树
    • 树节点:表示符号或符号组合
    • 分支:两个分支一个表示"0",另一个表示"1"

  • Huffman的不唯一性
    • 每次分支有两种选择:0,1

    • 相同的概率产生不同的组合

  • 缺点:
    • 数据的概率变化难于实时统计
    • Huffman树需要编码传输给解码器
    • 只有在p(xi)=1/2ki 时是最优编码
    • 最小码字长度为1比特/符号
  • 如果有二值信源,其两个符号的概率相差很大
    • 例如:p(1)=0.0625,p(0)=0.9375则H=0.3373比特/符号,Huffman编码平均码长=1比特/符号
    • 两个符号联合编码有更高效率

6. 扩展Huffman编码

7. 范式Huffman编码

  • 范式Huffman树的建立规则
    • 节点左支设为0,右支设为1
    • 树的深度从左至右增加
    • 每个符号被放在最先满足的叶子节点

  • 特性
    • 第一个码字是一串0
    • 相同长度的码字的值是连续的
    • 如果所有的码字通过在低位补0的方式,使所有码字的长度相同则有 0000<0100<1000<1010<1100<1110<1111
    • 从码字长度n到n+1有如下关系
      • C(n+1,1)=(C(n,last)+1)<<1
    • 从码字长度n到n+2有如下关系
      • C(n+2,1)=(C(n,last)+1)<<2

8. 一元码

  • 编码一个非负整数n为n个1和一个0
  • 不需要存储码表
  • 可以用Huffman树表示

  • 码长增长太快:n=100,码长101

9. 哥伦布编码

  • 将信源符号等分成几组,每组有相应的编号
  • 编号小的分配码字短,编号大分配码字长
  • 同组的符号有等长的码字,比一元码的码字长度增长慢

  • 码字分配

 

10. 指数哥伦布编码

  • 哥伦布码对信源符号的分组大小相同
  • 指数哥伦布码对信源符号的分组大小按照指数增长
  • 指数哥伦布码依然是一元码加定长码的形式
  • 指数哥伦布码的指数k=0,1,2,…

11. CAVLC( Context-Based Adaptive Variable Length Code)

  • 当前块的系数分布和其邻块的系数分布情况相关
    • NX为块X的非零系数个数,当前块C的第一个系数的编码码表由NC决定, NC=( NA+ N)/2

  • 当前待编码系数和前面编码系数有相关性
    • 当前块C的其它系数的编码码表由前一个系数的幅值决定cofN-1=>GolombTab_x,用GolombTab_x编码cofN

12. 算术编码

  • 信息量=>符号编码比特数
  • Huffman编码为每个符号分配一个码字,这说明Huffman编码的压缩上限是1比特/符号
  • 算术编码若干个符号可编码成1bit
  • 算术编码是把信源表示为实数轴上[0,1]区间,信源中每个符号都用来缩短这个区间
    • 输出[0,1]区间的一个实数表示一串编码符号
    • 比Huffman编码更有效
  • 编码思想
    • 编码器用熵编码算法编码一串符号产生一个[0,1]区间的实数,将实数的一个二进制表示传给解码器
    • 解码器用熵解码算法解码得到一串符号
  • 小数的二进制表示

  • 信源符号概率分布

  • 字符串:X2 X2 X3 X3 X6 X5 X7
  • Huffman编码,01 01 100 100 00 11 1011,18bit

  • 算术编码更接近熵
  • 有限精度算术编码是次优(Near-optimal)编码,发送整数比特给解码端
  • 算术编码到最后一个字符编码结束才输出码字
  • 编码复杂度也比较高

13. 二值算术编码

13. 自适应二值算术编码

  • 由于信源0和1出现的概率是在不断变化的,因此0和1的概率区间也应该不断改变
  • 自适应二值算术编码每编码一个0或1都重新统计0和1的概率并重新划分[0,1)区间
  • 编解码端的概率统计模型一致,能够得到同样的[0,1)区间划分

 

14. CABAC(Context-Based Adaptive Binary Arithmetic Coding)

  • 当前块的语法元素概率分布和其邻块的语法元素概率分布情况相关
    • 当前块C的邻块A和B的语法元素SA与SB可以为编码C块的语法元素SC选择概率模型
  • 二值化
    • 将语法元素值转换成二进制值串
  • 概率模型更新
    • 根据已经编码的比特,重新估计二进制值串的概率并更新概率模型,用新的概率模型编码下一个比特

15. Run Length 编码

  • 利用信源字符的重复性来编码的技术
  • 对有很长,很多重复字符的信源编码非常有效
  • 重复字符称为run,重复的字符个数称为run length
  • Run-length编码能够和其它熵编码一起来压缩数据

16. 字典编码

  • 字典编码:根据信源符号(消息)的组合特点,建立包含各种符号组合的字典,编码这些符号组合的索引
    • LZ78=>Winzip
    • LZW=> GIF
  • 适合一般意义上的数据压缩,去除数据的统计冗余

17. LZW

  • 将信源输出的字符串中,每个第一次出现的字符或者字符串用索引来表示,并将字符或字符串对应的索引编码到码流中
  • 解码端根据从码流中解码的字符,在线的建立和编码器完全一样的字典,并恢复出信源输出的字符串
  • 适用于字符串中有大量的子字符串多次重复出现,重复次数越多,压缩效果越好
  • 单个符号被分配为0-255之间的值
  • 初始码表,使其包含值为0-255的256个符号,值大于255的符号为空
  • 编码器将根据编码的符号情况确定字符组合为从 256 到 4095 之间的值
  • 编码时,编码器识别新的字符组合,并将他们增加到码表中
  • 编码器用码表中的符号组合所对应的值编码

  • 解压时LZW解码器能够产生和编码器完全一样的码表
  • 和编码器一样先初始化所有的单字符,将0-255之间的值分配给它们
  • 除了解码第一个字符外,解码其它字符时都要更新码表
  • 通过读码字并根据码表中的值将它们解码为对应的字符或字符组合

18. LZ78

参考资料:


视频编解码学习之四:视频处理及编码标准

第10章 视频处理

1.视频处理

  • 在视频压缩前后,对视频图像质量增强的操作
  • 视频编解码系统输出的图像主观质量不仅与压缩算法的性能有关,还受视频处理的影响
  • 压缩之前对视频的处理称作预处理(Pre-processing)
  • 压缩之后对视频的处理称作后处理(Post-processing)

2. 预处理

  • 预处理的目的
    • 为了减少原图像受到的损害,保持原图像的重要特征,使原图像能被高效的压缩
      • 噪声污染
      • 光照差
      • 抖动
    • 为了进行视频格式转换
      • 去隔行
      • 空间缩放
      • 帧率转换
  • 去噪声处理

  • 去隔行(Deinterlace)
    • 隔行扫描的视频图像在逐行扫描播放设备上播放会有隔行效应,降低了主观质量

3. 去隔行的方法

  • 在单场内去隔行
    • 用奇数(偶数)行插值出偶数(奇数)行

  • 两场间去隔行
    • 用两场的像素值(包括运动矢量信息)插值出一帧象素值

  • 运动补偿方法
    • 用前后向参考场的运动矢量信息,产生高质量的逐行帧

4. MPEG去隔行处理

  • MPEG-2后处理去隔行

5. 空间缩放

  • 上采样(Up sample)方法
    • 最近邻插值(Nearest-neighbor interpolation )
      • 用原图像上每一个象素点值作为上采样图像上对应四个相邻象素点的值
      • 会产生阶梯形状的效应
    • 线性,双线性插值

    P(x,y)=P(0,0)xy+P(1,0)(1-x)y+P(0,1)x(1-y)+P(1,1)(1-x)(1-y)

    • 双三次插值(Bicubic interpolation)
      • 用邻近的16个象素值插值当前象素
      • 有更平滑的插值效果

  • 下采样(Down sample)方法
    • 缩小原始图像

5. 超分辨率

  • 光流:象素的运动矢量

6. 帧率转换

  • 3:2下拉
    • 24帧/秒电影转换成60场/秒的电视视频
    • 24/30=4/5

  • 帧率下采样(跳帧)

  • 帧率上采样

7. 后处理

  • 后处理的目的是为了去除解码图像的各种效应,最大程度恢复损失的图像数据,提高解码图像的主观质量
    • 量化方法使变换系数信息损失导致解码图像产生失真和块边界的不连续性
      • 块效应(Block Artifact),振铃效应(Ringing Artifact)
      • 失真(Distortion)
    • 视频码流传输及解码导致的解码图像质量问题
      • 跳帧(Frame Skip)
      • 数据丢失(Data Loss)

8. 块效应

  • 块效应产生原因
    • 由于块被独立的处理

9. 去除块效应滤波

  • 去除块效应滤波
    • 环外滤波(Out loop filter):
      • 滤波器在解码环路外,对显示缓冲区的图像进行滤波
      • 非标准部分,只有解码器需要环外滤波
      • MPEG-2,MPEG-4 SP

    • 环路滤波(In loop filter):
      • 滤波器在解码环路内,滤波后的图像可以作为参考帧用于运动估计和补偿
      • 标准的一部分,编解码器都需要环路滤波
      • AVS,H.264/AVC

10. 振铃效应

  • 振铃效应产生原因
    • 由于高频系数的量化严重

11. 数据丢失

  • 数据丢失

12. H.264的环路滤波

  • 滤波边界

  • 适应性滤波

  • 滤波强度

  • 滤波决策阈值

  • 滤波强度
    • 滤波强度和量化参数QP有关
      • QP越高,量化程度越大,会产生更多的块效应,需要更强的滤波
      • QP越低,量化程度越小,会产生更少的块效应,用弱一些的滤波来防止边界变得模糊
    • 根据滤波强度(Bs)的不同有两种滤波器
      • 1≤ Bs≤3,基本滤波操作
      • Bs=4,强力滤波操作
    • 边界滤波计算

  • 截断操作参数C

  • Bs=4
  • 块效应更明显
  • 需要更剧烈的滤波,去除块效应
  • 当满足以下条件对边界进行强滤波

  • 强滤波时修改p0p1p2的像素值
  • 弱滤波时只修改p0的像素值

 

第11章 视频编码标准

1.国际标准组织

  • ITU (International Telecommunications Union):国际电信联盟
  • ISO (International Standardization Organization):国际标准化组织
  • IEC (International Electrotechnical Commission):国际电工委员会

2. ITU

  • ITU-T (Telecommunication):电信标准化部门
  • ITU-R (Radiocommunication):无线电通信部门
  • ITU-D (Development):电信发展部门
  • VCEG (Video Coding Experts Group):视频编码专家组,属于ITU-T的Study Group 16/Question 6 (ITU-T SG16/Q.6)

3. VCEG

  • VCEG制订标准:
    • H.261:第一个视频编码标准,用于ISDN(px64Kbps)传输的视频会议,主要采用了基于整象素的运动补偿
    • H.262 (MPE-2):与MPEG合作制定的标准
    • H.263 (H.263+, H.263++):用于低码率的视频编码,主要用于PSDN低于54Kbps的视频会议和视频电话,采用了1/2象素运动补偿,考虑了数据损失和错误鲁棒性的需要
    • H.26L: H.264的前身标准
    • H.264 (MPEG-4 AVC):目前编码效率最高的标准

4. ISO/IEC

  • JPEG:ISO/IEC JTC1/SC29/WG1
  • MPEG:ISO/IEC JTC1/SC29/WG11

5. MPEG

  • MPEG制订标准:
    • MPEG-1 : H.261+半象素运动补偿+双向预测+条带结构编码,用于VCD,LAN视频(最大1.5Mbps)
    • MPE-2: MPEG-1+隔行视频编码+缩放功能,用于HDTV(18Mbps) 、SDTV (2-5Mbps)数字信号传输和DVD(6-8Mbps)存储,兼容MPEG-1标准
    • MPEG-4 ASP (P-2) :从H.263标准发展而来,基于视频对象平面编码,能在解码端控制视频对象,合成场景,并有音视频交互功能
    • MPEG-4 AVC (P-10)(H.264/AVC):与VECG合作制定的标准

6. 视频编码标准

  • 国际标准组织及其制定的编码标准

7. 标准的应用

8. 其他标准组织

  • AVS (China Audio and Video Standard)
    • AVS1.0 :面向高清数字电视广播
    • AVS-M:面向移动视频
    • AVS-S:面向监控视频
  • SMPTE (The Society of Motion Picture and Television Engineers )
    • VC-1

9. 视频编码标准发展

10. MPEG-1

  • 标准文档:ISO/IEC 11172-2
  • 编码技术:基于H.261
    • B帧编码:B帧不能被其它帧参考
    • 16x16 ½精度运动补偿
    • 码率控制:宏块级的码率控制,调整宏块的量化参数控制码率
    • 支持视频随机访问,回放,码流编辑,音视频同步
  • 参考软件:Simulation Model 3(SM3)

11. MPEG-2

  • 标准文档:ISO/IEC 13818-2
  • 编码技术:基于MPEG-1
    • 帧和场运动补偿
    • 三种类型的缩放
      • 空间缩放
      • 时间缩放
      • SNR缩放
  • 参考软件:Test Model 5 (TM5)
  • Profile:工具集
  • Level:参数限制
  • 不同的应用使用不同的Profile和Level的组合

12. H.263系列

  • H.263编码技术:基于H.261
    • 半象素精度运动补偿
    • 可选的数据流层次结构
    • 四种高效编码模式
      • D选项—无限制的运动矢量模式
      • E选项—基于语法的算术编码
      • F选项—高级预测模式,OBMC
      • G选项—PB帧模式
    • 支持更多的视频图像分辨率
    • 参考软件TMN2.0(Test Model Near-term 2.0)
  • H.263+编码技术:基于H.263
    • 允许自定义视频图像格式
    • 增加了12个选项提高压缩效率
      • I选项—高级的帧内预测模式
      • J选项—去块效应滤波
      • K选项—条带结构模式
      • L选项—补充增强信息,用于解码器的显示相关的信息
      • M选项—增强的PB帧模式
      • N选项—参考帧选择
      • O选项—分级,时间分级,空间分级,SNR分级
      • P选项—参考帧重采样
      • Q选项—减少的分辨率更新
      • R选项—独立的片段解码
      • S选项—可替代的inter-VLC
      • T选项—改进的量化
  • H.263++编码技术:基于H.263+
    • 增加了三个选项,增强抗误码能力
      • U选项—增强型参考帧选择
      • V选项—数据分区条带,变换量化系数和运动矢量数据分离
      • W选项—增加的补充增强信息,包括定点IDCT的选项,图像信息,信息类型,重复的图像头,交替场指示,稀疏参考帧识别

13. MPEG-4

  • 标准文档:ISO/IEC 14496-2
  • 编码技术:基于H.263
    • 增加了基于对象的编码和操作
      • 形状分割编码
      • 缩放的静态纹理小波变换
      • 网格动画编码
      • 人脸动画编码
      • 内容合成,半合成编码
      • 10比特,12比特深度采样
      • 参考软件VM7(Verification Model 7
  • 基于对象编码
    • 场景被分成多个对象
    • 每个对象用形状,运动和纹理特征描述

  • Video Object Plane(VOP)

  • Sprite编码
    • 在序列开始编码整个视频背景和仿射映射,通过仿射映射将部分背景内容放到解码图像上显示

  • 网格(Mesh)动画编码
    • 对象可由初始的网格和节点的运动矢量描述

  • Profile

14. H.264/AVC

  • 标准文档:ISO/IEC 14496-10(ITU-T H.264)
  • 前身为:H.26L(Long Range),基于MPEG-2/4
  • 参考软件JM(Joint Model)

15. H.264编码结构

16. H.264-Intra编码

  • 4个亮度16x16的模式
  • 9个亮度4x4的模式
  • 4个色度8x8的模式
  • 编码复杂度高
  • 不利于错误恢复

17. H.264-运动补偿

  • 可变块运动补偿
  • ¼象素精度亮度运动补偿
    • ½像素滤波器(1, -5, 20, 20, -5, 1)
  • 1/8象素精度色度运动补偿
    • 色度采用双线性滤波
  • 图像外运动矢量
  • 多参考帧
    • 每个宏块的四个8x8子块都可以使用不同的参考帧

18. H.264多参考帧

  • P帧
    • 只参考一个list的参考帧,List0
  • B帧
    • 参考两个list的参考帧,List0和List1
  • 每个List最大可包含16个参考帧
    • List0:以前的参考帧缓冲
    • List1:将来的参考帧缓冲

19. H.274-加权预测

20. H.264-切换图像

  • SP/SI帧实现
    • 码流切换
    • 随机切入
    • 错误恢复
    • 也可以实现快进,快退
  • 特点
    • 对于不同的参考图像可以得到完全相同的重构图像
    • SP帧的编码效率低于P帧但高于I帧
    • SI帧的编码效率低于I帧

21. H.264-FMO

  • 灵活宏块顺序(Flexible MB Order,FMO)
    • 宏块有不同的组合构成条带
    • 七种不同的宏块组合方式
  • FMO增强了解码的错误恢复能力

22. H.264-数据分区

  • 上层的语法元素的丢失会严重影响压缩码流的解码
  • 将码流按照重要程度分成三部分
    • A:头信息:包括宏块类型,运动矢量等
    • B:Intra系数信息
    • C:Inter系数信息
  • 用不同的优先级传输不同重要程度的分区来实现错误恢复

23. H.264-ASO,RP

  • 任意条带顺序(Arbitrary Slice Order,ASO)
    • 条带之间独立解码
    • 条带可以按任意顺序传输
    • 丢失的条带可以被解码的条带恢复出来
  • 冗余图像(Redundant Picture)
    • 在码流里放入冗余的图像,如果图像数据丢失了,可以用冗余图像代替

24. H.264-视频编码层

  • 网络独立的编码层
  • VCL层包含:
    • 序列参数集:Sequence Parameter Set(SPS),存放序列头信息
    • 图像参数集:Picture Parameter Set(PPS),存放图像头信息
    • 条带以下数据
    • 额外的增强信息(Supplemental Enhancement Information,SEI)

25. H.264-网络提取层

  • 提取的VCL数据
  • 适合于传输层的数据传输和媒介的存储
  • NAL单元为数据包和码流系统定义了一种通用的传输格式

  • NAL单元连接在一起构成了NAL流
  • 面向码流传输的NAL单元

  • 面向数据包传输的NAL单元

26. H.264-Profiles

  • Profile:码流语法子集

  • Fidelity Range Extensions

27. H.264-Levels

  • Level:参数限制

28. AVS vs. H.264

29. 性能比较

30. AVS会员


视频编解码学习之五:差错控制及传输

第12章 差错控制

1. 视频传输错误

  • 视频传输的信道有可能是不可靠的
    • 无线信道
    • Internet
  • 传输错误
    • 随机的比特错误
      • 比特反置、比特插入、比特丢失
    • 突发错误(Bursty Error)
      • 数据包丢失
        • 局域网数据包冲突
        • 延迟
        • 缓冲区溢出
        • 噪声干扰

2. 差错控制的目的

  • 目的
    • 克服由于信道传输错误及有这些错误产生的影响
  • 差错控制技术可以应用在
    • 信源编码
    • 信道编码
    • 解码端

3. 差错控制技术

  • 数据重传(Retransmission)
  • 前向纠错(Forward Error Correction,FEC)
  • 差错隐藏(Error Concealment)
  • 差错恢复(Error Resilience)
  • 信道编码
    • 数据重传,FEC
  • 信源编码
    • 差错隐藏,差错恢复

4. 纠错

  • 完美纠错
    • 比特差错检测和纠错
    • FEC
    • 自动重传请求(Automatic Retransmission Request,ARQ)
  • 有损纠错
    • 利用HVS的图像后处理

5. 图像错误

  • 条带结构减少空域差错蔓延
    • 条带间解码独立,差错不能在条带间蔓延
    • 条带内解码相关,差错能在条带内蔓延
  • 帧间预测增加时域差错蔓延
    • 用有差错区域作为参考的编码块不能被解码出正确的图像块

6. 重传

  • 条件
    • 编解码器之间的信道为反馈类型信道
  • 方法
    • 解码器向编码器反馈信息,通知编码器重传丢失的数据
  • 优点
    • 仅仅需要发送丢失的数据,可以节省带宽
    • 适于变带宽的信道传输
  • 缺点
    • 延迟,重传数据需要一定时间,重传次数增加,传输效率下降
    • 不适合单工信道传输,如广播,多播信道

7. 改进重传的算法

  • 改进重传算法
    • 有限延迟重传
      • 仅重传能够及时到达的数据
    • 优先级重传
      • 有选择的优先传输重要的数据
      • 视频编码数据的重要程度不同
        • 编码图像类型的重要性
          • I帧:最重要
          • P帧:重要
          • B帧:一般
        • 缩放编码的不同层次的重要性
          • 基本层:最重要
          • 增强层:层次越高,重要性越低

8. 前向纠错码

  • FEC
    • 增加冗余数据用于恢复差错

    • FEC由两部分组成,前面K字节称为信息码,后面N-K字节称为校验码
    • 常用的FEC是Reed-Solomon码
  • 应用范围:
    • 存储设备纠错,VCD,DVD
    • 卫星通信,无线通信
    • 数字电视广播

9. 循环冗余码CRC

  • 循环冗余码(n,k)的编码规则:
    • 将k比特的信息码左移r位(r=n-k),生成新码字
    • 用一个r比特的校验码生成多项式g(x)模2除以新生成的码字,得到的余数作为校验码
    • 校验码附加在信息码的后面构成循环冗余码
  • 模2除运算:
    • 在除法计算中采用模2加法运算
    • 模2加法运算就是没有进位的加法计算,即对应位的异或运算
    • 0+0=1+1=0,1+0=0+1=1
  • 例:校验码生成多项式为g(x)=x4+ x3+ x2+1,计算信息码110的(7,3)循环冗余码
  • 110左移4生成新码字1100000
  • 校验码生成多项式码字为11101
  • 新码字1100000模2除校验码生成码字11101得到校验码1001(余数)
  • 得到循环冗余码
    • 1100000 + 1001 =1101001

10. 海明码

11. 差错隐藏

  • 多媒体通信不需要所有数据被精确接收
  • HVS对少量的视频错误不敏感
  • 一些视频解码差错可以根据HVS的特点被隐藏起来
  • 视频编码差错隐藏
    • 估计损失的数据,隐藏损失数据带来的图像差错
    • 在解码端对解码图像做差错隐藏
    • 对编码码流没有影响,因此不增加额外的比特
    • 通常利用图像空域和时域上的相关性做差错隐藏

12. 空域差错隐藏

  • 空域插值
    • 利用图像内部的信息估计出损失的象素
    • 边缘适应性插值

13. 时域差错隐藏

  • 时域插值
    • 当前图像上损失的象素用其相邻图像上空间位置相同的象素代替
    • 缺点:只适合静态场景图像,不适合动态场景图像,降低图像质量

  • 运动补偿插值
    • 当前图像上损失的象素用其相邻图像上运动补偿后的象素代替

14. 差错恢复

  • 在编码端通过编码算法改变码流,增强码流的恢复差错的能力
  • 导致差错的两个原因
    • 失去同步
      • 解码器不知道下一个解码的比特属于哪一个语法元素
        • 例如:VLC
      • 解决方法:
        • 跳过出错的数据
        • 重新同步
  • 差错传递
    • 编解码端不匹配,导致不同的预测,使差错传递
  • 失去同步
    • 码流中任何差错都可能会导致失去同步

    • 解决方法:
      • 插入同步码字(起始码)
      • 能够限制差错传递到下一个同步码字
      • 同步码字应该和其它码字区别开
      • 同步码字可以插入到图像,条带的起始位置

15. RVLC

  • 传统的VLC仅仅从前向唯一的解码
    • 当一个VLC码字出错,则从当前解码码字开始到下一个同步码字之间的码字不能解码都要丢掉
  • RVLC既可以前向解码,也可以后向解码
    • 如果一个RVLC码字出错,跳到下一个同步码字前,从后向解码,部分恢复数据
    • MPEG-4,H.263+标准支持RVLC的差错恢复

  • RVLC

前缀码的第一个和最后一个比特设为"1"

前缀码的偶比特位设为"0"

前缀码的奇比特位用来识别不同的码字

16. 数据分区(Data Partitioning)

  • 将数据分成重要数据和一般数据分别放在码流的不同位置
    • 重要的数据紧跟着放在同步字的后边
      • 重要数据:编码模式,MV,DC系数
    • 一般数据放在重要数据的后边
      • 一般数据:AC系数
  • 重要数据先于一般数据解码

17. 差错传递问题

  • 编解码器不匹配产生不正确的预测,导致差错传递
    • 例如:运动补偿预测,DC预测

18. 差错传递限制

  • 周期的插入I帧
    • 差错可以被I帧阻止
    • 降低编码效率
  • 在空间预测帧中插入I宏块
    • 可以在空间预测帧中差错传递较大的地方采用Intra宏块编码阻止差错进一步传递
    • 编码效率比I帧高

19. 反馈编码

  • 如果编解码之间的信道为反馈信道,可以根据解码器的反馈信息重新预测编码
  • 编码器重新编码出错帧为I帧,重传给解码器
    • 比周期插入I帧更简单,能及时避免误差传递
    • 编码效率低
  • 编码器用其它正确的参考帧做预测
    • 编码器和解码器都缓存有多个以前解码的图像
    • 编码器在多个以前解码的图像中选择正确的作为参考帧来作为当前图像的参考帧

  • 缺点:需要高速的信道传输,否则产生延迟

20. 多描述编码(Multiple Description Coding,MDC)

  • 视频输入到并行的信道,划分成几部分,经过同样的编码,产生不同的码流,有同样的编码质量
  • 图像可以用任意一个码流恢复
  • 多个码流合并可以得到更高的图像质量

21. 多描述编码技术

  • 空域下采样
  • 变换域下采样

  • 多描述标量量化(Multimedia Description Scalar Quantizer,MDSQ)

22. 传输层差错控制

  • 鲁棒性打包
    • 编码模式被重复的放入连续的数据包中
  • 空间块交织打包
    • 空间连续的块被放如不连续的数据包中
  • 加倍传输重要信息
    • 图像类型,编码模式,运动矢量

23. 交互差错控制

  • 选择编码
    • 避免用差错区域作为预测编码
    • 对于高误码率的传输,用更多的Intra宏块编码和更短的条带编码
  • 无等待重传
    • 象素即使出现差错,仍继续解码,记录差错象素位置
    • 直到重传数据到达,纠正出错的象素
    • 能无延迟的完美重构出解码图像
  • 多重复重传
    • 对于误码率高的传输信道,多次重复的传输数据

第13 章 视频传输

1. 多媒体传输

  • 多媒体数据通过信道从一端到另一端的通信

2. 多媒体传输特点

  • 延迟敏感(Delay Sensitive)
    • 端到端延迟
    • 抖动延迟
  • 数据损失容忍(Loss Tolerant)
    • 少量的多媒体数据损失是可以接受的
  • HVS对多媒体数据的延迟比数据损失更加敏感
  • 多媒体数据与一般数据不同
    • 一般数据不允许有损失,但可以有延迟

3. 多媒体传输存在的问题

  • 带宽:
    • 有限的带宽
    • 时变的带宽
  • 延迟:
    • 解码器得不到解码需要的数据
  • 传输数据损失
    • 压缩数据对数据损失非常敏感
    • 可以通过差错控制技术来减少传输数据损失

4. 多媒体传输应用

  • 存储多媒体数据传输
    • VCD,DVD
  • 实时多媒体数据传输
    • 数字电视广播,电视会议,视频监控
  • 流媒体
    • IPTV,网络视频点播

5. 多媒体传输考虑的因素

  • 差错控制
  • 服务质量(Quality of Service,QoS)
    • 延迟
    • 带宽
    • 丢包率
    • 误码率
  • 实时性
  • 同步
    • 视频,音频同步
  • 实现代价

6. 网络七层协议

7. 网络通信

  • 层次结构
    • 不同通信任务安排在不同的层次上完成
    • 层与层之间通过很好的接口定义来通信
    • 层次结构利于通信协议的设计和实现
    • 层次越高,逻辑上越接近用户
    • 层次越低,越接近物理信号传输

8. 电路交换网(Circuit-Switched Network)

  • 电路交换网
    • 在一个物理信道可以有几个时分复用的数据连接
    • 在一个数据连接工作期间,一个专门用于该数据连接的电路被建立

9. 信号复用

  • 电路交换网的特点
    • 带宽不变
    • 传输延迟短
    • 小的延迟抖动
  • 电路交换网使用案例
    • 公共交换电话网(Public Switch Telephone Network,PSTN)
    • 综合业务数字网(Integer Service Digital Network,ISDN)
  • 优点
    • 有固定带宽,适合实时应用
      • 音频流
      • CBR视频
  • 缺点
    • 不适合突发的应用
      • 文件传输,电子邮件,网页浏览
      • VBR视频

20. 包交换网(Packet-Switched Network)

  • 数据以包的形式在信道中传输
  • 数据包
    • 包头
      • 包ID,包长度,IP地址,同步字,传输协议等
    • 数据载荷
      • 打包的有效数据
    • 包尾
      • 冗余信息或校验信息
  • 无连接的
  • 丢失可重传

  • 包交换网的特点
    • 通信连接给多个用户共享,来自不同用户的数据包共享同一个网络资源
    • 允许更多的用户使用网络
    • 每个数据包可以占用信道的整个带宽
    • 如果信道繁忙,则新的数据包将被放到缓冲区队列中
    • 如果缓冲区队列充满,则数据包丢失
  • 包交换网的特点
    • 数据包长度可变
    • 大的传输延迟
    • 大的延迟抖动
  • 包交换网使用案例
    • 局域网
      • 以太网:IEEE 802.3
      • 令牌环:IEEE 802.5
    • 广域网
      • Internet
    • 移动网
      • 通用无线分组业务(General Packet Radio Service,GPRS)
  • 优点
    • 适合需要动态带宽的应用
      • 数据
      • VBR视频
  • 缺点
    • 不适合实时的应用
      • 实时音视频传输

21. 电路交换与包交换

  • 连接带宽1Mb/s
  • 每个用户占用带宽100kb/s
  • 电路交换网最大只能有10个用户
  • 包交换网
    • 如果大于10用户同时使用网络的概率小于0.004
    • 可以支持35个用户使用,服务质量和电路交换网一样好

22. 包延迟

  • 处理延迟
    • 数据校验,纠错
    • 头部检查
  • 排队延迟
    • 传输前在队列中的等待时间
  • 转发延迟
    • 发送比特到信道的时间
  • 传输延迟
    • 在信道中传输的时间

23. 视频传输协议

  • 网络传输协议
    • TCP
    • UDP
    • RTP/RTCP:运行在UDP上的传输层协议
  • 视频传输协议基于网络传输协议
    • 采用RTP/RTCP协议传输视频

24. TCP和UDP

  • TCP:传输控制协议(Transmission Control Protocol)
    • 每个数据包的传输都需要应答
    • 提供可靠的数据包传输
    • 长延迟
    • 面向连接的协议
  • UDP:用户数据报协议(User Diagram Protocol)
    • 数据包传输无应答
    • 提供尽量好的数据传输
    • 无连接的简单协议

25. RTP

  • RTP:实时传输协议(Real-time Transport Protocol)
    • 在UDP上运行的实时传输协议
    • 时间戳机制解决延迟抖动
    • 数据包序列号机制为接受的数据包排序
    • 数据载荷类型信息识别数据载荷的格式
      • H.261,MPEG-1,H.262(MPEG-2)

26. RTCP

  • RTCP:实时传输控制协议(Real-time Transport Control Protocol)
    • 与RTP配套使用的控制协议
    • 用于监视网络的QoS并传输一些上层信息
    • 发送和接收监控信息,例如:往返传输延迟,数据包丢失率,数据到达抖动,

27. 视频数据封装

28. 视频的网络传输

29. 流媒体

  • 流媒体存储在服务器端,通过信道传输到客户端
  • 流媒体特点
    • 连续实时传输
    • 不必等到流媒体文件全部下载完毕才传输,用户只需等待几秒,十几秒的启动延时即可观看,启动延时大大减少
    • 流媒体文件传输和观看同时进行
    • 不需要客户端有很大的存储空间

  • 流媒体交互功能
    • 有暂停、回放、快进、快退、拖动等功能
    • 只需十几秒的初始延迟
    • 操作延时只有1,2秒钟
    • 客户端的回放缓冲
      • 保存过去几十秒的媒体数据,提供快速回放的功能
      • 长时间回放则需要数据重传
  • 例子:
    • 网络直播电台
    • 体育赛事网络直播
  • 和一般流媒体一样在客户端有回放缓冲
  • 交互:
    • 无快进功能
    • 可以回放,暂停

30. 流媒体面临的挑战

  • 带宽
    • 网络带宽是时变的
    • 需要控制码流适应带宽
  • 端到端延迟
    • 用缓冲区控制处理延迟和延迟抖动
  • 传输数据丢失
    • 压缩的码流对数据丢失非常敏感
    • 需要错误控制来恢复丢失的数据

31. 多媒体系统结构

  • 应用层
    • 原始的未压缩的视频、音频
  • 压缩层
    • 压缩的视频基本流,音频基本流
  • 传送层
    • 将基本流打包成基本流数据包,并实现音视频的基本流数据包复用,组成复用的传送流
  • 传输层
    • 信道编码,载波调制产生信号发送到信道中并传输

32. 音频复用

  • 音频和视频码流通过复用实现同步

33. 码率控制

  • 码率
    • 不同是视频图像有不同的编码比特数
  • CBR
    • 每帧图像采用相同的比特数编码,码率固定
    • 每帧图像的质量(PSNR)不固定
    • ISDN,DTV
  • VBR
    • 每帧图像采用不同的比特数编码
    • 每帧图像的质量固定
    • DVD,无线网络,Internet
  • 视频存储编码的码率控制
    • 编码固定时间的视频到固定比特数为R的码流
    • 例如:DVD,4.7GB的空间存储两小时的电影
  • 限定比特数的码率控制方法
    • 分配相等的比特数到每一帧,R/N bit/frame
      • 存在质量不稳定的问题
    • 多趟编码
      • 视频存储编码没有实时的要求
    • 可以反复检查整个视频序列并且重新编码
    • 能提供比单趟编码更好的编码码率控制性能
  • 视频码率可以通过以下方法控制
    • 调整量化参数(最常用)
    • 调整帧率
    • 调整空间分辨率
    • 增加或丢弃增强层(用于可分级编码)
  • 存储视频的多趟编码方法
    • 采用VBR编码整个视频序列
    • 收集并分析编码的统计信息
      • 图像质量及编码比特数
    • 如果所有编码比特数大于限定的最大比特数
      • 找到视频序列的复杂部分
      • 从新为复杂的图像分配比特数
      • 从新编码整个视频序列
  • 数字电视信道
    • 20Mb/s带宽
    • CBR
    • 通过对缓冲区情况的反馈来控制产生比特率
      • 如果缓冲区水平太高,增加量化步长
      • 如果缓冲区水平太低,减少量化步长

34. 缓冲区管理

  • 编解码缓冲区

  • 使用缓冲区的好处
    • 减少抖动
    • 通过重传进行差错恢复
    • 通过交织编码进行差错恢复
    • 平滑输入输出波动
  • 缓冲区问题
    • 上溢
    • 下溢
  • 假设参考模型(Hypothetical Reference Decoder,HRD)
  • 用于H.263,MPEG,H.264
  • 漏斗参数
    • R:峰值传输码率
    • B:缓冲区大小
    • F:初始解码缓冲区的充满度
  • HRD的使用
    • 编码器编码完一段视频序列后能发现一个(R,B,F)参数三元组,将其发送给解码器,使解码器使用这些参数有效的解码该视频序列
    • 解码器可以根据这些参数确定是否能解码一个码流,并且知道初始的延时是多少
    • HRD算法:给定压缩码流{b0, b1, …, bN-1}和码率R,发现最小的缓冲区大小Bmin和最小的初始缓冲区的充满度Fmin
      • 解码压缩码流,不考虑缓冲区的上溢和下溢,找到缓冲区存储码流的最高层High和最底层Low
      • Bmin=High-Low,Fmin=-Low
  • HRD的例子:帧率30fps,序列编码比特bi={5k,2k,4k,5k},传输码率R=60kbps è2kb/frame

  • HRD的例子:解码器缓冲区的解码状态
    • 初始延迟:10kb/60kbps=1/6秒



发布了0 篇原创文章 · 获赞 13 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览