H.264宏块(Macroblock)概念(运动估计、变换编码、环路滤波)

news2024/11/18 5:54:33

参考文章:音视频高手课系列5-h264编码基础(宏块原理)

参考文章:切片slice与宏块,运动矢量

文章目录

  • 使用videoEye分析视频宏块示例
  • H.264宏块概念
    • 1. 宏块的定义
    • 2. 运动估计
    • 3. 变换编码
    • 4. 环路滤波
    • 5. 注意:宏块的概念既适用于帧内编码,也适用于帧间编码
      • 宏块是为了解决帧内压缩问题,还是帧间压缩问题?
    • 参考文献

使用videoEye分析视频宏块示例

使用videoEye软件,导入视频,点击单帧解码分析:

在这里插入图片描述

量化参数分析:

在这里插入图片描述

宏块类型分析:

在这里插入图片描述

H.264宏块概念

H.264也被称为MPEG-4第10部分,是一种广泛使用的视频压缩标准。这个标准由ITU-T视频编码专家组(VCEG)与ISO/IEC移动专家组(MPEG)联合开发,因此也被称为AVC(Advanced Video Coding,高级视频编码)。H.264视频编码主要用于高清电视广播、视频会议、流媒体等应用场景。

在H.264中,宏块(Macroblock)是一个重要的基本单元。它涉及到许多关键技术和算法,包括运动估计、变换编码、环路滤波等。接下来,我们将深入探讨H.264中的宏块概念。

1. 宏块的定义

H.264中的宏块(Macroblock)通常是指16x16像素的图像区域。每个宏块都可以独立地进行运动估计、变换编码、环路滤波等处理。H.264的编解码器会逐个宏块地处理整个视频帧。

// 一个简单的表示宏块的结构
typedef struct {
    int width;   // 宏块的宽度
    int height;  // 宏块的高度
    int data[16][16];  // 宏块的像素数据
} Macroblock;

2. 运动估计

在视频序列中,相邻的帧之间通常存在大量的空间冗余信息。为了消除这些冗余信息,H.264采用了运动估计技术。具体来说,对于当前帧的一个宏块,编码器会在参考帧中找到一个最匹配的区域,然后只需要记录下这个区域的位置偏移和残差信息,就可以有效地压缩视频数据。

3. 变换编码

变换编码是H.264中另一个重要的技术。对于每个宏块,编码器会先进行DCT(Discrete Cosine Transform,离散余弦变换)或者整数变换,将像素值转化为频域系数,然后再通过量化、熵编码等步骤进一步压缩数据。

4. 环路滤波

为了减小压缩过程中的块效应,H.264引入了环路滤波技术。对于每个宏块,解码器会在IDCT(Inverse Discrete Cosine Transform,离散余弦反变换)之后,根据边界的强度和平滑度,选择性地对边界进行滤波处理。

5. 注意:宏块的概念既适用于帧内编码,也适用于帧间编码

在视频压缩中,一个帧(Frame)通常被划分为若干个宏块(Macroblock)。每个宏块通常包含16x16个像素点,这些像素点共享某些参数,例如运动矢量和编码模式等。

  • 对于帧内编码(I-frame),每个宏块是独立进行编码的,与其他宏块无关。这就像我们在处理一张静态图片一样,将图片分割为多个小区域(即宏块),然后对每个小区域进行独立编码。

  • 对于帧间编码(P-frame和B-frame),则需要利用视频序列中时间上的相关性,通过预测当前宏块与参考帧中的宏块之间的差异来实现编码。这种方式可以大大减少冗余信息,从而提高压缩效率。

宏块是为了解决帧内压缩问题,还是帧间压缩问题?

