H.264的编解码框架与以前提出的标准如H.261、H.263及MPEG-1/2/4并无显著变化,也是基于混合编码的方案:以运动矢量代表图象序列各帧的运动内容,使用前面已解码帧对其进行运动估计和补偿或使用帧内预测技术,所得的图象参差值要经过变换、量化、熵编码等部分的处理。所以,新标准的性能提升在于各个部分的技术方案的改进及新算法的应用。

    新标准在提高图象传输的容错性方面做了大量工作,重新定义了适于图像的结构划分。在编码时,图象帧各部分被划分到多个slice结构中去,每个slice都可以被独立解码不受其它部分的影响。Slice由图象最基本的结构——宏块组成,每个宏块包含一个16×16的亮度块和两个8×8的色度块。为进一步提高鲁棒性,整个系统被划分为视频编码层和网络抽象层。视频编码层主要描述要传输的视频数据所承载的视频内容。而网络抽象层则是考虑不同的应用,如视频会议通信、H.32X连续包的视频传输或RTP/UDP/IP的通信。

    H.264标准分成三个框架(profile):Baseline、Main及X,代表了针对不同应用的算法集及技术限定。其中,Baseline主要包含了低复杂度、低延时的技术特征;主要是针对交互式的应用;考虑到了恶劣环境下的容错性,Baseline的内容基本都被其它更高级别的profile所包含。而Main profile是针对更高编码效率的应用,如视频广播。X profile 的设计主要针对流媒体的应用,在这一框架中所有容错技术和对比特流的灵活访问及切换技术都将包括其中。 
    (1)Baseline profile的主要技术特征。
    Baseline的解码器只对I slice及P slice进行操作。
    对于帧间预测,相比以前的标准,为了更精确的对图象的运动内容进行预测补偿,新标准允许宏块更进一步划分为16×16、16×8、8×16、8×8、8×4、4×8、4×4的子块;运动估计精确到经由6-tap滤波器得到的1/4象素位置;运动矢量由相邻块预测得到,其预测的差值被编码传输。H.264支持多参考帧的预测,规定运动估计使用的参考帧数最多可达15帧,多参考帧的使用大大提高了对图像传输的容错性,抑制了错误在空间和时间上的蔓延。
    对于所有的slice编码类型,H.264支持两类帧内编码:4x4与16x16编码模式。对于4x4模式,每一个亮度4x4块有8种不同方向上的预测模式及DC预测模式。对于16x16模式,每个16x16亮度块有4种帧内预测模式。而对于宏块的8x8色度采样,采用与亮度16x16几乎相同的预测模式。为了保证slice的编码独立性,帧内预测是不允许跨越slice边界的。
    对于变换、量化部分。不同于以前标准对预测参差值的变换编码使用DCT变换,H.264使用了简单的整数变换。这种变换与DCT相比压缩性能几乎相同且有许多优势,其核心变换的计算只使用加减、移位运算,避免了精度的损失。对变换参差系数的量化使用了52级步长的量化器,而H.263标准只有31级。量化步长以12.5%递增,量化步长范围的扩大似的编码器能够更灵活和精确的进行控制,在比特率和图象质量之间达到折中。
    对熵编码部分。对于要传输的量化变换系数,若使用基于上下文的变长编码(CAVLC),它是根据前面已编码传输的量化变换系数值的大小来选择接下来系数编码要使用的变长编码表。由于变长编码表的设计是基于相应的统计条件,所以其性能要优于使用单一变长编码表。而对其它数据如头信息等,使用一种单一的变长编码表(Exp-Golomb code)。
    新标准仍然使用基于块的预测及重构方式,为了去除由此产生的影响图象主观质量的方块效应,H.264使用了去块效应滤波器。其主要思想是当块边界上两边差较小则使用滤波器使差别“平滑”掉,若边界上图象特征明显就不使用滤波。这样既为减弱“块效应”的影响又避免滤掉图象的客观特征。同时在相同主观质量下使得比特率减少5-10%。
    另外,对图象数据的组织及传输。在H.264标准中的图象宏块可以灵活的宏块组织顺序(FMO)划分为多个slice group;slice之间是相互独立的可以任意的顺序传输到解码端(ASO)。而且在比特流中slice可以使用重复的方式(RS)传输,这在slice数据出错的情况下可用来进行恢复,增强了图象传输的鲁棒性。同时slice间的相互独立性抑制了错误的空间传播,因此提高了比特流的容错性。 
    ⑵ Main profile的技术特征 
    Main profile包含Baseline profile的所有算法并具有额外的技术特征,但它并不支持FMO、ASO及RS等技术。只支持对I、P、B slice的处理操作。
    在此框架内提出了适配块划分尺寸的变换(ABT)的概念。此概念是针对帧间编码的,其主要思想是将对预测参差进行变换编码的块尺寸与用来进行运动补偿的块尺寸联系起来。这样就尽可能的利用最大的信号长度进行变换编码。但是由于复杂度的原因,进行变换的最大块尺寸被限制在8×8以下。
    对熵编码部分,为更高效的进行编码,这里使用了基于上下文的算术编码(CABAC)使熵编码的性能进一步提高。相比较CAVLC,在相同图象质量下编码电视信号使用CABAC将会使比特率减少10-15%。
    另,Main profile不支持多个slice group的划分。 
    ⑶ 相关的编码问题如何对已提出的预测模式进行选择(mode decision)和使用运动估计策略(ME)历来都视频编码实现的重点研究课题。在H.263标准的实现软件中对模式的选择是简单的基于对阀值的比较。在新标准的测试软件中使用了拉格朗日率失真优化策略,它是基于使用每种图象块尺寸和每种预测模式而产生的参差及其传输的码率。这样,模式选择可以取得优化的率失真性能但这是以提高运算复杂度为代价的。此优化操作是对下面拉各朗日函数的最小化: J = SATD + λ"R 其中,R为对应传输的各部分的比特率;λ为优化参数,其与量化参数有很强的相关性。SATD为经过哈德曼变换的4×4块的预测参差绝对值总和。对于所有帧内、帧间宏块编码模式及多参考帧的选择都通过对拉各朗日函数的最小化来实现。通常,视频标准只是包括解码规范,而模式选择的技术研究是属于编码端的范畴,所以不列在标准之内。

