视频压缩编码技术(H.264) 之结构

小时候经常听到

某个字是什么结构

可是技术和结构联系起来

会是什么情况呢?

1. 名词解释

场和帧

视频的一场或一帧可用来产生一个编码图像。通常,视频帧可分成两种类型:连续或隔行视频帧。在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。显然,这时场内邻行之间的空间相关性较强,而帧内邻近行空间相关性强,因此活动量较小或静止的图像宜采用帧编码方式,对活动量较大的运动图像则宜采用场编码方式。

宏、片

一个编码图像通常划分成若干宏块组成,一个宏块由一个16×16 亮度像素和附加的一个8×8 Cb和一个8×8 Cr 彩色像素块组成。每个图象中,若干宏块被排列成片的形式。I 片只包含I 宏块,P 片可包含P 和I 宏块,而B 片可包含B 和I 宏块。

I 宏块利用从当前片中已解码的像素作为参考进行帧内预测(不能取其它片中的已解码像素作为参考进行帧内预测)。

P 宏块利用前面已编码图象作为参考图象进行帧内预测,一个帧内编码的宏块可进一步作宏块的分割:即16×16、16×8、8×16 或8×8 亮度像素块(以及附带的彩色像素);如果选了8×8 的子宏块,则可再分成各种子宏块的分割,其尺寸为8×8、8×4、4×8 或4×4 亮度像素块(以及附带的彩色像素)。

B 宏块则利用双向的参考图象(当前和未来的已编码图象帧)进行帧内预测。

2. 档次和级

H.264 规定了三种档次,如下图所示,每个档次支持一组特定的编码功能,并支持一类特定的应用。

1)基本档次:利用I片和P片支持帧内和帧间编码,支持利用基于上下文的自适应的变长编码进行的熵编码(CAVLC)。主要用于可视电话、会议电视、无线通信等实时视频通信;

2)主要档次:支持隔行视频,采用B片的帧间编码和采用加权预测的帧内编码;支持利用基于上下文的自适应的算术编码(CABAC)。主要用于数字广播电视与数字视频存储;

3)扩展档次:支持码流之间有效的切换(SP和SI片)、改进误码性能(数据分割),但不支持隔行视频和CABAC。

3. H.264 的视频格式

H.264 支持4:2:0 的连续或隔行视频的编码和解码,缺省的4:2:0 的取样格式如下图

逐行数据格式

隔行数据格式

制订H.264 的主要目标有二个:

1)高的视频压缩比,当初提出的指标是比H.263,MPEG-4,约为它们的2倍,现在都已基本实现;

2)良好的网络亲和性,即可适用于各种传输网络。

为此,H.264 的功能分为两层,即视频编码层(VCL)和网络提取层(NAL,Network Abstraction Layer)。VCL 数据即编码处理的输出,它表示被压缩编码后的视频数据序列。在VCL 数据传输或存储之前,这些编码的VCL 数据,先被映射或封装进NAL 单元中。

每个NAL 单元包括一个原始字节序列负荷(RBSP)、一组对应于视频编码数据的NAL 头信息。NAL 单元序列的结构见下图

4. 片

一个视频图像可编码成一个或更多个片,每片包含整数个宏块(MB),即每片至少一个MB,最多时每片包含整个图像的宏块。总之,一幅图像中每片的宏块数不一定固定。设片的目的是为了限制误码的扩散和传输,应使编码片相互间是独立的。某片的预测不能以其它片中的宏块为参考图像,这样某一片中的预测误差才不会传播到其它片中去。编码片共有5 种不同类型,除已讲过的I 片、P 片、B 片外,还有SP 片和SI 片。其中SP(切换P)是用于不同编码流之间的切换;它包含P 和/或I 宏块。它是扩展档次中必须具有的切换,它包含了一种特殊类型的编码宏块,叫做SI 宏块,SI 也是扩展档次中的必备功能。

片的句法结构如图所示,其中片头规定了片的类型,该片属于哪个图像,有关的参考图像等,片的数据包含一系列的编码MB,和/或跳编码(不编码)数据。每个MB 包含头单元和残差数据。

mb_type

确定该MB 是帧内或帧间(P 或B)编码模式,确定该MB 分割的尺寸

mb_pred

确定帧内预测模式(帧内宏块)确定表0 或表1 参考图像,和每一宏块分割的差分编码的运动矢量(帧间宏块,除8×8 宏块分割的帧内MB)

sub_mb_pred

(只对8×8MB 分割的帧内MB)确定每一子宏块的子宏块分割,每一宏块分割的表0 和/或表1 的参考图象;每一宏块子分割的差分编码运动矢量。

coded_block_pattern

指出哪个8×8 块(亮度和彩色)包含编码变换系数

mb_qp_delta

量化参数的改变值

residual

预测后对应于残差图象取样的编码变换系数

原文发布于微信公众号 - 瓜大三哥(xiguazai_tortoise)

原文发表时间:2018-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Petrichor的专栏

深度学习: VGGNet 网络

VGGNet 于2014年由牛津大学著名研究组VGG (Visual Geometry Group) 提出,斩获该年ImageNet竞赛中 Localizati...

6313
来自专栏企鹅号快讯

使用RNN预测股票价格系列一

正文共11490个字,16张图,预计阅读时间:29分钟。 01 概述 我们将解释如何建立一个有LSTM单元的RNN模型来预测S&P500指数的价格。 数据集可以...

2669
来自专栏机器学习从入门到成神

XGboost数据比赛实战之调参篇(完整流程)

这一篇博客的内容是在上一篇博客Scikit中的特征选择,XGboost进行回归预测,模型优化的实战的基础上进行调参优化的,所以在阅读本篇博客之前,请先移步看一下...

3.2K8
来自专栏本立2道生

滤波器——BoxBlur均值滤波及其快速实现

在数字图像处理的语境里,图像一般是二维或三维的矩阵,卷积核(kernel)和滤波器(filter)通常指代同一事物,即对图像进行卷积或相关操作时使用的小矩阵,尺...

1271
来自专栏深度学习自然语言处理

深度学习之卷积神经网络CNN理论与实践详解

概括 大体上简单的卷积神经网络是下面这个网络流程: ? 笼统的说: 文本通过Embeding Layer 后,再通过一些filters进行过滤,...

37615
来自专栏机器学习、深度学习

无人机数车--Drone-based Object Counting by Spatially Regularized Regional Proposal Network

Drone-based Object Counting by Spatially Regularized Regional Proposal Network ...

23510
来自专栏决胜机器学习

从机器学习学python(四) ——numpy矩阵广播及一些技巧

从机器学习学python(四)——numpy矩阵广播及一些技巧 (原创内容,转载请注明来源,谢谢) 在学ng的深度学习微专业时,其中有几节课讲到numpy的一...

4314
来自专栏人工智能头条

一文详解循环神经网络的基本概念(代码版)

3664
来自专栏生信小驿站

python 特征选择①

VarianceThreshold 是特征选择中的一项基本方法。它会移除所有方差不满足阈值的特征。默认设置下,它将移除所有方差为0的特征,即那些在所有样本中数值...

732
来自专栏烂笔头

常用样本相似性和距离度量方法

目录[-] 数据挖掘中经常需要度量样本的相似度或距离,来评价样本间的相似性。特征数据不同,度量方法也不相同。 欧式距离 欧式距离(Euclidean ...

8994

扫码关注云+社区

领取腾讯云代金券