问题描述
我想知道如果 MPEG-4 尝试用完全随机的像素压缩图像会发生什么。所以我用 Python 中的 Pillow 制作了一个随机像素的图像。
实际的 GIF:
这不是动画,因为动画太大了。每个像素的颜色是完全随机的。因为 MPEG-4 应该只混合相似的颜色。因此,由于颜色偶然相似,因此应该有一些混合颜色。事情不是这样的。
压缩中有一个 CLEAR 模式。它看起来像一个清晰的、未压缩的补丁和压缩混合补丁的矩阵。这是怎么回事?效果在 .mp4 文件中更加清晰,点击 here 即可。在我的设备上存储的原始文件中,它更加清晰。 Python 通过 random
模块生成的伪随机数不应该发生这种情况。
所有帧中的所有像素都是通过这个创建的:
[random.randint(0,255),random.randint(0,255)]
解决方法
您正在尝试压缩不可压缩的内容。
在不讨论熵的情况下,对于这种情况,我们可以假设伪随机 = 随机。
AVC 是一种具有可变大小块、DCT 压缩和时间补偿的块算法。
整数 DCT 压缩会导致整个图像的轻微模糊。这是正常的压缩。我不会进入它,因为它没有解决问题。
主要的视觉伪像,即模糊区域,来自对相似块进行时间压缩的尝试。
出现的模式是由在数据中寻找模式的确定性时间算法引起的。即使它们可能不存在,它也会找到模式。 这就像在云中寻找物体形状一样。
数据将包含与下一帧具有相似亮度/色度值的块(带有平移平移)。识别这些相似之处并优化块大小以适应是压缩器的工作。
这些偏移混合在渲染的“帧”中,导致您在视频中看到的块模糊。
在正常视频中,除非场景发生变化,否则在给定目标帧速率的情况下,对象的边缘会相对缓慢地从一个块移动到下一个块。时间压缩算法降低分辨率并重用前一个块,并通过将两个帧的块混合成单个输出块的移位。这种技术非常适用于电影和电视。
视频时间相关性的假设使得这对于压缩非常有效。
对于随机图像中没有时间相关性的图像,它会产生奇怪的伪影。