H.264编解码流程

编码:

蓝色的前向编码流程:
以宏块为输入单位介绍优于以帧为单位介绍。

Fn为即将进行编码的宏块,由原始图像中16*16像素构成。每个宏块要么采用帧内模式编码,要么采用帧间模式编码。不管是哪种编码模式,预测宏块P都是基于重建帧生成的。在帧内模式中,预测宏块P是由当前帧经过编码、解码和重建生成的(注意,采用未经过滤波的样本uF`n来生成P)。在帧间模式中,预测宏块是通过一个或者多个参考帧经过运动补偿预测生成的。在图中,参考帧就是之前编码得到的帧F`n-1;不过,并不只是一个参考帧,每个预测宏块P都是由一个或者两个,之前或者之后的,已经经过编码和重建所生成的帧中的对应宏块所生成的。

当前宏块减去预测宏块P生成残差宏块Dn。残差宏块Dn经过变换、量化后生成X,由一系列变换量化系数组成。然后,对这些系数进行重排序和熵编码。熵编码生成的系数,附上解码宏块所需要的附加信息生成压缩比特流,(附加信息有宏块预测模式,量化步长,描述如何对宏块进行运动补偿的运动矢量信息,等等)。压缩比特流被传到网络抽象层(NAL)以发射或者储存。

粉红色的重建流程:
为了生成重建帧以编码以后的宏块,将量化后的宏块残差系数X进行解码。系数X经过反量化,反变换生成残差宏块Dn`。此时的残差宏块与原先的残差宏块Dn并不相同,原因是在量化过程中引入了失真。所以,Dn`是变形了的Dn。

预测宏块P与Dn`相加生成重建宏块uF`n(原宏块的变形了的宏块)。为了减小块效应失真,引入了专门的滤波器。滤波之后的宏块就是重建宏块F`n,一系列的重建宏块组成了参考帧。(实际上,这里的参考帧,与解码端生成的最终图像完全一致)

解码:
从NAL中,解码器取得压缩比特流。数据元素经过熵解码和重排序生成一系列量化后的系数X。经过反量化和反变换生成Dn`(与编码端的Dn`一致)。使用从比特流中解码出来的头信息,解码器生成预测宏块P,与先前在编码器中生成的预测宏块P一致。P与Dn`相加生成uF`n,然后经过滤波,生成解码宏块F`n。

从两幅图表和上面的讨论可以发现:编码器的重建流程的目的是为了确保编码端和解码端使用一致的参考帧来生成预测宏块P。如果参考帧不一致,那么编码端和解码端的预测宏块P就不一致,导致在编码端和解码端之间生成渐增的误差或者“漂移”。

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

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

相关文章

远程管理服务器的具体操作方法

远程是管理服务器最常见的一种方式,租用服务器也好,把服务器托管给服务商也好,肯定不会经常去机房办公,有什么问题的话大家都是选择远程服务器。其实远程服务器就跟我们远程电脑是一样的,具体需要怎么操作可能有的人还…

python中的OS模块

OS模块 OS 操作系统的简称 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import osos模块中的函数 getcwd() 功能:获取当前的工作目录 格式:os.getcwd() 返回值:路径字符串chdir() 功能:修改…

JavaWeb基础—dbutils的简单入门

简明入门教程,参考:https://www.cnblogs.com/CQY1183344265/p/5854418.html 进行此章节之前,介绍一个JdbcUtils的再次的简单封装 (例如后面需要构造QueryRunner时得到数据源等的简便的操作) package cn.itcast.jdbcuti…

macos安装vscode_VS Code 代码编辑器入门指南:核心组件与概念

作者:思考问题的熊写在前面如果当电脑只能装一个软件还需要尽量不影响日常学习工作时,不知道你的选择会是什么。我把这个看似「荒诞」的问题理解为「All-in-One」的升级版拷问。这个问题陪伴了我很久,每用一个软件我都会想想它对我究竟有多不…

环路滤波一些概念

熵编码需要编码的数据如下: 熵编码需要编码的数据如下:

【深度学习】TensorFlow之卷积神经网络

卷积神经网络的概念 在多层感知器(Multilayer Perceptrons,简称MLP)中,每一层的神经元都连接到下一层的所有神经元。一般称这种类型的层为完全连接。 多层感知器示例 反向传播 几个人站成一排第一个人看一幅画(输入数…

python中的zip模块

zip压缩 引入模块: import zipfilezip文件格式是通用的文档压缩标准,在ziplib模块中,使用ZipFile类来操作zip文件,下面具体介绍一下: zipfile.ZipFile(file[, mode[, compression[, allowZip64]]]) 功能:…

[LeetCode] 35. Search Insert Position

Given a sorted array and a target value, return the index if the target is found. If not, return the index where it would be if it were inserted in order. You may assume no duplicates in the array. Here are few examples.[1,3,5,6], 5 → 2[1,3,5,6], 2 → 1[1…

golang 的交叉编译

为什么80%的码农都做不了架构师?>>> Go是一门编译型语言,所以在不同平台上,需要编译生成不同格式的二进制包。 由于Go 1.5对跨平台编译有了一些改进,包括统一了编译器、链接器等。 编译时候只需要指定两个参数&#x…

【深度学习】Cifar-10-探究不同的改进策略对分类准确率提高

cifar10数据集上进行图片分类,基于tensorflow框架, 旨在探究不同的改进策略对分类准确率的影响,如何一步步得提高准确率 一、问题描述 当我们在处理图像识别或者图像分类或者其他机器学习任务的时候,我们总是迷茫于做出哪些改进…

Acer 4750 安装黑苹果_黑苹果 MacOS 10.15 Catalina安装教程

一、准备工作一个8G以上的U盘(安装 10.15 Catalina 必须要16G及以上的U盘 );Mac OS镜像、TransMac(刻录工具)、DiskGenius(分区工具)、EasyUEFI(引导工区)、EFI驱动文件。安装工具获取方式:关注公众号【远景论坛】,回复:黑苹果二、…

帧内16*16模式的宏块数据传输顺序

如果宏块以16*16帧内模式编码,那么块-1首先被传输,携带的信息是每个4*4亮度块的DC系数。然后,亮度残差块0-15被传输(此时,16*16帧内宏块的DC系数为零)。对于亮度分量Cb和Cr,16和17块携带DC系数的…

ceph中查看一个rbd的image的真实存储位置

1、新建一个image存储 rbd create hzb-mysql --size 2048 2、查看hzb-mysql的所有对象 一个rbd image实际上包含了多个对象(默认情况下是image_size/4M) [rootcc ~]# rbd info hzb-mysql rbd image hzb-mysql:size 2048 MB in 512 objectsorder 22 (4096…

python中的shutil模块

shutil模块 引入: import shutil copy() 功能:复制文件 格式:shutil.copy(来源文件,目标地址) 返回值:复制之后的路径copy2() 功能:复制文件,保留元数据 格式:shutil.copy2(来源文件,目标地址…

亚马逊低调收购Biba 或下月发布视频消息服务

北京时间11月24日消息,据外媒报道,收购Twitch和Elemental Technologies似乎只是亚马逊通过收购深耕视频服务市场战略的两个元素。去年,亚马逊还低调收购了创业公司Biba Systems,后者开发和运营面向企业用户的视频消息应用。消息人…

【tensorflow】static_rnn与dynamic_rnn的区别

static_rnn和dynamic_rnn的区别主要在于实现不同。 static_rnn会把RNN展平,用空间换时间。 gpu会吃不消(个人测试结果) dynamic_rnn则是使用for或者while循环。 调用static_rnn实际上是生成了rnn按时间序列展开之后的图。打开tensorboard你…

pcie1 4 速度_太阳系行星们谁转得最快?八大行星自转速度排行榜,地球排第五...

不知道大家有没有玩儿过陀螺呢?玩儿陀螺的技术如果很好的话,它可以在地上飞快地旋转并且能够旋转很长的时间。有趣的是,宇宙中的很多星球就像陀螺一样绕着一个中心轴旋转着。这就是星球的自转。在太阳系中有八颗大行星,它们都在自…

python中时间模块

时间日期相关的模块 calendar 日历模块time   时间模块datetime 日期时间模块timeit   时间检测模块 日历模块 calendar() 功能:获取指定年份的日历字符串 格式:calendar.calendar(年份,w2,l1,c6,m3) 返回值&…

硬盘接口详细解释

硬盘是电脑主要的存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成。碟片外覆盖有铁磁性材料。硬盘有固态硬盘(SSD 盘,新式硬盘)、机械硬盘(HDD 传统硬盘)、混合硬盘(HHD 一块基于传统机械…

【Keras】30 秒上手 Keras+实例对mnist手写数字进行识别准确率达99%以上

本文我们将学习使用Keras一步一步搭建一个卷积神经网络。具体来说,我们将使用卷积神经网络对手写数字(MNIST数据集)进行识别,并达到99%以上的正确率。 为什么选择Keras呢? 主要是因为简单方便。更多细节请看:https://keras.io/ …