宏块(Macroblock)的概念用于解决视频压缩中的帧内压缩和帧间压缩问题。无论是在帧内编码还是帧间编码中,宏块都扮演着重要的角色。

  1. 帧内压缩:帧内压缩主要处理的是单一帧内部的数据冗余。每一帧被划分为若干个宏块,然后对每个宏块独立进行DCT(离散余弦变换)和量化等操作,从而实现数据的压缩。由于每个宏块是独立编码的,因此帧内编码也可以看作是一种基于宏块的空间压缩技术。

  2. 帧间压缩:帧间压缩则是利用连续帧之间的时间相关性来减少数据冗余。通过预测当前宏块与参考帧中的宏块之间的差异(运动估计),并只编码这种差异(运动补偿),从而实现数据的压缩。帧间编码也可以看作是一种基于宏块的时间压缩技术。

参考文献

  1. Wiegand, T., Sullivan, G. J., Bjontegaard, G., & Luthra, A. (2003). Overview of the H. 264/AVC video coding standard. IEEE Transactions on circuits and systems for video technology, 13(7), 560-576.
  2. Richardson, Iain E. G. “The H.264 advanced video compression standard.” John Wiley & Sons, 2010.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1338543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【halcon深度学习】dev_display_dl_data 移植到C# 上篇

效果展示 前言 在研究halcon深度学习的时候,会发现halcon的例程里面用到了大量的二次封装库函数。这些库函数内部也是由基础的算子组成。我们在halcon的开发环境里面用的很爽,但是一旦要在C#中使用,就会报错。 一开始,我想避开这个移植过程,直接使用halcon引擎(HDevEngi…

043、循环神经网络

之——RNN基础 杂谈 第一个对于序列模型的网络,RNN。 正文 1.潜变量自回归模型 潜变量总结过去的信息,再和当前信息一起结合出新的信息。 2.RNN 循环神经网络将观察作为x,与前层隐变量结合得到输出 其中Whh蕴含了整个模型的时序信息&#xf…

2024 年 11 款最佳 Android 数据恢复软件应用

Android 设备上的数据丢失可能是一种令人痛苦的经历,通常会导致不可替代的信息瞬间消失。 意外删除、系统崩溃或格式错误都可能发生,重要数据的丢失可能会扰乱日常工作并影响您的工作效率。 幸运的是,技术进步带来了多种恢复解决方案&…

代码编辑器,代码(JSON,js,Markdown,html,css,java,sql)格式化 fei-editor

效果展示 官方文档: https://ymf930.gitee.io/fei-editor/#/ npm 安装 npm i fei-editor -S # or yarn add fei-editor想要运行下面的示例,除此之外还要安装f-ui-one、brace 引入 在 main.js 中写入以下内容: import { createApp } fr…

Unity AssetBundle学习笔记

目录 基础介绍 动态资源加载 更新和添加内容 打包策略 资源分组 频繁更新的资源 资源压缩 Unload(true)和Unload(false) Unload(false) Unload(true) 确定何时卸载 引用计数 场景和状态管理 资源使用频率 内存预算…

信号与线性系统翻转课堂笔记12——时域取样定理

信号与线性系统翻转课堂笔记12 The Flipped Classroom12 of Signals and Linear Systems 对应教材:《信号与线性系统分析(第五版)》高等教育出版社,吴大正著 一、要点 (1)了解信号取样的概念&#xff1…

[Linux] MySQL数据库的备份与恢复

一、数据库备份的分类和备份策略 1.1 数据库备份的分类 1)物理备份 物理备份:对数据库操作系统的物理文件(如数据文件、日志文件等)的备份。 物理备份方法: 冷备份(脱机备份) :是在关闭数据库的时候进…

【教学类-42-04】20231225 X-Y 之间减法题判断题(确保错误题有绝对错误的答案)

作品展示: 背景需求: 做过X-Y 之间减法题判断题,同样的方法做一份减法题 代码展示——乱序 # 乱序版(幼儿操作,题目打乱)) X-Y 之间的所有减法题的判断题3.0(随机生成绝对错误答案…

SpringBoot3 Web开发

