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

参考文章:音视频高手课系列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.mzph.cn/news/580910.shtml

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

相关文章

基于Java Swing的图书管理系统

一、项目总体架构 本项目基于Java Swing框架,数据库采用的是MySQL。项目文件夹如下: 二、项目截图 1.登录和注册界面 2.用户界面 3.管理员管理图书类别 4.管理员管理书籍 5.管理员管理用户 项目总体包括源代码和课程论文,需要源码的…

Go语言实现KV存储系统:前言

文章目录 前言前提条件持久索引并发总结 前言 你好,我是醉墨居士,最近想做一些存储方面的东西玩玩,我第一时间就想到了能不能自己开发一个保存键值对的存储系统 我找了些资料,准备使用Go语言实现一下,想着有想法咱就…

通过MobaXterm远程连接Anolis

目录 前言: 一.设置ip 二.远程连接 前言: 小编已经阐述了如何安装Anolis系统,如果有不了解的小伙伴可以查看这一篇博客Anolis安装 这篇博客将会讲述如何远程连接Anolis系统。各位看官拿好板凳! 一.设置ip 打开网卡所在位…

西门子PLC通过PROFINET协议与多功能电表通讯

西门子PLC通过PROFINET协议与多功能电表通讯 项目要求 西门子S71200PLC需要通过PROFINET协议和多功能电表通讯,读取线电压、相电压、线电流、相电流、有功功率、无功功率等参数。 项目实施 采用网关NET90-PN-MBT(以下简称“网关”)&#…

Java开发框架和中间件面试题(9)

102.你了解秒杀吗?怎么设计? 1.设计难点:并发量大,应用,数据库都承受不了。另外难控制超卖。 2.设计要点: 将请求尽量拦截在系统上游html尽量静态化,部署到cdn上面。按钮及时设置为不可用&…

【Java面试题】redis的过期策略有哪些

redis通过设置过期时间来控制键值对的存活时长,过期时间可以通过expire , pexpire expireat , pexpireat 等命令设置,String 类型数据可以通过setex命令设置过期时间。 以下介绍三种redis的过期策略: 1. 定时删除 在设置键值对的过期时…

数据库概念学习

1. mysql默认的事物级别 MySQL 默认的隔离级别是可重复读(REPEATABLE READ)。 PostgreSQL 中,默认的隔离级别是读已提交(READ COMMITTED) 可重复读隔离级别是 MySQL 的默认隔离级别,它具有以下特点&#x…

Spring Data 灵活查询的三种方式

在页面中展示列表数据时,通常需要根据用户输入的不同的查询条件返回不同的查询结果,传统的方式往往采用手动编写原始sql拼接where条件的方式,这种方式并不安全,容易存在sql注入漏洞。 本文介绍用SpringDataJpa实现灵活查询的方式…

C# 委托(Delegate)

C# 委托(Delegate) C# 委托(Delegate)声明委托(Delegate)实例化委托(Delegate)委托的多播(Multicasting of a Delegate)委托(Delegate&#xff09…

怎么提取视频中的背景音乐?

当我们在刷视频的时候,有时候听到一个背景音乐很好听,但是又不知道歌名,比如英语歌,这个时候我们很难找到这首歌,相信有很多朋友会遇到这样的问题,不知道怎么弄,下面小编给大家推荐一些方法帮助…

MySQL数据表加密字段支持模糊查询的方案

AES_ENCRYPT函数和AES_DECRYPT,需要注意的是,加密后的字段需要用blob做存储,如果用varchar存储会报1366错误。 Mysql本身自带的加密方法,分为2种: 1、不可逆加密算法: PASSWORD,ENCRYPT,MD5&…

名词+of+名词+非谓语动词短语的结构

一、英语中 名词 of 名词 that .,that后面的定语从句修饰的是of前面的名词还是后面的名词?如果是前面或者后面,要反过来怎么搞? eg;There are some present of you that jam sent you yesterday.(这里有一些吉姆昨天送的你的礼物)1) present of you可…

Pytorch从零开始实战14

Pytorch从零开始实战——DenseNet SENet算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——DenseNet SENet算法实战环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook,使用Python3.8&#x…

亿赛通电子文档安全管理系统 linkfilterservice 未授权漏洞

产品简介 亿赛通电子文档安全管理系统,(简称:CDG)是一款电子文档安全加密软件,该系统利用驱动层透明加密技术,通过对电子文档的加密保护,防止内部员工泄密和外部人员非法窃取企业核心重要数据资…

TS常用类型

原始类型使用 // 原始类型使用 let age: number 18let myName: string 前端let isLoding: boolean falselet a: null nulllet b: undefined undefinedlet s:symbol Symbol()数组类型使用 // 数组类型的两种写法// 写法一 let numbers: number[] [1, 2, 3] // 数值类型…

Spring企业开发核心框架

文章目录 Spring企业开发核心框架一、框架前言1. 总体技术体系2. 框架概念和理解 二、Spring Framework简介1. Spring 和 SpringFramework2. SpringFramework主要功能模块3. SpringFramework 主要优势 三、Spring IoC 容器概念1. 组件和组件管理概念2. Spring IoC容器和容器实现…

ALS-运动系统解构

角色握持 角色蓝图:将物体绑在手上 动作蓝图: 将握持动画截取一帧(explicit time时间写好) 角色替换 在原人物模型下面加一个骨骼体(先不用添加模型),重命名为bodymesh AI使用流程 新建一…

品牌如何在线上打造“社交货币”?媒介盒子揭秘

品牌的社交货币,是品牌与消费者的共识身份铸造器。竹筒奶茶、Keep奖牌这类的实体产品作为社交货币,每每能够引爆社交平台,那么品牌能否通过线上平台打造“社交货币”呢?接下来就让媒介盒子和大家聊聊。 一、社交货币是什么 社交货…

6.Nacos

1.单机部署 1.1 官网 https://nacos.io/zh-cn/index.html https://github.com/alibaba/Nacos 1.2.版本说明 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 1.3.下载地址 https://github.com/alibaba/nacos/releases/tag/2.2.…

小区跑腿服务

社区跑腿服务是指在社区范围内为居民提供各种便利的服务,包括购物代劳、快递代取、家政服务等。 这种服务的出现,满足了居民生活中诸多需求,受到了广泛的欢迎和认可。 首先,社区跑腿服务方便了居民的日常生活。 居民无需亲自前…