视频编解码基本流程

视频编解码基本流程视频编解码基本框架

大家好,又见面了,我是你们的朋友全栈君。

本文简要概述视频编解码中的基本流程。具体表现为下图的过程:

视频编解码基本流程

 编码流程:

(1)预测:视频由按照时间序列的图像构成。每一幅图像相邻像素之间存在较强的空间相关性,而相邻图像(不同时间)之间存在时间上的相关性。充分利用这些信息,可以有效的帮助我们去除这些冗余信息。根据空间和时间相关性,存在帧内预测和帧间预测两种不同的方式。两者都需要根据已编码的像素去预测未编码像素。通常选取第一帧作为参考帧,而不进行处理。通过帧内/帧间预测的方式,我们可以将预测值和真实值的残差进行编码操作。下面逐一介绍帧内预测和帧间预测的方法:

(a) 帧内预测:该预测值来自于周围已编码结果的线性组合。由于图像中存在特定的纹理,因此该预测值的计算存在几种不同的模式,例如:垂直模式,水平模式,DC模式,Plane 模式等。在实际中我们需要扫描所有的模式从而通过拉格朗日率失真优化进行选择。具体为计算

J=D+\lambda\cdot R

其中变量 D 表示失真的大小,而变量 R 表示其他的影响因素。我们需要综合考虑代价函数,而不仅仅只是残差的大小。

(b)帧间预测:主要采用基于块的运动补偿技术。该技术通过相邻图像高度的时间相关性,可以为当前图像中的每一个像素寻找之前已经编码图像的一个最佳匹配块(运动估计),用参考像素块和当前像素块,可以定义一个运动矢量。类似于帧内预测,这里我们也只需要传输运动矢量的残差。在运动补偿过程中,我们也需要对块的划分进行遍历,利用最小均方误差或者最小平均绝对误差等对运动矢量残差进行估计,计算拉格朗日率失真优化,从而选择最优的运动矢量,进而将运动矢量残差传递到后续的编码过程中。

(2)变换编码:视频图像中存在较多变化比较缓慢的区域,因此我们可以通过适当的变换将图像数据集中在某一个区域,然后针对变换后的区域进行量化等编码操作。常用的变换方法包括:离散余弦/正弦变换。对于一个周期性函数,我们可以将其按照三角函数进行傅立叶展开。对于某些特殊情况,如函数具有明确的奇偶性,我们可以只使用正弦函数或余弦函数。对于周期性函数,结果可表示为一系列特定频谱的信号,当函数不具有周期性时,傅立叶展开表现为一个连续频谱的叠加。当输入为离散信号时,我们需采用离散的正弦/余弦变换。因此傅立叶变换本质上是将信号分解为特定波形的叠加,从而简化分析。

(3)量化:经过变换编码之后需要进行量化处理。基本思想为将连续或者大量离散的数值映射到有限几个离散数值的过程,即多对一的映射关系。量化过程将丢失信号,是有损压缩。这种映射关系不唯一,存在多种选择。具体采用哪种方案可根据均方误差,信噪比,峰值信噪比进行估计。

(4)滤波:在基于块的混合编码框架下,视频压缩过程中会存在方块效应,振玲效应,颜色偏差等失真行为。为了降低编码过程中这些失真对视频质量的影响,我们需要滤波技术,包括去方块滤波以及像素自适应补偿技术。

(a)去方块滤波:基于块的编码技术中,各个块的变换量化过程相对独立,从而导致量化过程中产生的误差以及分布也具有独立性质,因此导致编码块的边界不连续,产生方块效应。环路去方块滤波技术可以有效地降低、去除这种不连续行为。

(b)自适应补偿技术:

(5)熵编码:熵编码是一种无损编码方式。将视频序列信息转换为用来传输或存储的压缩码流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158688.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • devtools怎么用_webpack devtool

    devtools怎么用_webpack devtooldevtool配置一、devtool配置1.sourcemap源码地图2.webpack中的sourcemap3.对于开发环境一、devtool配置1.sourcemap源码地图本小节的知识与webpack无关前端发展到现阶段,很多时候都不会直接运行源代码,可能需要对源代码进行合并、压缩、转换等操作,真正运行的是转换后的代码与此同时就给调试带来了困难,因为当运行发生错误的时候,我们更加希望能看到源代码中的错误,而不是转换后代码的错误为了解决这一问题,chrome浏览器率先支持

    2022年10月6日
    0
  • VMwware15激活码【中文破解版】2022.02.10

    (VMwware15激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~4KDD…

    2022年4月1日
    53
  • SSRF 漏洞记录

    SSRF 漏洞记录0x00:漏洞原理SSRF(Server-SideRequestForgery)也属于应用层上的一个漏洞类型,用一个最简单的例子来理解这个漏洞:比如一个添加图文的功能,填入标题内容和封面图然后提交在网站前台显示,对于这个功能的图片它除了可以让你上传以外,还支持填入远程图片地址,如果你填入了远程的图片地址,则该网站会加载远程图过来进行显示,而如果程序写法不严谨或者过滤不严格,则加载图片地址的…

    2022年6月25日
    22
  • dota2无限寻找服务器中,Win10玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案…

    dota2无限寻找服务器中,Win10玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案…《DOTA2》游戏,是一款RPG有些,在国内的玩家有很多,最近有位小伙伴打算在Win10电脑上与朋友一起玩《DOTA2》,却一直提示“已连接至DOTA2游戏协调服务器,正在登陆中”,无法顺利进入该游戏,很是郁闷,所以来问小编该如何解决?今天,小编就带大家一起去了解一下Win10电脑玩《DOTA2》提示“已连接至DOTA2游戏协调服务器,正在登陆中”的解决方案。解决方案一:1、开始按钮在搜索中输入C…

    2022年5月13日
    128
  • mysql 笔记_数据库原理及应用手写笔记

    mysql 笔记_数据库原理及应用手写笔记mysql 笔记

    2022年4月20日
    69
  • redis——持久化方式RDB与AOF分析

    redis——持久化方式RDB与AOF分析

    2021年11月4日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号