视频编解码基本流程

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

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

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

视频编解码基本流程

 编码流程:

(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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mount CIFS return ERR -12 and report Cannot allocate memory[通俗易懂]

    mount CIFS return ERR -12 and report Cannot allocate memory

    2022年1月28日
  • 图解最短路径之弗洛伊德算法(Java实现)「建议收藏」

    图解最短路径之弗洛伊德算法(Java实现)「建议收藏」概述Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法是一种在具有正或负边缘权重(但没有负环)的加权图中找到最短路径的算法,即支持负权值但不支持负权环。弗洛伊德算法采用的是动态规划思想,其状态转移方程如下:其中matrix[i,j]表示i到j的最短距离,k是穷举i到j之间可能经过的中间点,当中间点为k时,……

    2022年11月3日
  • 电商项目中的SPU和SKU概念

    电商项目中的SPU和SKU概念SPUSPU:StandardProductUnit,标准产品单位。概念:SPU是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的货品就可以称为一个SPUSPU是用来定位的例如:iphone8就是一个SPU,与商家、颜色、款式、套餐都无关SKUSKU:StockKeepingUnit,库存量单…

    2022年10月20日
  • leetcode刷题:两数之和

    leetcode刷题:两数之和

    2021年2月26日
  • 对L1正则化和L2正则化的理解[通俗易懂]

    一、奥卡姆剃刀(Occam’srazor)原理:     在所有可能选择的模型中,我们应选择能够很好的解释数据,并且十分简单的模型。从贝叶斯的角度来看,正则项对应于模型的先验概率。可以假设复杂模型有较小的先验概率,简单模型有较大的先验概率。  二、正则化项     2.1、什么是正则化?   正则化是结构风险最小化策略的实现,在经验风险上加一个正则项或罚项,正则项一共有两种L1…

    2022年4月11日
  • 华为ensp安装包_华为服务器安装系统教程

    华为ensp安装包_华为服务器安装系统教程什么是eNSPeNSP是由华为公司研发并且免费供大家使用的图形化网络操作平台,主要是对各大企业的网络。路由器,以及交换机路由器进行模拟,呈现一个真实的场景,让用户能模拟练习网络技术!软件特点还原实景1,可模拟华为的AR路由器,部分交换机以及客户端实现企业网和运营商的图面呈现2,可以模拟客户机终端,云,中继交换机等3,仿真设备功能,快速的学习华为命令。快速了解华为命令4,可以通过真实网卡实现与真实设备的对接5,模拟接口抓包,可以很直观的看到协议的交互过程。具体图文安装步骤详解..

    2022年10月14日

发表回复

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

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