微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

实际的 GIF:

GIF frame sample

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

MP4 帧之一:

MP4 Frame

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

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

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

解决方法

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

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

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

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

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

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。