本书主要介绍视频编解码芯片的设计,以HEVC视频编码标准为基础,介绍编解码芯片的整体硬件架构设计以及各核心模块的算法优化与硬件流水线设计。其中包括帧内预测、整像素运动估计、分像素运动估计、重建环路、环路滤波、熵编码和熵解码等。同时,本书还进一步介绍了参考帧压缩、率失真优化、码率控制、解码错误恢复、图像质量评估等标准未规定但属于编解码芯片设计中需要考虑的重要内容。最后,本书还介绍了面向VR的视频编码技术、基于神经网络的图像与视频编码技术,以及作者所在实验室的开源硬件编码器IP核。
样章试读
目录
- 目录
前言
第1章 概论 1
1.1 视频的组成 1
1.2 色彩空间 3
1.3 数据冗余与视频编码 4
1.4 编码单元与编码层次 5
1.5 视频编码的国际标准 6
参考文献 7
第2章 视频编码技术框架与标准 8
2.1 视频编码技术框架 8
2.1.1 块划分 10
2.1.2 预测 10
2.1.3 变换编码 11
2.1.4 量化 12
2.1.5 熵编码 13
2.1.6 重建环路与环路滤波 13
2.2 H.26x标准 14
2.2.1 H.261 14
2.2.2 H.263 16
2.2.3 H.264/AVC 17
2.2.4 H.265/HEVC 21
2.2.5 H.266/VVC 23
2.3 其他视频编码标准 28
2.3.1 MPEG-x标准 28
2.3.2 AVS标准 29
2.3.3 AV1标准 33
2.3.4 EVC标准 35
参考文献 37
第3章 视频编解码芯片架构 39
3.1 概述 39
3.1.1 芯片成本 39
3.1.2 实现流程及等价性检查 40
3.1.3 软硬件编码器的区别 43
3.1.4 敏捷架构 44
3.2 层次结构 45
3.2.1 X001 CDC P 45
3.2.2 K001 ENC P 47
3.2.3 K001 DEC P 48
3.2.4 敏捷设计策略 49
3.3 架构优化 51
3.3.1 RMD 52
3.3.2 IME 53
3.3.3 FME 54
3.4 性能评估 56
参考文献 57
第4章 帧内预测 58
4.1 概述 58
4.1.1 基本原理 58
4.1.2 现有成果 64
4.1.3 设计考量 66
4.2 算法优化 66
4.2.1 计算失真的优化 67
4.2.2 计算码率的优化 67
4.2.3 搜索模式的优化 68
4.3 VLSI实现 69
4.3.1 VLSI实现概述 69
4.3.2 行列存储器 71
4.3.3 并发存储器 73
4.3.4 预测引擎 73
4.3.5 搜索调度器 76
4.3.6 性能评估 76
参考文献 77
第5章 整像素运动估计 79
5.1 概述 79
5.1.1 基本原理 80
5.1.2 现有成果 86
5.1.3 设计考量 87
5.2 算法优化 89
5.2.1 搜索起始点 89
5.2.2 参考窗形状 90
5.2.3 降采样搜索 91
5.2.4 基于微代码的整像素运动估计架构 91
5.3 VLSI实现 92
5.3.1 寻址控制逻辑 93
5.3.2 水平垂直参考像素存储器 93
5.3.3 参考像素阵列更新逻辑 93
5.3.4 转置寄存器 94
5.3.5 像素截位 96
5.3.6 性能评估 96
参考文献 102
第6章 分像素运动估计 104
6.1 概述 104
6.1.1 基本原理 104
6.1.2 现有成果 110
6.2 算法优化 113
6.2.1 搜索方法 113
6.2.2 粗略运动向量预测 113
6.3 VLSI实现 114
6.3.1 插值 115
6.3.2 代价估计 116
6.3.3 性能评估 117
参考文献 119
第7章 重建环路 122
7.1 概述 122
7.1.1 基本原理 123
7.1.2 现有成果 129
7.1.3 设计考量 130
7.2 VLSI实现的模块优化 130
7.2.1 变换与反变换模块 130
7.2.2 转置存储器 136
7.2.3 量化与反量化模块 138
7.2.4 并发存储器 139
7.3 VLSI实现的架构优化 141
7.3.1 重建环路周期计算 141
7.3.2 TU/PU划分和4×4专用通路 142
7.3.3 PU模式判决下的两种结构 143
7.4 性能评估 144
7.4.1 资源代价分析 144
7.4.2 与其他文献的比较 145
参考文献 147
第8章 环路滤波 149
8.1 概述 149
8.1.1 算法方程 149
8.1.2 现有成果 156
8.1.3 设计考量 157
8.2 去方块滤波VLSI 实现 158
8.2.1 顶层架构 158
8.2.2 8×8滤波单元管理 159
8.2.3 边界强度计算模块 160
8.2.4 时序和流水线设计 161
8.2.5 性能评估 162
8.3 样点自适应补偿VLSI实现 162
8.3.1 顶层架构 162
8.3.2 基于位图的参数统计模块 163
8.3.3 码率估计算法 165
8.3.4 模式判决流水线设计 165
8.3.5 性能评估 166
参考文献 167
第9章 熵编码和熵解码 169
9.1 概述 169
9.1.1 基本原理 169
9.1.2 现有成果 181
9.1.3 设计考量 183
9.2 熵编码的VLSI设计 186
9.2.1 顶层架构 186
9.2.2 准备语法元素模块 187
9.2.3 二值化模块 188
9.2.4 更新上下文模块 189
9.2.5 算术编码模块 190
9.2.6 性能评估 192
9.3 熵解码的VLSI实现 193
9.3.1 顶层架构 193
9.3.2 输入码流模块 194
9.3.3 判断语法元素模块 194
9.3.4 更新上下文模块 195
9.3.5 算术解码模块 196
9.3.6 反二值化模块 198
9.3.7 性能评估 198
参考文献 199
第10章 参考帧压缩 201
10.1 概述 201
10.1.1 衡量标准 201
10.1.2 现有成果 202
10.2 参考帧压缩的算法设计 213
10.2.1 数据结构 214
10.2.2 DPCM预测 215
10.2.3 小值优化的半定长编码 215
10.2.4 子编码块分组 217
10.3 参考帧压缩的VLSI实现 217
10.3.1 VLSI实现 217
10.3.2 性能评估 218
参考文献 220
第11章 率失真优化 221
11.1 概述 221
11.1.1 基本原理 221
11.1.2 现有成果 223
11.1.3 设计考量 225
11.2 算法优化 227
11.2.1 变换单元统计 227
11.2.2 其他信息统计 228
11.2.3 帧间预测可配置模式判决 230
11.3 VLSI实现 231
11.3.1 顶层架构及时序 231
11.3.2 任务发布模块 232
11.3.3 预测模块 233
11.3.4 重建环路模块 234
11.3.5 代价计算模块 235
11.3.6 模式判决模块 237
11.3.7 性能评估 238
参考文献 239
第12章 码率控制 241
12.1 概述 241
12.2 码率控制提案 242
12.2.1 AVC的R-Q模型 242
12.2.2 HEVC的URQ模型 246
12.2.3 HEVC的Q-模型 247
12.2.4 HEVC的R-模型 248
12.2.5 R-模型的改进 250
12.3 码率控制模型的性能评估 251
12.3.1 HM的测试条件和测试结果格式 252
12.3.2 几种码率控制模型的比较 254
12.4 总结与讨论 257
参考文献 258
第13章 解码错误恢复 259
13.1 概述 259
13.1.1 基本原理 259
13.1.2 现有成果 261
13.2 空域差错掩盖算法 262
13.2.1 设计考量 262
13.2.2 算法优化设计 266
13.2.3 实验结果分析 268
13.3 时域差错掩盖算法 270
13.3.1 设计考量 270
13.3.2 算法优化与硬件设计 273
13.3.3 实验结果分析 276
参考文献 277
第14章 图像质量评估 279
14.1 概述 279
14.1.1 图像质量评估分类 279
14.1.2 主观图像质量评估 280
14.1.3 客观图像质量评估 283
14.1.4 性能指标和评价准则 291
14.2 算法优化 292
14.2.1 设计考量 292
14.2.2 显著性窗口确定策略 294
14.2.3 全局分数 295
14.2.4 显著性分数 296
14.2.5 分数融合指标 296
14.3 软件实现与测试 296
参考文献 300
第15章 虚拟现实与视频编码传输 302
15.1 VR视频概述 302
15.1.1 360°视频的拍摄采集 303
15.1.2 全景视频的投影编码 305
15.1.3 全景视频的动态传输 315
15.1.4 全景视频的渲染显示 320
15.2 新型投影方式ARcube 320
15.2.1 ARcube从球面到立方体的投影 320
15.2.2 参数D的最佳取值 322
15.3 实验测试与结果分析 323
15.3.1 角度均匀性 323
15.3.2 像素分布均匀性 324
15.3.3 综合验证 325
参考文献 326
第16章 神经网络与视频编码 328
16.1 神经网络 328
16.1.1 神经网络基础 328
16.1.2 反向传播算法 329
16.1.3 深度学习简介 330
16.1.4 卷积神经网络 330
16.1.5 深度学习框架 332
16.2 端到端图像编码网络 332
16.2.1 框架结构 333
16.2.2 量化 335
16.2.3 熵估计 336
16.2.4 R-D曲线的遍历 338
16.3 端到端P帧编码网络 339
16.3.1 深度视频压缩框架 339
16.3.2 多参考视频压缩框架 340
16.3.3 基于学习的视频编码器 341
16.3.4 基于率失真自编码器的视频编码器 343
16.4 端到端B 帧编码网络 343
16.4.1 双向预测插值帧 343
16.4.2 全局预测编码 345
参考文献 346
第17章 开源编码器IP核 348
17.1 基于PYNQ的XK264演示方案 349
17.1.1 PYNQ简介 349
17.1.2 准备工作 350
17.1.3 上板调试步骤 350
17.2 XK264编码器IP核V2.0硬件仿真 355
17.3 XK265编码器IP核V2.0硬件仿真 359
17.4 码流转换为可播放文件 362
参考文献 363