前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【数字视频技术介绍】| 编码中的时间冗余和空间冗余

【数字视频技术介绍】| 编码中的时间冗余和空间冗余

作者头像
音视频开发进阶
发布2020-05-29 11:07:05
2.1K0
发布2020-05-29 11:07:05
举报
文章被收录于专栏:进击的多媒体开发

时间冗余(帧间预测)

让我们探究去除时间上的重复,去除这一类冗余的技术就是帧间预测

我们将尝试花费较少的数据量去编码在时间上连续的 0 号帧和 1 号帧。

原始帧

我们可以做个减法,我们简单地用 0 号帧减去 1 号帧,得到残差,这样我们就只需要对残差进行编码

残差帧

但我们有一个更好的方法来节省数据量。首先,我们将0 号帧 视为一个个分块的集合,然后我们将尝试将 帧 1帧 0 上的块相匹配。我们可以将这看作是运动预测

维基百科—块运动补偿 “运动补偿是一种描述相邻帧(相邻在这里表示在编码关系上相邻,在播放顺序上两帧未必相邻)差别的方法,具体来说是描述前面一帧(相邻在这里表示在编码关系上的前面,在播放顺序上未必在当前帧前面)的每个小块怎样移动到当前帧中的某个位置去。”

原始帧运动预测

我们预计那个球会从 x=0, y=25 移动到 x=6, y=26xy 的值就是运动向量进一步节省数据量的方法是,只编码这两者运动向量的差。所以,最终运动向量就是 x=6 (6-0), y=1 (26-25)

实际情况下,这个球会被切成 n 个分区,但处理过程是相同的。

帧上的物体以三维方式移动,当球移动到背景时会变小。当我们尝试寻找匹配的块,找不到完美匹配的块是正常的。这是一张运动预测与实际值相叠加的图片。

运动预测

但我们能看到当我们使用运动预测时,编码的数据量少于使用简单的残差帧技术。

运动预测 vs 残差

你可以使用 jupyter 玩转这些概念。

自己动手:查看运动向量 我们可以使用 ffmpeg 生成包含帧间预测(运动向量)的视频。

ffmpeg 帧间预测(运动向量)或者我们也可使用 Intel® Video Pro Analyzer(需要付费,但也有只能查看前 10 帧的免费试用版)。

Intel® Video Pro Analyzer 使用帧间预测

空间冗余(帧内预测)

如果我们分析一个视频里的每一帧,我们会看到有许多区域是相互关联的

空间内重复

让我们举一个例子。这个场景大部分由蓝色和白色组成。

smw 背景

这是一个 I 帧,我们不能使用前面的帧来预测,但我们仍然可以压缩它。我们将编码我们选择的那块红色区域。如果我们看看它的周围,我们可以估计它周围颜色的变化

smw 背景块

我们预测:帧中的颜色在垂直方向上保持一致,这意味着未知像素的颜色与临近的像素相同

smw 背景预测

我们的预测会出错,所以我们需要先利用这项技术(帧内预测),然后减去实际值,算出残差,得出的矩阵比原始数据更容易压缩。

smw 残差

自己动手:查看帧内预测 你可以使用 ffmpeg 生成包含宏块及预测的视频。请查看 ffmpeg 文档以了解每个块颜色的含义。

ffmpeg 帧内预测(宏块)或者我们也可使用 Intel® Video Pro Analyzer(需要付费,但也有只能查看前 10 帧的免费试用版)。

Intel® Video Pro Analyzer 帧内预测

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 音视频开发进阶 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 时间冗余(帧间预测)
  • 空间冗余(帧内预测)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档