主要观点:
- 介绍在 Racket 中实现 Atkinson 抖动算法,支持彩色调色板和正确的线性化。
- 指出未线性化 sRGB 输入图像会导致过亮的抖动输出,应在抖动前进行线性化并考虑人类感知。
- 列举了抖动时应避免的陷阱,如图像缩放、错误的伽马设置等,以及不同抖动算法的差异。
- 强调抖动图像应保存为 PNG 等非压缩格式。
关键信息:
- Atkinson 抖动将像素亮度与阈值比较进行黑白抖动,扩展到彩色需在 3D 空间中找到最接近的颜色。
- sRGB 是伽马编码的非线性颜色空间,直接抖动会导致结果过亮,需线性化并考虑感知亮度。
- 不同抖动算法如 Atkinson 和 Floyd-Steinberg 扩散误差方式不同,Atkinson 会使图像较暗。
- 抖动图像应保存为非压缩格式,以免压缩伪影破坏效果。
重要细节:
- 文中给出了多个相关资源链接,如amanvir.com、ditherit.com、dither、didder、作者博客等。
- 详细说明了计算 3D 颜色空间距离的过程和误差扩散方式。
- 展示了多个对比图片,如 Dürer 画作的不同调色板抖动对比、线性化前后的图像对比等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。