MPEG 视频(下)| 学习笔记

简介: 快速学习 MPEG 视频(下),介绍了 MPEG 视频(下)系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【高校精品课-华中科技大学 -智能媒体计算MPEG 视频(下)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/811/detail/15693


MPEG 视频(下)


内容介绍:

一、I 图的压缩编码算法

二、P 图的压缩编码算法

三、运动矢量的求解

四、B 图的压缩编码算法

五、MPEG 电视图像的结构


一、I 图的压缩编码算法

I 图的压缩算法,I 图不依赖于任何图,因此它的压缩算法采用 JEPG 算法,流程一模一样。这是 RGB 的图像,可以转换为 Y cb、cr,那就是一个亮度两个色差信号,对这个再进行分块变成8*8的若干块,而每个块进行正向的 DCT 变换,DCT 变换后对系数进行量化,量化后对它进行 Zig-zig 编码,Zig-zig 编码是为了让零的数量尽可能多,而 DC 系数因为它比较大,相邻两个 DC 系数又很接近,所以我们用的是 DPCM,交流系数我们用的是 RLE 编码,这两个都编好以后后面的 RLE 编码还可以对它进行霍夫曼编码或者是算术编码,这整个流程就是 JEPG 的,它也是我们视频编码里面 I 图的编码方法。

图片6.png

 

二、P 图的压缩编码算法

预测图 P 图怎么编?

预测图像的编码也是以图像宏块(macroblock)为基本编码单元

一个宏块定义为IxJ像素的图像块,一般取16×16,也可以取8×8,取决于图像的内容,如果整个图像内容变化非常快,那实际上可以用的图像块小一点。

预测图像P使用两种类型的参数来表示

一种参数是当前要编码的图像宏块与参考图像的宏块之间的差值,有一个宏快来预测它,那它的差值又是什么?这就是预测编码的典型思想.

另一种参数是宏块的运动矢量,你参考的这个宏块在当前帧里面相比原来它运动了多大个位置,它的方向和大小其实它叫运动的矢量.

对预测图像的编码实际上就是寻找最佳匹配图像宏块,找到最佳宏块之后就找到了最佳运动矢量d(dx.dy)有了运动矢量后就找到了它的位置,然后再把这两个宏块、参考的宏块和编码的宏块进行求差,再对这个求差进行编码.

给一个示意图,比如在这个图像里面,我们当前要编码的图像是这个黑色的矩形框,而我们参考的图像是在这里面,我们实际上首先要在这个参考的图像里面,要找到与我们编码的这个矩形框里的这个块最匹配的块,这是第一步,如果你找的不是跟它最匹配的,它们两个的差会小吗?

很显然不会小,比如你本来编码的是鼻子,结果你用腿去和它求差,这很显然不对,所以正好搜索找到了下面这个参考图像的矩形这一块它是与上面编码的快是最匹配的,我们就把这两个快取出来求差,这个差值再对它进行亮度和色差分离,最后进行 DCT 变换量化 RLE,Huffman 编码等等,最后这两个块因为参考图像要想达到编码图像这个块,它是张运动图像的距离,就是图上箭头所描述的位置,这就叫运动矢量,其实就是通过运动补偿,知道这个差值,再知道它有哪个块移动过来的,我们不就把当前要编码的图像给求出来了,也就说当前参考图像它的值我们再把差值加上,就得到这一块像素的值,然后再知道运动矢量,它的位置也知道了,这就是 P 图编码算法。

图片7.png

这是泰坦尼克号里面,我们要编码当前这个块,那我们就在参考图像里面找到最佳匹配块,运动矢量就是这两个之间的距离,这就很形象了。

图片8.png

那如何找到最佳匹配块,实际上是 P 图算法的运动矢量的求解里面很重要的

 

三、运动矢量的求解

在求两个宏块差值之前,需要找出编码图像中的预测图像编码宏块MPI相对于参考图像中的参考宏块 MRJ 所移动的距离和方向

这就是运动(移动)量(motion vector)

要找最佳,怎么找最佳?

这是编码图像和预测图像,要在预测的整个图像里面去搜索找到跟编码图像最接近的那一块叫最佳匹配块,最简单的方式就是一个一个像素移,我们叫便利法,当然这种方法是比较慢的;我们还有其他方式,比如说两步搜索法、对数搜索法等等。

图片9.png

最佳匹配怎么去衡量呢?

最佳匹配

要使预测图像更精确,就要求找到与参考宏块MRJ最佳匹配的预测图像编码宏块MPI

所谓最佳匹配是指这两个宏块之间的差值最小

通常以绝对值AE(absolute difference)最小作为匹配判据

计算公式很简单,就是他们对应的像素值求差在进行累加起来,这是一种方式。

图片10.png

还有一种方式

有些学者提出了可以通过均方值最小来进行度量。

还可以使用平均绝对帧差最小来进行衡量。

具体的搜索算法大家可以下去查找相关的资料,在互联网上搜“最佳匹配块的搜索方法”会有很多。

图片11.png


四、B 图的压缩编码算法

