为什么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 压缩会导致整个图像的轻微模糊。这是正常的压缩。我不会进入它,因为它没有解决这个问题。
主要的视觉伪像,即模糊区域,来自对相似块进行时间压缩的尝试。
出现的模式是由在数据中寻找模式的确定性时间算法引起的。即使它们可能不存在,它也会找到模式。这就像在云中寻找物体形状一样。
数据将包含具有与下一帧相似的亮度/色度值的块(带有平移平移)。识别这些相似之处并优化块大小以适应是压缩器的工作。
这些偏移混合在渲染的“帧”中,导致您在视频中看到的块模糊。
在正常视频中,除非场景发生变化,否则在给定目标帧速率的情况下,对象的边缘往往会相对缓慢地从一个块移动到下一个块。时间压缩算法降低分辨率并重用前一个块,并通过将两个帧的块混合成单个输出块的移位。这种技术非常适用于电影和电视。
视频时间相关性的假设使得这对于压缩非常有效。
对于随机图像中没有时间相关性的图像,它可能会产生奇怪的伪影。