视频开发学习----入门左脚

我尽量不打错别字,用词准确,不造成阅读障碍

       上篇讲了音视频生成流程、一些基本概念和音视频编码历史,这里讲解一些音视频名词以及解释,作为入门的必备知识点。这篇文章相对而言要枯燥一些,请有耐心。

先"温故"一下:视频图像采集播放流程

了解颜色信号的基本概念

       上图中有一个重要的"预处理"——YUV转换,就是把RGB颜色值转为YUV值;我们也说了,相对与RGB信号,YUV信号更利于压缩,此外,随着后来的发展,YUV信号实际上做了取舍,保留了一些更重要的东西,舍弃了一些不重要的东西。这是因为人眼视锥细胞的特性,导致人眼对于亮度的敏感程度要高于对色度的敏感程度,所以工程师们认为,在视频存储中,没有必要存储全部颜色信号,应该把更多的带宽留给黑-白信号(也就是亮度),将稍少的带宽留给彩色信号(即色度)。所以,综合以上,现在的YUV诞生了,其中Y表示亮度,U和V是2个色差信号。那么具体采样(收集数据)时应该怎样分配呢?主流的采样方式有三种:

  • YUV 4:4:4
  • YUV 4:2:2
  • YUV 4:2:0

       有的文章说是“通常采用的是4:2:0的方式”,能获得1/2的压缩率,雷霄骅大神的博客说“通常采用4:2:2的方式”。可能不同时代主流不同吧,应该雷大神的更近一些。

大家有时候还会看到Y’CbCr,也叫YUV,它是YUV的压缩版本,其主要应用于数字图像领域(如:MPEG、DVD、摄像机中),而YUV主要应用于模拟信号领域

视频编码的原理

       实际上,你应该知道,我们会把一帧图像分为多个小块,这个小块叫宏块。比如:一帧图片为1280*720 像素,先以网格状的形式分成80*45个16*16的小图像块,然后再对这些宏块进行操作,后面很多压缩知识都是对宏块的操作。

       按照上面图片的流程,接下来要学习视频的压缩编码了,编码就是压缩嘛。压缩过程中,我们总想将不重要的、重复的数据剔除,只保留重要的数据和重要数据间的关系矢量等。那些不重要的、重复的数据我们称之为冗余,这些冗余的来源又有很多种,按照来源的不同,我们有了下面2个基本条件:

  • 数据冗余:包含时间冗余、空间冗余、结构冗余、信息熵冗余等,即数据像素之间存在很强的相关性,消除这些冗余不会有损失,属于无损压缩。
  • 视觉冗余:根据人眼的构造及特点,压缩时可以丢弃部分相对不重要的数据(比如色度数据),保留更加重要的数据(比如亮度数据),允许一定的误差,只要人眼察觉不出来即可,这种属于有损压缩。

基于以上2个必要条件,我们才有了压缩的可能。

       然后就是具体的压缩方法了,在数字视频压缩领域,为了消除帧内冗余----即一帧图片的像素间冗余,我们一般使用"变换编码",为了消除帧间冗余——即不同帧图片之间的数据冗余,我们一般使用"运动估计"和"运动补偿",为了进一步提高压缩率,我们使用"熵编码"。了解了吧,就是下面这个:

  • 变换编码 :消除帧内冗余,其实是对宏块的操作
  • 运动估计和运动补偿:消除帧间冗余,也是对宏块的操作
  • 熵编码:进一步提高压缩率

       后来我查阅资料才发现,其实还有一步"预测","运动估计"和"运动补偿"就在其中,在"变换编码"之前。“预测"的作用是—去除时间冗余和空间冗余,所以应该分为"帧间预测"和"帧内预测”。但是我们已经知道,"变换编码"就有消除空间冗余的作用,那么两者有什么区别?目前我还不知道,随着学习的深入,应该会知道。(我觉的应该是对预测后的运动矢量进一步简化)最后附上流程图一张:

在这里插入图片描述

       我们在划分完宏块以后,在前一个图像或者后一个图像的某个搜索窗口范围内(这个我也不懂)为每一个宏块寻找与之最为相似的图像块,这个搜索过程叫"运动估计"。然后就可以获得相似图像块和原始图像块之间位置关系的运动矢量,保存这个运动矢量,这样在编码的过程中就可以根据这个运动矢量,将已知图像块与相似图像块相减,得到差值图像块,这个差值图像块像素值很小,所以可以获得更高的压缩图像比。这个相减的过程叫"运动补偿"。

       虽然视频有很多帧,但我们不会将每一帧的数据都完全保留下来,而视频的每一帧都有不同的名字,分别为

I帧、P帧、B帧,解释如下:

  • I帧 :是自带全部信息的独立帧,是最完整的画面(占用的空间最大),无需参考其它图像便可独立进行解码。视频序列中的第一个帧,始终都是I帧。

  • P帧:“帧间预测编码帧”,需要参考前面的I帧和/或P帧的不同部分,才能进行编码。P帧对前面的P和I参考帧有依赖性。但是,P帧压缩率比较高,占用的空间较小。

  • B帧:“双向预测编码帧”,以前帧后帧作为参考帧。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可以达到200:1。不过,因为依赖后面的帧,所以不适合实时传输(例如视频会议)。在这里插入图片描述

    ​ 典型的IBBP帧结构

上图的预测方向已经写的很清楚了。

从上图可知:B帧的压缩比最高。通过对帧的分类处理,可以大幅度压缩视频大小。
在这里插入图片描述

我个人怀疑,所谓的I帧、P帧、B帧就是根据"预测"方式的不同话划分的,但我没找到证据,也没怎么找。

特殊说明一下,对I帧的处理虽然只有帧内编码,但是其工作量仍旧不小,整个编码过程经过DCT变换、量化、编码等多个过程。而对P帧和B帧采用帧间编码的方式,也就是运动补偿消除帧间冗余。

视频编码质量评价

       如何评价视频编码的优劣呢,2种方式:1.峰值信噪比。2.主观评价

峰值信噪比是一个很复杂的公式,我就不贴了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值