视频编解码——消除视频冗余的方法及原理

为什么要消除冗余

首先来计算一下一个一小时的视频大小。
假设分辨率为720p,帧率为30fps,则内存为1280x720x24x30x3600,共占用278GB。

仅仅使用无损数据压缩算法——如 DEFLATE(被PKZIP, Gzip, 和 PNG 使用)——也无法充分减少视频所需的带宽,我们需要找到其它压缩视频的方法。

为此,我们可以

  • 利用视觉特性:和区分颜色相比,我们区分亮度要更加敏锐。
  • 时间上的重复:一段视频包含很多只有一点小小改变的图像。
  • 图像内的重复:每一帧也包含很多颜色相同或相似的区域。

颜色、亮度和眼睛

我们的眼睛对亮度比对颜色更敏感,你可以看看下面的图片自己测试。

在这里插入图片描述
如果你看不出左图的方块 A 和方块 B 的颜色是相同的,那么好,是我们的大脑玩了一个小把戏,这让我们更多的去注意光与暗,而不是颜色。右边这里有一个使用同样颜色的连接器,那么我们(的大脑)就能轻易分辨出事实,它们是同样的颜色。

眼睛的工作原理在这不多做解释,给出一个结论——相比颜色,我们有更好的能力去区分黑暗和光亮

一旦我们知道我们对亮度(图像中的亮度)更敏感,我们就可以利用它。

帧类型

在介绍去除冗余的方法前,需要了解帧类型。

时间冗余(帧间预测)

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

接下来尝试花费较少的数据量去编码在时间上连续的 0 号帧和 1 号帧。
在这里插入图片描述
我们可以做个减法,我们简单地用 0 号帧减去 1 号帧,得到残差,这样我们就只需要对残差进行编码
在这里插入图片描述
但我们有一个更好的方法来节省数据量。
首先,我们将0 号帧 视为一个个分块的集合,然后我们将尝试将 帧 1帧 0 上的块相匹配。我们可以将这看作是运动预测

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

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

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

帧上的物体以三维方式移动,当球移动到背景时会变小。当我们尝试寻找匹配的块,找不到完美匹配的块是正常的。这是一张运动预测与实际值相叠加的图片。
在这里插入图片描述
但我们能看到当我们使用运动预测时,编码的数据量少于使用简单的残差帧技术
在这里插入图片描述

查看运动向量

1、使用 ffmpeg 生成包含帧间预测(运动向量)的视频
在这里插入图片描述

2、可使用 Intel® Video Pro Analyzer(需要付费,但也有只能查看前 10 帧的免费试用版)
在这里插入图片描述

空间冗余(帧内预测)

如果我们分析一个视频里的每一帧,我们会看到有许多区域是相互关联的
在这里插入图片描述

让我们举一个例子。这个场景大部分由蓝色和白色组成。
在这里插入图片描述
这是一个 I 帧,我们不能使用前面的帧来预测,但我们仍然可以压缩它。我们将编码我们选择的那块红色区域。如果我们看看它的周围,我们可以估计它周围颜色的变化
在这里插入图片描述
我们预测:帧中的颜色在垂直方向上保持一致,这意味着未知像素的颜色与临近的像素相同
在这里插入图片描述
我们的预测会出错,所以我们需要先利用这项技术(帧内预测),然后减去实际值,算出残差,得出的矩阵比原始数据更容易压缩。

在这里插入图片描述

查看帧内预测

你可以使用 ffmpeg 生成包含宏块及预测的视频。请查看 ffmpeg 文档以了解每个块颜色的含义
在这里插入图片描述
或者我们也可使用 Intel® Video Pro Analyzer(需要付费,但也有只能查看前 10 帧的免费试用版)
在这里插入图片描述

编码冗余

编码是用于表示信息实体或事件集合的符号系统(字母、数字、比特和类似的符号等)。

每个信息或事件被赋予一个编码符号的序列,称之为码字。每个码字中的符号数量就是该码字的长度。

在多数二维灰度阵列中,用于表示灰度的8比特编码所包含的比特数,要比表示该灰度所需要的比特数多。

待更

视觉冗余

人类的视觉系统由于受生理特性的限制,对于图像场的注意是非均匀的,人对细微的颜色差异感觉不明显。
例如,人类视觉的一般分辨能力为26灰度等级,而一般的图像的量化采用的是28灰度等级,即存在视觉冗余。
人类的听觉对某些信号反映不太敏感,使得压缩后再还原有允许范围的变化,人也感觉不出来。

心理视觉冗余与实在的视觉信息相关,它是因人而异的,不同的人对于同一张照片产生的心理视觉冗余是不同的。

去除心理视觉冗余数据必然导致定量信息的损失,并且该视觉信息损失是不可逆转的操作。
就好比一张图像(无法放大)比较小时,人眼是无法直接判断出其分辨率,为了压缩图像的数据量,可以去除一些人眼无法直接观察出的信息,但当其放大时,没有去除心理视觉冗余的图像将和去除心理视觉冗余的图像产生明显差别。

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spark!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值