根据包含关系从大到小顺序排列   序列(GOP)-> 帧(I/IDR/P/B)-> 片组 -> 片(slice)-> 宏块(Block)-> 块(Macro  Block)-> 像素(pixel)

1.宏块(Macro Block):是H.264编码的基本单位,一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块大小为16x16个像素。

宏块分为I、P、B宏块:

I宏块只能利用当前片中已解码的像素作为参考进行帧内预测;

P宏块可以利用前面已解码的图像作为参考图像进行帧内预测;

B宏块则是利用前后向的参考图形进行帧内预测

2.片(Slice):一帧视频图像可编码成一个或者多个片,每片包含整数个宏块,即每片至少一个宏块,最多时包含整个图像的宏块。

片的目的:为了限制误码的扩散和传输,使编码片相互间保持独立。

片共有5种类型:I片(只包含I宏块)、P片(P和I宏块)、B片(B和I宏块)、SP片(用于不同编码流之间的切换)和SI片(特殊类型的编码宏块)。

以下是片的句法结构:

片头规定了片的类型、属于哪个图像、有关的参考图像等;片的数据包含了一系列宏块和不编码数据。

3.片组,是一个编码图像中若干宏块的一个子集,包含一个或若干个片。

一般一个片组中,每片的宏块是按扫描次序进行编码的,除非使用任意片次序(Arbitrary Slice Order, ASO)一个编码帧中的片之后可以跟随任一解码图像的片。

4.序列

参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。所以对于一段变化不大图像画面,我们可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,这样B帧的大小就只有完整帧的1/10或更小!B帧之后的C帧如果变化不大,我们可以继续以参考B的方式编码C帧,这样循环下去。这段图像我们称为一个序列(序列就是有相同特点的一段数据),当某个图像与之前的图像变化很大,无法参考前面的帧来生成,那我们就结束上一个序列,开始下一段序列,也就是对这个图像生成一个完整帧A1,随后的图像就参考A1生成,只写入与A1的差别内容。
    在H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。
   H264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成I帧的算法,帧间压缩是生成B帧和P帧的算法

在H264中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流, 以I帧开始,到下一个I帧结束。

一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这里可以获得重新同步的机会。IDR图像之后的图像永远不会使用IDR之前的图像的数据来解码。
    一个序列就是一段内容差异不太大的图像编码后生成的一串数据流。当运动变化比较少时,一个序列可以很长,因为运动变化少就代表图像画面的内容变动很小,所以就可以编一个I帧,然后一直P帧、B帧了。当运动变化多时,可能一个序列就比较短了,比如就包含一个I帧和3、4个P帧。

转载于:https://www.cnblogs.com/cyyljw/p/11118960.html

块 /宏块(MB)/片(Slice/片组/图像(picture) 对应关系相关推荐

  1. H264基本概念之 宏块、片和片组

    这几个概念对比音频信号处理可是全新的,下面简要介绍一下定义和作用: 1.宏块(Macro Block):一个编码图像首先要划分成多个块(4x4 像素)才能进行处理,显然宏块应该是整数个块组成,通常宏块 ...

  2. 网络数据包片段拼合(连续h264片段拼接成完整h264帧)--纠正下,是h264 slice,不是图像帧

    最近项目用的网络摄像头,从网络层获取到连续的h264片段数据,于是写了一个将连续输入数据按 指定字符串分割成一个slice数据的 class, 稍作改动,也可以用来处理 文本文件中查找 替换等等功能, ...

  3. 怪物Appr值与Data里Mon-x.wil里图像的对应关系

    大家一定想知道怪物的Appr值是怎么算出来的吧?其实有更简单的办法! 首先大家要准备好两个主角: SQL数据库与看 wix软件(为什么要用看wix软件,因为这个软件查看图像快,打开快,还可以直接输入数 ...

  4. Android音视频【一】H264编码基础

    人间观察 岁月催人,时间过的太快了 音视频编码解码就是指通过特定的压缩/解压技术,将某个音视频格式的数据转换为另一种音视频格式数据.目前在Android中的音视频用的最多的就是H264+aac的方式进 ...

  5. 区号组号组内块号块内地址号的计算

    容量为64块的Cache采用组相联方式映像,字块大小为128个字,每4块为一组.若主存容量为4096块,且以字编址,那么主存地址应为_(?)_位,主存区号应为_(?)_位. 主存地址=区号+组号+组内 ...

  6. Python AutoCAD 块组

    目 录 Blog Links 一.连接及库导入 二.块 2.1. 创建新块 2.2. 添加图元到块 2.3. 插入块 2.3.1. 从当前文件中插入块 2.3.2. 外部文件作为块插入 2.4. 添加 ...

  7. 【一】VVC理论知识之图像块划分

    一.VVC中的CTU: H.266/VVC 中将每帧图像划分为一系列的 CTU,CTU 的概念和 HEVC 中一致.一帧图像通常分为 3 个采样阵列(一个亮度图像和两个色度图像),一个 CTU 也包含 ...

  8. MATLAB编程(2)——图像划分图像块,得到标记矩阵。

    在进行图像处理时,有时需要将图像划分成若干个图像块. 下面的程序实现的功能: 输入图像的大小(height, width)和图像块的大小(windowSize). 返回图像块划分后的索引图(或者称为标 ...

  9. h.264 去块滤波

    块效应及其产生原因 我们在观看视频的时候,在运动剧烈的场景常能观察到图像出现小方块,小方块在边界处呈现不连续的效果(如下图),这种现象被称为块效应(blocking artifact). 首先我们需要 ...

最新文章

  1. 【C语言】一文搞定 “文件操作”
  2. DeviceIoControl的使用说明
  3. Some cloud foundry deployment screenshot
  4. 一般线性模型和混合线性模型_线性混合模型如何工作
  5. 牛顿儿时成绩很差,5岁开始接触物理,也许是他如此伟大的唯一原因!
  6. P2842-LJJ算数【数论,快速幂】
  7. linux es连接mysql_Linux下ES,kibana,mysql,kafka,zookeeper启动关闭方式
  8. cnblogs客户端发贴解析,Post,Get分析
  9. ACM常用C++模板 包括常用头文件
  10. revit2018注册表删除_Revit软件的彻底卸载方法 注册表卸载
  11. 【Machine Learning】监督学习、非监督学习及强化学习对比
  12. 关于.net中值类型的方法调用
  13. 项目方说性能达到百万TPS,如何测试它的可信度?
  14. html按钮美好,崛起中的九大HTML5开发工具
  15. 因果法制体系轮回框架的崛起
  16. U盘启动BIOS设置
  17. 可穿戴设备的发展前景
  18. 现代化养猪——养殖大数据
  19. 设置socket IP_TOS选项
  20. au3 ui html,AutoIt UI及常用操作

热门文章

  1. 夜遇歹人来不及报警怎么办?让求救app帮助你
  2. uni-app 滑到一定位置固定某个元素在顶部 吸顶解决方案 APP端 H5端
  3. mysql需要费用_mysql到底是不是免费的
  4. 数据库查询时出现 unknown column
  5. Android10读写权限
  6. Element Plus 虚拟化表格组件的使用(排序、筛选、自定义单元格渲染) - 个人使用总结
  7. 十二个“一”的特征与剑三中十二门派风格相对应
  8. 求求你!不要在网上乱拷贝代码了
  9. 9.8.1 1.打印head标签的内容。2.打印body标签的内容。3.打印id为Hi的标签对象
  10. ROS话题的订阅与发布