【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264
翻译版权所有,转载请注明出处~
xzrch@2018.09.14
---------------------------------------------------------------------
1.介绍
随着数字电视和DVD视频的出现,广播电视和家庭娱乐已经发生了革命性的变化。视频压缩技术的标准化使这些和其他更多应用的实现成为了可能。 MPEG系列的下一个标准,MPEG4,正在催生新一代基于互联网的视频应用,而与此同时ITU-T H.263视频压缩标准也已广泛用于视频会议系统。
MPEG4(视觉部分)和H.263是基于视频压缩(“视频编码”)技术的标准。 负责这些标准的团体,运动图像专家组(Motion Picture Experts Group)和视频编码专家组(Video Coding Experts Group)(即MPEG和VCEG)正处于开发新标准的最后阶段,该标准有望在表现上显著优于MPEG4和H.263,从而更好地压缩视频图像,同时提供支持高质量、低比特率流媒体技术的一系列功能。 新标准“高级视频编码”(AVC)的历史可以追溯到至少7年前。
在1995年完成最初的视频通话标准H.263后,ITU-T视频编码专家组(VCEG)开始研究两个更进一步的领域:为H.263提供附加功能的“短期”工作(成果是标准的第2版) 和为低比特率视频通信开发新标准的“长期”工作。后者产生了“H.26L”标准草案,提供了比以前的ITU-T标准好得多的视频压缩效率。 2001年,ISO运动图像专家组(MPEG)认识到H.26L的潜在优势,成立了联合视频组(Joint Video Team,JVT),其中包括来自MPEG和VCEG的专家。JVT的主要任务是将H.26L“模型”草案进一步制定为完整的国际标准。实际上,结果最终是两个完全相同的标准:ISO MPEG4 part 10 和 ITU-T H.264。新标准的“官方”名称是高级视频编码(AVC)。然而,它拟定时的旧名字,H.26L和其国际电联文件编号H.264 [1] 最终却广为人知。
2. H.264编解码器
与早期标准(例如MPEG1,MPEG2和MPEG4)一样,H.264草案标准没有明确定义一个具体的编解码器(即encoder / decoder对)。 相反,该标准只定义了已编码视频比特流的语法和解码该比特流的方法。 然而在真正实践中,兼容的编码器和解码器很可能需要包含图2-1和图2-2中所示的功能元件。有一点需要说明的是,虽然图中所示的这些功能可能是满足合规性所必需的,但编解码器的结构仍有相当大的可变化空间。 基本功能元素(预测,变换,量化,熵编码)与以前的标准(MPEG1,MPEG2,MPEG4,H.261,H.263)略有不同,H.264中的重要变化发生在每个功能元素的细节当中。
编码器(图2-1)包括两条数据流路径,一条“前向”路径(从左到右,以蓝色显示)和一条“重建”路径(从右到左,以洋红色显示)。 解码器中的数据流路径(图2-2)从右到左显示,以说明编码器和解码器之间的相似性。
2.1 编码器(前向路径)
输入帧Fn作为编码对象用于编码。以宏块(Macroblock)为单位处理帧(对应于原始图像中的16×16像素), 每个宏块以帧内(Intra)或帧间(Inter)模式编码。 在任一情况下,都基于一个重构帧(Reconstructed Frame)生成预测宏块P。 在帧内模式中,P由当前帧n中的采样点生成,n先前已经编码、解码和重构(即图中的uF'n;注意用于生成P的是未经滤波(Unfiltered)的样本)。在帧间模式中,P由来自一个或多个参考帧的运动补偿预测生成。在上述两幅图中,参考帧为先前编码的帧F'n-1; 然而,每个宏块的预测值可以由已经编码和重建的一个或两个过去或未来帧(按时间顺序)生成。
从当前宏块中减去预测P以产生残差或差异宏块Dn。 对其进行变换(使用块变换)并量化以算出X,一组量化的变换系数。 这些系数接下来被重新排序和熵编码。 熵编码系数与解码宏块所需的辅助信息(诸如宏块预测模式,量化器步长,描述宏块如何被运动补偿的运动矢量信息等)一起形成压缩比特流。然后被传递到网络抽象层(NAL)以进行传输或存储。
2.2 编码器(重建路径)
对量化的宏块系数X进行解码,目的是重建一个用于编码其他宏块的帧。 系数X被重新缩放(Q-1)和逆变换(T-1)以产生差异宏块Dn'。 这与原始差异宏块Dn不同。量化过程引入了损耗,因此Dn'是Dn的失真版本。将预测宏块P和Dn'相加以创建重构宏块uF'n(原始宏块的失真版本)。接下来用滤波器减少阻塞失真的影响,并且从一系列宏块F'n创建重构的参考帧。
2.3 解码器
解码器会从NAL接收压缩后的比特流,然后对数据元素进行熵解码和重新排序以产生一组量化系数X。接下来对它们进行重新调整和逆变换以算出Dn'(这与编码器中所示的Dn'相同)。使用从比特流解码的头信息,解码器创建预测宏块P,其与在编码器中形成的原始预测P相同。 将P加到Dn'上得到uF'n,对其进行滤波以产生解码的宏块F'n。
从图中和上面的讨论中应该能看出,编码器中重建路径的目的是确保编码器和解码器使用相同的参考帧来创建预测P。如果不这样做的话,预测编码器和解码器中的P将不相同,导致编码器和解码器之间的误差或“漂移”增加。
3. 参考文献
1 ITU-T Rec. H.264 / ISO/IEC 11496-10, “Advanced Video Coding”, Final Committee Draft, Document JVTE022,September 2002
【一】H.264/MPEG-4 Part 10 White Paper 翻译之 Overview of H.264的更多相关文章
- 【二】H.264/MPEG-4 Part 10 White Paper 翻译之 Prediction of Intra Macroblocks
翻译版权所有,转载请注明出处~ xzrch@2018.09.14 ------------------------------------------------------------------- ...
- H.264 White Paper学习笔记(一)总览
H.264 White Paper对于264编码器的原理讲的比较透彻,在阅读学习的时候收获很大,这份文献网上有很多了,也有不少人翻译,不过想要理解更清楚我觉得还是得看英文原版的. 首先看一下白皮书里给 ...
- Core Java Volume I — 1.2. The Java "White Paper" Buzzwords
1.2. The Java "White Paper" BuzzwordsThe authors of Java have written an influential White ...
- Ethereum White Paper
https://github.com/ethereum/wiki/wiki/White-Paper White Paper EditNew Page James Ray edited this pag ...
- nVIDIA SDK White Paper ----Vertex Texture Fetch Water
http://blog.csdn.net/soilwork/article/details/713842 nVIDIA SDK White Paper ----Vertex Texture Fetch ...
- EOS.IO Technical White Paper v2
[EOS.IO Technical White Paper v2] Abstract: The EOS.IO software introduces a new blockchain architec ...
- H.264 / MPEG-4 Part 10 White Paper-翻译
1. Introduction Broadcast(广播) television and home entertainment(娱乐) have been revolutionised(彻底改变) b ...
- H.264 White Paper学习笔记(二)帧内预测
为什么要有帧内预测?因为一般来说,对于一幅图像,相邻的两个像素的亮度和色度值之间经常是比较接近的,也就是颜色是逐渐变化的,不会一下子突变成完全不一样的颜色.而进行视频编码,目的就是利用这个相关性,来进 ...
- 2013=10=19 ENGLISH 翻译
数据结构习题及答案 严蔚敏_课后习题答案 http://www.doc88.com/p-243584884293.html 273089354 随着女性获得平等权力的趋势,女性日渐增长的经济权力以及为 ...
随机推荐
- String 的字面量、常量池、构造函数和intern()函数
一.内存中的 String 对象 Java 的堆和栈 对于基本数据类型变量和对象的引用,也就是局部变量表属于栈内存: 而通过 new 关键字和 constructor 创建的对象存放在堆内存: 直接的 ...
- arcgis js api proxy java 版本配置
<?xml version="1.0" encoding="utf-8" ?> <ProxyConfig allowedReferers=&q ...
- Python 自动化paramiko操作linux使用shell命令,以及文件上传下载linux与windows之间的实现
# coding=utf8 import paramiko """ /* python -m pip install paramiko python version 3. ...
- LWIP network interface 网卡 初始化 以 STM32 为例子 后面会有 用 2G 或者4G 模块 用 PPP拨号的 形式 虚拟出网卡 所以先以 这个为 前提
LWIP network interface 网卡 初始化 以 STM32 为例子 后面会有 用 2G 或者4G 模块 用 PPP拨号的 形式 虚拟出网卡 所以先以 这个为 ...
- java中的作用域
在说明这四个关键字之前,我想就class之间的关系做一个简单的定义,对于继承自己的class,base class可以认为他们都是自己的子女,而对于和自己一个目录下的classes,认为都是自己的朋友 ...
- Linq的左链接
地址:https://docs.microsoft.com/en-us/dotnet/csharp/linq/perform-left-outer-joins ①创建两张表和一些基础数据做我们的测试 ...
- ODI使用流程
---恢复内容开始--- ODI流程 Topology 1.建立 源 物理结构体系 2.建立 目的 物理结构体系 步骤同上 3.建立 源 逻辑架构 4.建立 目的 逻辑架构 步骤同上 Designer ...
- python 文件上传本地服务器
1:python之上传文件 1.1.url代码 """untitled1222 URL Configuration The `urlpatterns` list rout ...
- linux下安装protobuf及cmake编译
一.protobuf 安装 protobuf版本:2.6.1 下载地址:https://github.com/google/protobuf/archive/v2.6.1.zip 解压之后进入目录 修 ...
- zabbix+grafana实现可视化界面展示
昨天,经理找我说河南有个项目,甲方要求,一定要展示出科技感,问问我有什么好的方案,经过本人深(fen)思(kuan)熟(bai)虑(du),终于找到了一个心仪的方案,就是把业务监控用 zabbix+g ...