如何从基于高质量 png 的动画 gif 中去除伪影?

如何从基于高质量 png 的动画 gif 中去除伪影?

我知道由于 256 种颜色的限制,我做不了太多事情,但我注意到一些大型动画 gif 看起来质量非常高。秘诀是什么(我使用 Gimp)?特别减少颜色还是运气好,视频合适(可能是低色)?

答案1

这可能不是您所看到的,但与普遍看法相反,GIF 图像可以有超过 256 种颜色。GIF 文件可以包含许多帧。这就是动画 GIF 的工作方式 - 与更复杂的视频表示一样,它们可以存储一系列帧(带有时间信息)。我在这里可能用错了术语,但单个图像帧可以小于整个图片帧。例如,如果所有动画都发生在整个图像的四分之一中,您可以拥有一个 100×100 的图像,其中包含 50×50 帧的序列。这样可以避免复制图像的静态部分,从而减小文件大小n有时实际上只有一小部分是动画。

问题是,每个帧都可以有自己的颜色图。还记得我提到过时间信息吗?GIF 文件可以包含许多帧,这些帧平铺整个图像空间,具有不同的颜色图,并以零延迟显示。这是一个所谓的例子:

                                                具有数千种颜色的 GIF 文件(图像)

我从Cyde Weys 的博客。注意:我过去观察到一些图像软件(特别是不支持动画的程序)仅渲染此类文件的第一帧,因此无法产生所需的显示。

哦!初读时,我没注意到您的 GIF 明显是动画的。好吧,我上面写的内容仍然适用。例如,每次动画更新(例如,每 30 毫秒)时,您可能有六帧序列:一帧延迟 30 毫秒,然后是五帧延迟 0 毫秒。这些可能形成动画区域的 2×3 平铺,每个平铺中可以有 256 种颜色,总共 1536(6×256)种颜色。

答案2

[自答]

我找到了。转换为“索引模式”时,它被称为“抖动”。例如,在 Gimp 中,当对 256 种颜色进行索引时,还有一个使用几种算法进行抖动的选项。

它创造了一个更加平稳的过渡。

它确实看起来更糟,但如果原图的范围足够有限(例如大部分是深棕色),那么它可能看起来几乎一样。但如果它非常生动和复杂(例如包含所有基本颜色的复杂性),那么它就会显示出来。

答案3

您没有提供任何实际示例,因此没有人能给出具体细节,只能给出一般指导。此外,在没有看到您所指的实际工件的情况下,我们只能猜测您遇到的问题,因为问题可能有很多种。

动画 GIF 没有什么特别的,它们只是一堆快速连续显示的 GIF。

您遇到的伪影可能是由于 GIF 格式提供的调色板有限造成的。正如您所发现的,您可以使用抖动来使 8 位图像看起来更好,但这只是其中一种选择。根据图形程序的不同,有些提供更多选项,有些提供更少选项,并且许多选项具有不同的设置和模式。我多年前使用的一个动画 GIF 程序是 ImageAlchemy。它有许多选项,可以使用各种方法和不同的算法对调色板进行平滑、混合、抖动、压缩等。

您可能遇到的另一个问题可能是由于查看器而不是文件本身。一些动画 GIF 程序能够超壓縮动画 GIF,这样它会从每一帧中删除所有未改变的像素,只存储改变的部分。这通常只会使文件变小,但有些查看器程序对此有困难(它们不完全符合 GIF89a 格式),动画显示效果很差。

毫不奇怪,哪种方法能产生最佳效果完全取决于具体图像。有些图像直接使用调色板映射效果很好,有些则需要抖动,还有一些则需要更高级的颜色变换。

除了 GIF 特定选项之外,您还可以使用图像编辑程序手动将其缩减为 8 位颜色,以获得更高质量的 GIF 图像。这样,您可以更好地控制颜色转换,因为在格式转换/保存期间进行的缩减可能不够,而程序中的颜色工具可以提供更高的准确性和更多的选项。

相关内容