B 图的压缩算法,就是通过,你看当前编码的图像,这是前面一帧 P 图或者 I 图,这是后面一个 P 图,那分别在前面相应的一帧和后面一帧找到与当前这一块的最佳匹配块,这两个最佳匹配块来预测当前的,两个 PP 块怎么去预测?我们可以让这两个 PP 块求一个均值,然后再去求差,它俩相加乘于0.5,也就是二分之一它俩的和,这样一看,我们对这个差值两个方向去求,它的差值双向预测,这个差值可能就会更小,这个更小的差值再对它进行DCT 变换量化 RLE,Huffman 编码,最后把它求解出来,我们再通过把运动矢量也计算出来,就可以把当前 B 帧的宏块给编码,到此为止 I 图、P 图、B 图就都做好了。

图片12.png

做好以后看电视里面怎么使用的?


五、MPEG 电视图像的结构

MPEG 电视结构里面我们允许选择 I 图频率和位置

I图像的频率是指每秒钟出现I图像的次数

位置是指时间方向上 I 帧所在的位置

一般情况下,I 图像的频率为2(1秒钟里面有2帧 I 图,通常为15帧一个)

MPEG 编码允许在一对I图像或者P图像之间选择B图像的数目

I图像、P图像和B图像数目的选择依据主要是根据节目的内容

(无论是 I 图的频率还是 B 图的数量,其实最终设置要想它综合效果好的话还是取决于内容)

快速运动的图像:I图像的频率可以高一些,B 图像的数目可以少一点(因为它太快了之后预测就没有意义了,因为前一帧到后一帧已经离开了,你找不到最佳匹配块了,找不到最佳匹配块用别的块去预测当前它们没有关系,所以这个差值就不会小)

慢速运动的图像:I图像的频率可以低一点,B 图像的数目可以多一点,

应用举例

图片13.png

这是一个编码的参数,I 图是2,那么帧内图像 I 的距离是15,预测图 P 的距离是3,就是中间两帧,P 帧和 I 帧,这两个帧之间有两个 B 图,这是一个典型的结构,这就是 MPEG 视频编码的思想。

相关文章
|
设计模式 缓存
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
835 1
|
消息中间件 存储 缓存
Python之RabbitMQ操作
Python之RabbitMQ操作
|
资源调度 JavaScript 前端开发
vue-cli从0到1快速入门!
【8月更文挑战第16天】 vue-cli从0到1快速入门!
427 4
 vue-cli从0到1快速入门!
|
12月前
|
人工智能 搜索推荐 API
自学记录鸿蒙API 13:实现人脸比对Core Vision Face Comparator
在完成文本识别和人脸检测项目后,我深入学习了HarmonyOS Next API 13中的Core Vision Face Comparator API,开发了一个简单的人脸比对工具。该API能进行高精度人脸比对并给出相似度评分,应用场景广泛,如照片分类、身份认证、个性化服务等。通过初始化服务、加载图片、实现比对功能和构建用户界面,最终实现了可靠的人脸比对功能。未来计划将此技术应用于更复杂的场景,如照片管理和个性化服务,并探索与其他AI能力的结合。如果你也对人脸比对感兴趣,不妨从简单的比对功能开始,逐步实现自己的创意!
360 61
|
Web App开发 缓存 运维
CentOS命令大全:从入门到精通
CentOS命令大全:从入门到精通
1861 1
|
缓存 前端开发 安全
前端开发者必备:HTTP状态码含义与用途解析,常见错误码产生原因及解决策略
前端开发者必备:HTTP状态码含义与用途解析,常见错误码产生原因及解决策略
1995 0
|
XML 安全 程序员
了解编程语言中的类型安全
【7月更文挑战第15天】本文介绍类型安全与效率在语言设计中至关重要。安全性需求各异,从HIPAA到PCI合规,选择最佳技术栈要考虑多方面,包括微服务架构中的语言多样性,以确保每个服务都能高效且安全地执行其特定任务。
392 14
了解编程语言中的类型安全
|
安全 Linux 网络安全
Linux 多种方式实现文件共享(一)VSFTP4
【8月更文挑战第4天】Linux系统中VSFTP(Very Secure FTP)服务的配置方法,涵盖匿名访问、本地用户登录及虚拟用户管理等场景。VSFTP作为增强版FTP服务器,具备较高安全性,如普通用户权限运行、命令整合、chroot限制等特性。文中详细说明了配置步骤,包括安装VSFTP、修改主配置文件(如启用被动模式、设置端口范围)、创建用户及家目录、设置虚拟用户认证数据库等。此外,还介绍了如何实现FTP服务的加密传输,通过生成SSL证书并配置VSFTP以支持安全连接。这些配置适用于不同需求的文件共享服务。
218 4
|
运维 Linux Docker
Docker Hub 镜像拉取超时:1Panel面板中应用安装失败的临时解决方案
`1Panel` 是一款Linux服务器管理面板,提供图形化界面便于运维。若在安装应用时遇到问题,可以尝试使用Docker加速地址 <https://docker.1panel.live/>,但请注意该地址可能不稳定且仅限境内使用。首届 `1Panel` 运维节将在2024年7月24日举行,更多信息可访问官方链接。
7225 2
Docker Hub 镜像拉取超时:1Panel面板中应用安装失败的临时解决方案
|
并行计算 Ubuntu Docker
Docker环境Ubuntu20.04安装Python3.10版本
Docker环境Ubuntu20.04安装Python3.10版本
5447 0