帧内压缩与帧间压缩

帧内压缩

帧内(Intraframe)压缩也称为空间压缩(Spatial compression)。当压缩一帧图像时,仅考虑本帧的数据而不考虑相邻帧之间的冗余信息,这实际上与静态图像压缩类似。帧内一般采用有损压缩算法,达不到很高的压缩比。

在视频中,帧内压缩就是压缩 GOP 图像组中的 I 帧。

帧内压缩是空域, 在空间XY轴进行压缩,进行压缩参考本帧数据,压缩率较小。

预测模式

一共有 9 种预测模式,如下图,第一种是按照纵向预测,第二种是横向预测,第三种是求平均值,

帧间压缩

帧间压缩(Interframe compression)也称为时间压缩(Temporal_compression),是基于许多视频或动画的连续前后两帧具有很大的相关性(即连续的视频其相邻帧之间具有冗余信息)的特点来实现的;通过比较时间轴上不同帧之间的数据实施压缩,进一步提高压缩比。

在视频中,帧内压缩就是压缩 GOP 图像组中的 B 帧与 P 帧。

帧间压缩的主要过程先进行宏块查找,寻找出残差值,进行运动矢量计算,最后通过残差值和运动矢量推算出下一帧的数据。

宏块查找:查找帧之间有差别的部分,算法有:三步搜索,二维对数搜索,四步搜索,钻石搜索等;

残差值是指帧之间有差别的部分;

运动矢量:当前编码块与其参考图像中的最佳匹配块之间的相对位移,也就是变化部分下一帧与上一帧的位移;

运动估计:针对当前块从上一帧中搜索最相似的块;

运动补偿:通过残差值和运动矢量推断出下一帧的数据;

概念不容易懂,举个离职:

比如两张相邻的帧之间,一个人在说话,此时只有嘴巴是动的,就可以不用考虑其他部分,只找到帧之间有差别的部分,这就叫宏块查找,帧之间有差别的部分就叫残差值,记录下来嘴巴相对于上一帧变动的坐标,这就是运动矢量,嘴巴动的过程在宏块中的变化就叫运动估计。

通过上面的计算流程之后,不需要存储下一帧完整图片,只需要记录残差值和运动矢量,就可以推断出下一帧的数据,这就是运动补偿。

帧内压缩与帧间压缩都属于有损压缩。

视频花屏的产生原因:一组 GOP 中有帧丢失,主要是 P 帧和 B 帧的丢失,这样残差值和运动矢量也会丢失,造成了当前帧解码失败,就会出现花屏。

视频卡顿的原因:当有帧丢失,就丢弃 GOP 内所有帧,直到下一个 I 帧出现,重新刷新图像。I 帧是 GOP 的第一帧,时间周期可能长,等待下一个 I 帧来之前的这段时间,就会出现卡顿。

这两者是不能同时兼顾的,比如微信视频通话没有花屏,但是会出现卡顿。一般视频录制的时候一般会有花屏,但不会出现卡顿。

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值