搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
无库存
视频编解码芯片设计原理
0.00     定价 ¥ 128.00
国防科技大学图书馆
  • ISBN:
    9787030726834
  • 作      者:
    范益波
  • 出 版 社 :
    科学出版社
  • 出版日期:
    2022-08-01
收藏
精彩书摘
第1章 概论
  实验证明,人类感知外界的信息有80%是通过视觉得到的。随着信息时代的高速发展,视频已经成为不可或缺的信息载体,在通信、娱乐、安防等各种领域都有着丰富的视频应用。但是,直接存储或传输原始的视频数据是非常不现实的,因为原始视频的数据量是极为庞大的,所以实际应用中必须对视频数据进行压缩。
  视频压缩又称为视频编码(video coding),视频数据之所以能够被压缩,其实是因为其具有大量冗余成分。利用先进的视频压缩手段,可以将视频以十倍、百倍乃至千倍的比例进行压缩,使得高分辨率、高帧率的视频能够实时地通过网络进行传输和播放,并存储在普通的家用计算机中。可以说,视频压缩是多媒体时代的一大基石。
  本章将对视频编码中的基础概念进行介绍。
  1.1 视频的组成
  1.帧、像素与分辨率
  视频是按照一定时间间隔采集的静止图像序列,一幅图像也被称为一帧(frame)。
  在空间维度上,一帧图像可以视为二维空间中的一个采样点阵,而采样点也被称为像素(pixel),它是图像不可分割的*小单位。像素宽高比是单个像素的宽高比例,而像素的行列数则用于表示图像的(空间)分辨率。对于面积相同的图像,分辨率越高,就意味着单位面积中的像素数目越多,能够将图像细节表示得越清晰。图像的宽高比由像素宽高比和分辨率共同决定。
  不同的视频格式具有不同的分辨率,表1-1列举了一些典型的数字视频格式。
  表1-1 数字视频分辨率格式
  2.帧率
  在时间维度上,由于人眼的“视觉暂留”,如果相邻两帧的间隔时间足够短,人眼就无法区分图像序列中的单张静态图像,只会看到平滑运动的视频。每秒包含的帧数被称为帧率,即时间分辨率,单位为 fps(frame per second)。帧率更高的视频能够给人更加平滑连贯的视觉体验,能够流畅地显示高速运动的视频。但也不必一味地追求更高的帧率,因为人眼对于帧率的感知是有限的。到达足够高的帧率(如60fps)后,继续增加帧率不会带来明显的体验变化,反而会过多地增加数据量。
  目前,国际上*常用的电视标准制式是 NTSC、PAL和 SECAM。其中,北美及许多亚洲国家采用 NTSC制式,中国和许多西欧国家使用 PAL制式,而 SECAM制式主要用于东欧和法国。三种制式具有不同的帧率和分辨率,如表1-2所示。不同的制式之间不兼容,某一制式的电视节目必须经过一定的转换,才能被另一制式的电视播放。
  表1-2 国际三大电视制式
  3.场
  通常,电视显示画面的扫描顺序是从左到右、从上到下。按照扫描方式,视频帧可以分为逐行扫描帧和隔行扫描帧两类。顾名思义,逐行扫描帧是逐行进行扫描的。而为了节约传输带宽,或者提高时间采样率,可以将一帧分为两个场(field)分别扫描。先扫描所有奇数行构成顶场,再扫描所有偶数行构成底场,如图1-1所示。
  图1-1 帧、场结构
  4.量化深度与动态范围
  像素的幅度值如果用 n bit表示,则称量化深度为 n,一共可以表示2n个量化等级。例如,用8bit来表示黑白图像,则一共可以表示256个灰度等级。动态范围是指*大亮度值与*小亮度值的比,自然界中真实存在的动态范围约为108,人眼具有很高的动态范围,大概是在105左右。显然,显示器、照相机等设备仅用256个亮度值难以体现这些细节。要采集或呈现高动态范围的图像,应该采用更大的量化深度(如10bit),并配合一定的高动态范围(high-dynamic range,HDR)技术。
  5.码率
  码率又称比特率,是指单位时间传送数据的比特(bit)数,单位为 bit/s(bit per second)。数字视频的信息传输量一般较大,所以往往以每秒千比特(kbit/s)或每秒兆比特(Mbit/s)为单位进行计量。由于传输信道的带宽、缓冲区等是有限的,为了节约带宽,或者防止溢出造成数据丢失,视频编码在实际应用时必须要考虑相应的码率控制方案。
  1.2 色彩空间
  视频压缩领域中,常见的色彩空间有 RGB、YUV等。
  1. RGB
  根据三基色原理,自然界中的绝大部分色彩都可以由三种基色按一定比例混合得到;反之,任意一种色彩均可被分解为三种基色。其中,人眼对红(R)、绿(G)、蓝(B)三种颜色*为敏感,而采用这三种基色表示色彩的方法,即为 RGB色彩空间。这三个分量采用相同的精度表示,例如,传统图像一般采用8bit来表示单个分量值,则 RGB色彩空间中单个像素需要24bit表示。
  颜色是由亮度(luma)和色度(chroma)共同表示的,色度反映的是不包括亮度在内的色彩信息。但是, RGB色彩空间的三个分量值均与亮度相关,换句话说,一旦亮度发生改变,R、G、B的值均会相应改变,因此 RGB色彩空间并非图像处理的*佳选择。
  2. YUV(YCbCr)
  相较于色度,人类视觉系统(HVS)对亮度的感知更为敏感。 YUV色彩空间就是根据这一特点,使用一个亮度分量(Y)和两个色度分量(U、V)来表示像素。在 YUV家族中, YCbCr是应用*为广泛的,其中 Cb指蓝色色度分量, Cr指红色色度分量。在视频压缩领域,一般不对 YUV和 YCbCr进行区分。
  根据 ITU-R BT.601建议书[1],YUV分量与 RGB分量之间可以按照式(1-1)进行转换,其中各分量的取值范围为[0,255]。
  (1-1)
  如上所述,因为人眼对色度的敏感程度更低,所以可以适当降低色度的采样精度(色度亚采样)来节约比特数。因此,视频分辨率实际上指的是亮度分辨率,色度分辨率可能会等于或小于亮度分辨率。根据不同的采样精度,视频图像可以分为4∶4∶4、4∶2∶2、4∶2∶0等格式,图1-2为各格式的亮度、色度样本的分布位置,可见色度亚采样本质上就是使相邻几个像素共用同一色度值(由于 U、V两个色度分量具有同样的地位,因此统一进行讨论)。
  图1-2 三种常见视频采样格式
  4∶4∶4格式(YUV444)中,每4个亮度像素,具有相应的4个色度像素,也就是说色度与亮度具有相同的采样精度,或者说色度与亮度具有相同的空间分辨率。
  4∶2∶2格式(YUV422)中,每4个亮度像素对应2个色度像素,这是因为色度仅在垂直方向上具有与亮度相同的采样精度,而在水平方向上,色度的采样精度只有亮度的1/2。
  4∶2∶0格式(YUV420)中,每4个亮度像素对应1个色度像素,色度在垂直、水平方向上的采样精度,均只有亮度采样精度的1/2。
  1.3 数据冗余与视频编码
  视频中存在大量的冗余,而视频编码本质上就是要消除这些冗余,从而实现对视频数据的压缩。因此,“视频编码”与“视频压缩”描述的实际上是同一个概念。
  而视频中的冗余一般包括空间冗余、时间冗余、编码冗余、视觉冗余、知识冗余、结构冗余等[2]。其中,由于空间冗余、时间冗余和编码冗余取决于图像数据的统计特性,因此也将这三者统称为统计冗余。
  空间冗余是静态图像中*为主要的一类数据冗余。例如,一幅图像中若存在较大的平缓区域,则意味着该区域中不同像素的亮度、色度等都是非常接近的,在空间上存在很强的关联性,彼此之间可以认为是平滑过渡的,不会发生剧烈突变。这种关联性即空间冗余。
  时间冗余是视频序列中常见的一类数据冗余。视频序列中,相邻帧往往具有类似的场景和物体,其中运动物体具有类似的大小和形状,仅仅是在图像中的位置发生了改变,可以认为后一帧中的物体是前一帧中物体发生了位移。相邻帧在时间上的这种高度相关性即时间冗余。
  编码冗余也称为信息熵冗余。1948年,信息论之父香农提出了“信息熵”的概念。简而言之,变量的不确定性越大,熵也就越大,其所携带的信息量也就越大。由于不同事件发生概率不同,其所携带信息也不同,在信息编码过程中如果不进行熵压缩编码,而是对所有事件采用统一字符编码方式,就会存在编码冗余。由信息论可知,为表示图像数据的一个像素点,只要按其信息熵的大小分配相应比特数即可。例如,对出现概率大的事件采用短码字编码,而出现概率小的事件采用长码字编码,会实现更好的压缩效果。
  视觉冗余则是在记录原始图像数据时,通常假定视觉系统是均匀的、线性的,而实际上人眼对亮度和色度的敏感度是非均匀、非线性的。同时,人眼更倾向于捕捉物体的整体结构,而对其内部细节较忽略,无法察觉某些细微的变化。因此,对人眼敏感和不敏感的部分同等对待进行编码,会产生比理想编码更多的数据,这部分数据即视觉冗余。
  知识冗余是指人们可以根据已有的基础知识和基本常识,按照某种规律性对图像进行推断。例如,某些图像拍摄的是大海,大海中有水,那么可以推断出图像中也有水,拍摄的是汽车,那么可以推断出图像中可能有轮子、玻璃等。这种类似的规律性的图像的冗余为知识冗余。利用知识冗余,可以构建某些物体的基本模型,使得图像存储时仅需保留某些特征参数,从而减少数据量。
  结构冗余是指某些图像可能具有规律排列的结构或纹理特征。如果已知像素的分布规律,则可以据此生成相应的图像,而无须对相似的部分进行重复编码,从而实现数据压缩。
  各种类型的冗余为图像序列的编码压缩提供了广阔的空间。自 H.261标准以来就一直沿用的混合编码架构,就利用空间冗余、时间冗余、信息熵冗余等提出了许多编码工具,如基于空间冗余的帧内预测、基于时间冗余的帧间预测、基于视觉冗余的量化、基于信息熵冗余的熵编码,以及基于数学的变换等。
  1.4 编码单元与编码层次
  对于视频编解码而言,编码单元反映了处理的基本单位。通常来说,编码单元越大,每次编码所能获取的信息量就越大,理论上也就可以达到更好的编码效果;但是,过大的编码单元会使得编码本身的资源消耗难以承受,无法应用于实际的编码环境中。鉴于此,相较于像素级编码、层级或内容级编码,块级编码在视频编码算法中使用得*为广泛。块级编码是指预先将一幅图像切割为多个像素块,一次对块内的部分或所有像素进行预测和编码。
  对于编码器而言,还需要定义编码层次,以用于组织编解码的架构。编码的过程是逐层深入、依次进行的;而解码过程则是编码的逆过程。通常使用的编码层次如下。
  (1)编码单元(coding unit,CU):编码的基本单位,通常取块(block),有时候块内部还可以继续划分为子块(sub-block)。
  (2)切片(slice,有时也等同于 tile):由多个编码单元组成的部分图像,通常在空间上是连续的。切片定义了编码单元的可参考位置,从而将错误限制在一整幅图像内的部分范围内。
  (3)帧/图像:由多个切片组成的一幅完整的图像,表示一个时间点内的所有视觉信息,是人眼接收视觉信息的基本单位。
  (4)图像组(group of pictures,GOP):由多个帧/图像组成的部分视频序列,通常在时间上是连续的。图像组可以将基于时间相关性的编码过程限定在一定范围内,从而限制视频编解码芯片设计原理
  错误的影响范围。
  (5)序列(sequence):表示整个完整的视频。图1-3是一个编码层次的示例。
  图1-3 视频编码中的层次
  1.5 视频编码的国际标准
  几十年间,新的视频编码算法层出不穷。然而,商业视频编码应用趋向于使用有限的几个标准化方法进行视频压缩。这是因为,标准能够保证软硬件供应商之间的可兼容性,能够使不同出品商的编码器和解码器之间的互操作更加简单,使得建立综合视频平台成为可能。并且标准会严格定义所使用的技术和算法,并涵盖这些技术的专利许可费,降低侵犯专利权的风险。
  国际上制定视频编码标准的主要组织为国际电信联盟-电信标准化部门(ITU-T),以及
展开
目录
目录
前言
第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 上板
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用国防科技大学图书馆的读者帐号和密码进行登录

点击获取验证码
登录