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

Why is this MPEG-4 compression of GIF creating weird results?

我想知道如果 MPEG-4 试图压缩具有完全随机像素的图像会发生什么。所以我在 Python.

中使用 Pillow 制作了一张随机像素的图像

实际 GIF:

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

MP4帧之一:

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

所有帧中的所有像素都是通过此创建的:

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

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

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

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

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

主要的视觉伪影,即模糊区域,是由于尝试暂时压缩相似的块。

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

数据将包含与下一帧具有相似 Luminance/Chrominance 值的块(带有移位转换)。识别这些相似点并优化块大小以适应是压缩器的工作。

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

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

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

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