注:SpringBoot的Web开发能力,由SpringMVC提供。 0. WebMvcAutoConfiguration原理 1. 生效条件 AutoConfiguration(after { DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,ValidationAutoConfiguration.class }) …

PAT 乙级 1030 完美数列

解题思路:这道题首先需要排序,然后双循环找出最大的那个,但一定要注意优化,比如我已经刚好找到临界,或者之后的不用遍历了没意义了,要赶紧跳出循环,否则会超时,另外其实这题还有个范围的坑过&am…

测试服务器带宽(ubuntu)

apt install python3 python3-pippip3 install speedtest-clispeestest-cli

【三维生成】稀疏重建、Image-to-3D方法(汇总)

系列文章目录 总结一下近5年的三维生成算法,持续更新 文章目录 系列文章目录一、LRM:单图像的大模型重建(2023)摘要1.前言2.Method3.实验 二、SSDNeRF:单阶段Diffusion NeRF的三维生成和重建(ICCV 2023&am…

策略模式(组件协作)

策略模式(组件协作) 链接:策略模式实例代码 注解 目的 正常情况下,一个类/对象中会包含其所有可能会使用的内外方法,但是一般情况下,这些常使用的类都是由不同的父类继承、组合得来的,来实现…

Upload上传图片,回显图片,编辑图片,限制图片,不显示上传图标,图片放大功能

效果图: 新增、编辑时:限制上传四张,当超过四张隐藏上传图标 图片放大 :效果图 详情:回显时不显示上传图标 页面:template 部分 图片在前端存储,提交时一并给后端 :file-list"repairPlan…

Biotech - 小分子化合物、蛋白质、核酸的不同数据表征方式

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/135247719 小分子化合物、蛋白质、核酸之间的关联是生命科学研究的一个重要领域,涉及到细胞功能的调控、信号传导的机制、疾病的发生和…

html table+css实现可编辑表格

要实现可编辑的 HTML 表格&#xff0c;你可以使用 JavaScript 和 HTML5 的 contenteditable 属性。 <!DOCTYPE html> <html> <head><style>table {border-collapse: collapse;width: 100%;}th, td {border: 1px solid black;padding: 8px;text-align:…

模型树实操

很多时候&#xff0c;数据都是有层级和分类的&#xff0c;使用laravel的Dcat框架&#xff0c;可以快速搭建一个结构清晰、且可以鼠标拖拽排序的后台&#xff1b;先上例子更直观&#xff1a; 这里是Dcat的模型树使用文档&#xff0c;戳一下&#xff1b; 重点注意事项有&#x…

如何给已分区的磁盘增加空间?详细教程分享!

用户案例&#xff1a;​给已分区的磁盘增加空间 “怎样给已分区的磁盘增加空间呢&#xff1f;我的电脑硬盘分成了C、D、E、F这四个区&#xff0c;每个区都是114G。但现在我觉得C盘的114G空间有些太小了&#xff0c;所以想把其他分区多余的空间给C盘。压缩完分区后&#xff0…

一款能封堵牙本质小管的牙膏,帮你告别牙齿敏感

冬天来临&#xff0c;牙齿敏感成为了很多人的困扰。吃冷饮、涮火锅都让人倍感不适&#xff0c;这时候一款有效的牙膏就显得格外重要。最近我发现了一款非常不错的清九野小红盾牙膏&#xff0c;它能够有效缓解牙齿敏感问题。 造成“敏感牙”的原因有很多&#xff0c;但根本原因还…

Vue3-26-路由-useRouter 和 useRoute 两个API 的作用介绍

先来说说两个API 的作用 useRouter() : 返回的是项目中的 路由实例的对象 可以通过这个实例对象进行路由的逻辑跳转 useRoute() : 返回的是当前的 路由对象&#xff0c; 可以在当前路由对象中获取到路由名称、路由参数、路由路径等玩完整的路由信息。 写个案例看一下具体是什么…