视频编码相关概念学习

视频通信中的码率控制算法

 R-λ模型中的λ是率失真优化中的一个系数。这里的率失真优化,指的是编码过程中的一个优化步骤。要详细解释它,我们需要先了解率失真理论。它起源于香农的研究[2],大致可以概括为:在给定的信源分布以及可接受的失真度D下,求信息数据量R的理论最小值。显然,可接受的D越大,其对应的R也就越小。这个R-D的关系边界,我们称为率失真曲线,即下图中的红线[3]。旁边的绿线则是编码器实际工作区域的边界,它和理论值存在一定差距。

视频编码标准提供了大量的工具集,或者说编码模式,它们就相当于上图的绿点。在它们之中选择一个恰当的来使用是一件比较复杂的事情。注意到这个问题本质是一个数学最优化问题,所以可以利用拉格朗日乘数法的离散形式来解决它。简单地说,引入一个拉格朗日乘子λ,构建代价函数,再去求取代价函数的最小值即可:

通俗地理解,λ就相当于失真与码率的权值(rate (R), distortion(D)之间平衡找最优解)。给定了λ,也就给定了一个判定模式好坏的标准。如下图所示,求代价函数最小值,相当于求斜率为λ的直线与R-D曲线的切点。在编码过程中,不论是模式选择,还是运动矢量的比较,都会利用到这个方法。

                                                拉格朗日乘子R-D曲线斜率

R-λ模型的提出者首先根据实验数据提出R-D曲线可以近似拟合为一条双曲线,再根据λ是R-D曲线斜率这一点,求得了R-λ模型:

二、帧内帧间压缩(帧内相对于本帧,也就是一幅画面压缩。而帧间是与相邻帧之间有关联)

帧内压缩 类似于图片压缩,跟这一帧的前面(或后面)一帧(或几帧)无关,由当前帧中,已编码的部分来推测当前待编码的这一部分数据是什么。帧间压缩是,由这一帧的 (或后) 一帧(或几帧)来推测当前待压缩的这一部分数据是什么。

过多重复的宏块压缩会浪费时间  (所以,在空间上,数据就有相当大的冗余。而帧内编码,就是要去除这部分冗余数据。在帧内编码情况下,编码图像仅仅进过DCT(离散余弦变换)、量化器呗编码器就可生成编码比特流。DCT直接用于原始数据。)

一般来说,视频的第一帧是帧内预测帧(废话,它想参考其他帧的数据也没有的参考),场景切换时是帧内预测帧(比如视频里插了一段广告,这个广告跟视频里其他的内容都无关,用它来预测还不如我自己编自己省空间)

帧间  运动矢量

如果摄像头没有晃来晃去,那么,在连续的视频图像里面,前后两帧的差别真的很小,比一张图片中连续两个宏块的差别还要小,这时用帧间压缩的效果会比帧内压缩的效果好(为什么?)

Block Matching 就是块匹配,就是找找看前面已经编码的几帧里面,和我当前这个块最类似的一个块,这样我就不用编码当前块的内容了,只需要编码当前块和我找到的那个块的差(称为残差)就可以了。找最像的块的过程叫运动搜索(Motion Search),又叫运动估计(Motion Estimation)。用残差和原来的块就能推算出当前块是什么样儿的,这个过程叫运动补偿(Motion Compensation)。有全搜索,菱形搜索法,三步搜索算法,新三步搜索算法,梯度下降搜索算法,运动矢量场自适应搜索算法等各种算法,这也一直是研究和发论文的热点

转载视频拍摄时帧内压缩和帧间压缩的区别? - 知乎

参考py之基于分块运动补偿的视频压缩_小木木木木木mu的博客-CSDN博客

运动估计 ME: ME用来将获得相邻两帧图像中块或者像素的位移矢量

运动补偿 MC   MC通过获得的运动矢量,对前一帧进行warp,获得新的帧。它是减少帧序列冗余信息的有效方法。运动补偿是一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧的每个小块怎样移动到当前帧中的某个位置去,运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。包括全局运动补偿和分块运动补偿两类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值