一种任意调色板位置抖动算法
本文介绍了一种适用于任意调色板的位置抖动(positional dithering)算法。该算法不依赖于固定的颜色映射,能够根据图像中每个像素的位置和可用颜色动态决定抖动模式,从而在有限的调色板下实现更自然的色彩过渡和图像渲染效果。
背景速读
- 作者 Bisqwit(Joel Yliluoma)是芬兰独立程序员,以编写模拟器(如著名的 NES/Famicom 模拟器 Bisqwit's NES)和高性能 C++ 代码闻名。他在个人网站上长期分享技术文章、算法实验与底层图形编程研究,风格以深入、实用著称。
- 这篇文章讨论的是“任意调色板的位序抖动算法”——即当显示设备只能显示一组有限的颜色(例如 256 色索引色或旧式显示硬件),而图像色彩数远超这个限制时,如何通过像素级的算法在视觉上“模拟”出更多颜色和渐变色。位序抖动(positional dithering)与传统误差扩散(如 Floyd-Steinberg)不同,它不是逐行产生误差,而是根据像素在图像中的位置直接决定颜色。
- 文章中提出的算法是 Yliluoma 的第三个版本(前两版也发表在他的网站上),特点是能在保持较低计算量的同时,消除传统位序抖动的块状纹理,使结果更接近误差扩散的质量,但具有更好的结构性模式。
- 意义:这类算法至今仍用于嵌入式系统、旧式游戏硬件、电子墨水屏、以及需要将高色彩图像适配到有限调色板(如 GIF 格式或低功耗显示)的技术场景中。