是的,所谓编码算法,就是寻找规律,构建模型 。谁能找到更精准的规律,建立更高效的模型,谁就是厉害的算法 。
通常来说,视频里面的冗余信息包括:
文章插图
文章插图
视频编码技术优先消除的目标,就是空间冗余和时间冗余 。
接下来,就和大家介绍一下,究竟是采用什么样的办法,才能干掉它们 。以下内容稍微有点高能,不过我相信大家耐心一些还是可以看懂的 。
5.2 视频编码技术的实现方法
视频是由不同的帧画面连续播放形成的 。
这些帧,主要分为三类,分别是:
1)I帧;I帧:是自带全部信息的独立帧,是最完整的画面(占用的空间最大),无需参考其它图像便可独立进行解码 。视频序列中的第一个帧,始终都是I帧 。
2)B帧;
3)P帧 。
P帧:“帧间预测编码帧”,需要参考前面的I帧和/或P帧的不同部分,才能进行编码 。P帧对前面的P和I参考帧有依赖性 。但是,P帧压缩率比较高,占用的空间较小 。
文章插图
▲ P帧
B帧:“双向预测编码帧”,以前帧后帧作为参考帧 。不仅参考前面,还参考后面的帧,所以,它的压缩率最高,可以达到200:1 。不过,因为依赖后面的帧,所以不适合实时传输(例如视频会议) 。
文章插图
▲ B帧
通过对帧的分类处理,可以大幅压缩视频的大小 。毕竟,要处理的对象,大幅减少了(从整个图像,变成图像中的一个区域) 。
文章插图
如果从视频码流中抓一个包,也可以看到I帧的信息,如下:
文章插图
我们来通过一个例子看一下 。
这有两个帧:
文章插图
好像是一样的?
不对,我做个GIF动图,就能看出来,是不一样的:
文章插图
人在动,背景是没有在动的 。
第一帧是I帧,第二帧是P帧 。两个帧之间的差值,就是如下:
文章插图
也就是说,图中的部分像素,进行了移动 。移动轨迹如下:
文章插图
这个,就是运动估计和补偿 。
文章插图
当然了,如果总是按照像素来算,数据量会比较大,所以,一般都是把图像切割为不同的“块(Block)”或“宏块(macroBlock)”,对它们进行计算 。一个宏块一般为16像素×16像素 。
文章插图
▲ 将图片切割为宏块
好了,我来梳理一下 。
对I帧的处理,是采用帧内编码方式,只利用本帧图像内的空间相关性 。对P帧的处理,采用帧间编码(前向运动估计),同时利用空间和时间上的相关性 。简单来说,采用运动补偿(motion compensation)算法来去掉冗余信息 。
文章插图
需要特别注意,I帧(帧内编码),虽然只有空间相关性,但整个编码过程也不简单 。
文章插图
如上图所示,整个帧内编码,还要经过DCT(离散余弦变换)、量化、编码等多个过程 。限于篇幅,加之较为复杂,今天就放弃解释了 。
那么,视频经过编码解码之后,如何衡量和评价编解码的效果呢?
一般来说,分为客观评价和主观评价 。客观评价,就是拿数字来说话 。例如计算“信噪比/峰值信噪比” 。
文章插图
信噪比的计算,我就不介绍了,丢个公式,有空可以自己慢慢研究...
推荐阅读
- 引体向上基础训练 引体向上15个训练方法
- 正宗促茗缘阁成大佛龙井批发零售业翘楚
- 网络技术中的BGP协议基础知识,一分钟了解下
- 吃不完的菠萝蜜怎么做 菠萝蜜吃不完可以做成什么零食吗
- 电源开关上的L1和L2是不是火线和零线?
- 中国茶叶专卖店 网上商城及零售店模式浅析
- 中国历史上地震死亡人数最多的 明朝死亡人数最多的地震
- 范文芳|杨钰莹遇到对手了!50岁范文芳还有初恋脸,穿紧身裙全身零赘肉
- 浅谈中国茶叶零售市场整体发展情况
- Python爬虫基础:验证码的爬取和识别详解