视频编解码——编码流程介绍

news/2024/11/16 11:43:49/

为什么需要编码?

原始视频数据很庞大,比如一个150分钟,30FPS,分辨率为720✖480的彩色电影需要占用280GB。无论是物理存储还是网络传输,这都是难以负担的。所以需要编码进行压缩。

编码方式

一般有两种编码方式:熵编码(entropy coding,以无损的方式将视频压缩到香农极限)和有损编码(lossy coding,删除冗余数据和不重要的数据)。熵编码的压缩率是有限的,但是得益于人类的视觉系统可以容忍细节丢失,有损压缩通常很有效。

典型的编解码码流程

下图展示了编解码的整体流程。
摄像头采集到数据,进行编码,传输或者保存编码后的数据,终端拿到数据后进行解码并显示。

在这里插入图片描述
下图展示了一个典型的编码流程:

在这里插入图片描述

一个典型的视频编码一般由三个模块组成:

预测性编码(Predictive coding)
转换编码(Transform coding)
熵编码(Entropy coding)
通常编码一个视频会产生若干完整的帧数据和增量帧数据。
完整帧只需要通过转换编码和熵编码进行压缩。本文主要考虑增量帧的编解码。

预测性编码

预测性编码通过利用时间(帧间预测)和空间冗余(帧内预测)来减少视频的冗余度。
通常预测性编码有两步:运动估计(Motion estimation, ME)和运动补偿(Motion compensation, MC)

运动估计为当前帧的某个区域(A)在参考帧中寻找一个合适的匹配区域(B)。(参考帧可以是之前的帧,也可以是后面的帧)

在这里插入图片描述

运动补偿找到区域A和区域B的不同

在这里插入图片描述

通过ME和MC预测性编码会产生一些运动矢量和残差。运动矢量就是某些区域针对参考帧的运动轨迹,而残差就是这些区域运动后产生的预测帧和当前帧之间的不同。举个不太恰当的例子:(不恰当的地方在于真实的编码中运动矢量涉及的区域不会这么大,比如H.264编码的最大区域为16✖16)
下象棋时,开局时为参考帧,炮二平五后为当前帧,如图:

在这里插入图片描述

这时运动矢量就是炮二的区域移动到炮五的区域,移动后产生一个预测帧。预测帧和当前帧并不完全一样,他们的区别就是残差。
此时的残差则是炮二位置的棋格,以及炮五边框的颜色变化。
预测性编码的产出就是这些运动矢量和残差,通过这个例子我们能看到这些产出数据是远远小于一个完整帧的数据量的。

转换编码(有损压缩)

转换编码模块的产出是一组系数,每个系数是标准基础图案的权重。 通过量化器之后,可获得降低精度但节省位的量化系数。
反过来标准基础图案使用这些量化系数可以得到量化前的图案。
例如,1974年开发的离散余弦变换(DCT)是一种广泛使用的变换编码技术。 H.264编码就是将残差通过转换编码转换为DCT系数。
详细流程就不赘(知)述(道)了。。
基本原理利用了傅里叶变换思想(使用一些正余弦公式表示图像)
下面的公式中,y为编码前的图案,x为标准基础图案数据,f(x)是一个公式里面会涉及一组系数k,这一组k就是转换编码的输出。
y≈f(x)=k1​f1​(x)+k2​f2​(x)+...+kn​fn​(x)

一个16✖16的图案,大概需要80个系数就足够了,这时的压缩率为31.25%

熵编码(无损压缩)

将前面得到的所有数据进行压缩,包括运动矢量、残差的量化系数、还有预测性编码的一些参数。
常见的熵编码方法包括可变长度编码(VLC),算术编码和霍夫曼编码。
以大家最熟悉的霍夫曼编码为例,它根据数据出现的频率对数据进行编码,频率高的编码后的长度短,频率低的编码后的长度长。

解码

编码流程的逆序就是解码流程。

解码器拿到编码后的数据后:

根据熵编码的类型,将压缩的数据展开,得到转换编码数据(运动矢量、残差的量化系数、还有预测性编码的一些参数)
根据残差的量化系数,得到残差数据
在参考帧的基础上,实施这些运动矢量,产生预测帧
在预测帧的基础上,叠加残差数据,得到当前帧


http://www.ppmy.cn/news/598684.html

相关文章

在Web网页播放网络摄像机(海康、大华等)RTSP视频流方案汇总

前言 由于项目需求,要在web上查看摄像机的实时视频(不能用付费方案),所以写下此文章记录下学习过程,也是踩了不少坑Web端采用vue框架开发及测试所有方案都离不开ffmpeg,感谢ffmpeg开发者仅在Windows10下测…

H.264视频编解码FPGA解决方案

H.264视频编解码是一个数字视频压缩标准,由VCEG(ITU-T Video Coding Experts Group)和MPEG(ISO/IEC Moving Picture Experts Group)联合组成的JVT(Joint Video Team)于2003年3月正式发布。H.264标准的主要目标就是在同等保真条件下,提高编码效率。这是一…

视频编码全流程

视频编解码用到的一些算法: 正反傅里叶变换、fft算法 dct变换、快速dct变换 如何自己实现一个视频编解码器: (1)取一帧作为I帧,类似jpeg压缩编码,也就是 rgb转yuv,然后dct去除高频信息。因为这种压缩会造成边界bloc…

视频编解码的新突破

LiveVideoStackCon 2022 音视频技术大会 北京站将于12月9日至10日在北京丽亭华苑酒店召开,本次大会将延续【音视频无限可能】的主题,邀请业内众多企业及专家学者,将他们在过去一年乃至更长时间里对音视频在更多领域和场景下应用的探索、在实践…

全志 H3 视频硬件编解码库

https://www.go2aaron.com/blog/index.php/archives/65/

视频编解码---H266模型

VTM和BMS的基本概念VTM:Video Test ModelBMS:BenchMark Set VTM代码结构 VTM和BMS的基本概念 VTM:Video Test Model 在HEVC的基础上加了三叉树、四叉树和二叉树的划分 BMS:BenchMark Set 在VTM的基础上加了9个新的工具&#x…

视频编解码——主流视频编码标准的发展(H.261/H.263/MPEG-1/MPEG-2/MPEG-4))

目录 制定标准的组织两种编码方式基于波形的编码基于内容的编码 H.261系统图信源编码器复合编码器 H.263MPEG-1码流结构 MPEG-2码流结构 MPEG-4 制定标准的组织 这些标准主要由两个组织制定。 国际电信联盟——ITU-T国际标准化组织——ISO 目前世界上影响力最强的视频编码标准…

视频编解码入门知识

转载:https://blog.csdn.net/qq_34447388/article/details/78997339 第1章介绍 1. 为什么要进行视频压缩? 未经压缩的数字视频的数据量巨大 存储困难 一张DVD只能存储几秒钟的未压缩数字视频。 传输困难 1兆的带宽传输一秒的数字电视视频需要大约4分钟…