任意パレットの位置ディザリングアルゴリズム
この記事では、限られた色パレットを使用して画像を表示する際に、色の階調を擬似的に表現するためのディザリングアルゴリズムについて解説する。特に、任意の色パレットに対応した位置ディザリング(positional dithering)手法を詳述し、Bisqwitが開発した独自アルゴリズムの実装とその効果を紹介している。
背景メモ
- 任意パレットに対応した位置依存ディザリング(positional dithering)アルゴリズムの解説。ディザリングとは、限られた色数しか使えない環境で、画素の配置パターンによって中間色を擬似的に表現する手法。
- 著者のBisqwit(Joel Yliluoma)はフィンランドのプログラマ兼YouTuberで、独自の動画圧縮・画像処理アルゴリズムで知られる。本稿で解説する「Bisqwitのディザリングアルゴリズム」は、1990年代のVGA時代に端を発する技法を改良したもの。
- 従来の誤差拡散法(Floyd-Steinbergなど)と異なり、固定パターンを使うため処理が速く、アニメーションでもちらつきが生じない。「任意パレット」とは、256色など固定パレットだけでなく、画像ごとに最適化された色セットにも対応できるという意味。
- パレット画像(複数の色見本)を入力に、各ピクセルに対して最近傍のパレット色を選ぶ際、位置に応じた誤差パターンを重畳する。このアルゴリズムは実用C++コード付きで公開されており、レトロゲームエンジンや低色環境のグラフィック変換に応用されている。