h.264 baseline and main profile相关推荐

  1. 分布式视频编码对比实验中H.264/AVC Intra 模式与H.264/AVC Inter Motion模式分析

    分布式视频编码(Distributed Video  Coding, DVC)主要的特点是编码端简单.解码端复杂.解码传输延时大以及传输鲁棒性高等,这些特点可以使其很好地满足计算能力受限的低功耗编码终 ...

  2. MPEG-4 AVC/H.264 视频编码资源列表(中文)

    ============================================================================ 软件编解码器: =============== ...

  3. H.264编码profile level控制

    背景知识 先科普一下profile&level.(这里讨论最常用的H264)  H.264有四种画质级别,分别是baseline, extended, main, high:  1.Basel ...

  4. H.264 Profile、Level、Encoder三张简图

    H.264有四种画质级别,分别是BP.EP.MP.HP: 1.BP-Baseline Profile:基本画质.支持I/P 帧,只支持无交错(Progressive)和CAVLC: 2.EP-Exte ...

  5. H.264的技术优势及其在H.323系统中的应用

    一.引言 近年来,随着我国通信网络基础设施的快速建设,视讯业务由于可以为处于多点的与会者提供音视频等多种信息,节省大量费用,提高工作效率,因而发展迅速,并有望成为NGN的主要业务.视讯会议系统从产生至 ...

  6. 【数据压缩】实验:H.264文件分析

    一.H.264简介 H.264是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT)提出的高度压缩数字视频编解码器标准,这个标准通常被称为H. ...

  7. H.264 入门篇 - 00 (简介)

    目录 1.Profiles 2.应用领域 3.Level 4.层次结构 4.0.整个过程 4.1.数据切分 4.1.1.Macroblock (宏块) 4.2.帧内预测 (Intra-Frame Pr ...

  8. 【数据压缩作业9】H.264码流分析仪

    一.实验要求 选择一个.mp4或者.264文件. 在码流分析仪软件中打开该文件,从几个层次进行分析: 分析SPS和PPS里都包含哪些主要的信息,给出参数值.(例如分辨率.帧率.GOP结构等) 以一个G ...

  9. H.264码流分析仪

    目录 一.实验内容 二.实验结果 1. SPS profile_idc level_idc eq_parameter_set_id log2_max_frame_num_minus4 pic_orde ...

最新文章

  1. 深度!移动机器人(AGV)产业链全分析
  2. 关于程序员的59条搞笑但却真实无比的编程语录_技术/软件
  3. 分支优化:neg+sbb算术运算代替逻辑跳
  4. python中读取文件内容-Python读取文件内容的三种常用方式及效率比较
  5. 杭电2037java实现
  6. Individual Project
  7. 本周 Github 精选:多款超赞 AI 开源项目,等你来 Star!
  8. 【python-numpy 】中的随机打乱数据方法np.random.shuffle
  9. 关于单点登录中同一浏览器session信息共享的又一解决办法
  10. Arduino十大滤波算法程序大全(精编无错版)
  11. 读书日当天冲上销量榜Top1和Top3,来听听携程人写书背后的故事
  12. CICD详解(九)——gitlab简单使用
  13. 第一个android应用程序,深入学习Android 第一个应用程序
  14. java Outlook的日程_使用Outlook进行日程安排的方法
  15. 1、JavaScript入门
  16. mysql数据库安装错误报错Falled不成功,感叹号
  17. 炸机不可怕,可怕的是你不知道为什么炸
  18. css中“~”(波浪号)、“,”(逗号)、 “ + ”(加号)和 “ > ”(大于号)是什么意思?
  19. 英国工党的歌曲‘耶路撒冷’
  20. 炼铁厂高炉可视化系统

热门文章

  1. 基于asp.net007个人网站博客系统
  2. 动手学深度学习 - 11.7. d2lzh 包索引
  3. RabbitMQ——SpringBoot集成RabbitMQ
  4. COSCon'22@Dalian | 中国开源年会大连分会场邀您组局聊聊
  5. 在Vue3.0之前,回顾Vue2.0新特性的使用
  6. leetcode LCP 07. 传递信息
  7. 评测 N200和n100选哪个 N200和n100参数对比
  8. 如何选择国际短信服务商?
  9. mysql大数据量导入
  10. 软件项目实施步骤图解