为什么GIF的MPEG-4压缩会产生奇怪的结果?

我想知道如果 MPEG-4 尝试压缩具有完全随机像素的图像会发生什么。所以我用 Python 中的 Pillow 制作了一个带有随机像素的图像。

实际的 GIF:

这不是动画,因为动画太大了。每个像素的颜色是完全随机的。因为 MPEG-4 应该只混合相似的颜色。因此,由于颜色偶然相似,因此应该有一些混合颜色。那不是发生的事情。

MP4 帧之一:

压缩中有一个CLEAR模式。它看起来像一个清晰的、未压缩的补丁和压缩混合补丁的矩阵。这是怎么回事?效果在 .mp4 文件中更加清晰,请单击此处查看。在我的设备上存储的原始文件中,它更加清晰。这不是 Python 通过random模块生成的伪随机数应该发生的事情。

所有帧中的所有像素都是通过以下方式创建的:

[random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)]

回答

您正在尝试压缩不可压缩的。

在不讨论熵的情况下,对于这种情况,我们可以假设伪随机 = 随机。

AVC 是一种具有可变大小块、DCT 压缩和时间补偿的块算法。

整数 DCT 压缩会导致整个图像的轻微模糊。这是正常的压缩。我不会进入它,因为它没有解决这个问题。

主要的视觉伪像,即模糊区域,来自对相似块进行时间压缩的尝试。

出现的模式是由在数据中寻找模式的确定性时间算法引起的。即使它们可能不存在,它也会找到模式。这就像在云中寻找物体形状一样。

数据将包含具有与下一帧相似的亮度/色度值的块(带有平移平移)。识别这些相似之处并优化块大小以适应是压缩器的工作。

这些偏移混合在渲染的“帧”中,导致您在视频中看到的块模糊。

在正常视频中,除非场景发生变化,否则在给定目标帧速率的情况下,对象的边缘往往会相对缓慢地从一个块移动到下一个块。时间压缩算法降低分辨率并重用前一个块,并通过将两个帧的块混合成单个输出块的移位。这种技术非常适用于电影和电视。

视频时间相关性的假设使得这对于压缩非常有效。

对于随机图像中没有时间相关性的图像,它可能会产生奇怪的伪影。


以上是为什么GIF的MPEG-4压缩会产生奇怪的结果?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>