Colorify Docs
像素画专属参数 Pixel Params

颜色抖动 Dithering

对图像进行抖动处理

详解

适用情况

对于体积较小的画,使用抖动的效果反而可能会不如不抖动的效果,体积越大的画使用抖动的效果就会越好

颜色抖动,也称仿色,是尝试用较低的颜色位深度来获得更为丰富的视觉效果。比如下面这个例子

Image title

原始图像

Image title

无抖动

Image title

使用 Floyd-Steinberg

这个例子来自 Wikipedia: Floyd-Steinberg Dithering

对颜色抖动的效果和原理做描述的文章已经足够多,这里就不展开讲了。

可用的抖动算法

Atkinson

Bill Atkinson 于 1982 年开发,最早用于 MacPaint。它把量化误差扩散到周围 6 个像素,但只分配了 3/4 的误差(剩余 1/4 被丢弃):

  X 1 1
1 1 1      ÷ 8
  1

适用情况

  • 需要保留细节、画面更锐利更有冲击力时;注意结果会整体偏暗,暗部细节可能丢失。

Burkes

Theresa Burkes 于 1988 年提出,是对 Sierra 算法的改进——把误差扩散到右侧 2 列共 7 个像素:

    X 8 4
2 4 8 4 2    ÷ 32

适用情况

  • 想比 Floyd-Steinberg 减少渐变条纹、又不想明显变慢的折中选择。

Floyd-Steinberg

Robert FloydLouis Steinberg 于 1976 年提出,是误差扩散抖动的事实标准。它把量化误差按固定比例扩散到右方与下一行的 4 个像素:

  X 7
3 5 1        ÷ 16

适用情况

  • 绝大多数场景的默认选择:质量/计算量比最高、实现简单;但平滑渐变处容易出现方向性条纹

Stucki

Peter Stucki 于 1981 年提出,基于 Jarvis-Judice-Ninke 算法简化而来,把误差扩散到 3 行共 12 个像素:

    X 8 4
2 4 8 4 2    ÷ 42
1 2 4 2 1

适用情况

  • 对条纹伪影敏感、需要细腻渐变的大图;比 JJN 快且质量损失很小。

Jarvis, Judice, and Ninke

J. F. JarvisC. N. JudiceW. H. Ninke 于 1976 年提出(常缩写为 JJN),把误差扩散到 3 行共 12 个像素,是最早的多行误差扩散算法之一:

        X 7 5
3 5 7 5 3    ÷ 48
1 3 5 3 1

适用情况

  • 扩散范围最大、纹理最均匀细腻,适合大尺寸图的平滑渐变;但计算开销也最大。

  • 计算开销最大,每个像素需要累加 12 个邻居。

  • 过度扩散可能使画面显得"灰"或"软",高对比细节的保持能力较弱。

Sierra3

Frankie Sierra 于 1989 年提出(Sierra 系列之一),采用 3 行共 10 个像素的扩散核,是质量与速度之间的良好折中:

    X 5 3
2 4 5 4 2    ÷ 32
  2 3 2

适用情况

  • 想要多行扩散的细腻效果、又不想付出 JJN 开销的场合,质量/速度折中最佳。

On this page