ディザリング画像処理
昨日
ディザリング画像処理
ディザリングとは
- 画像ファイルの容量を削減(量子化)する際する際,丸め誤差が発生する
- あるピクセルで出現した誤差を,隣接する複数のピクセルに投げつけることを繰り返す (ディザリング)
- 画像全体に出現する量子化の際の誤差が小さくなる
- 見やすさ,芸術性
https://github.com/yif11/dithering_py
ナイーブな量子化
- 画像をグレースケールに変換し,各ピクセルを 0 or 255 に変換
誤差を右隣に拡散
- あるピクセルの誤差をそのまま右隣に拡散(重み1)
- ナイーブなものより少し自然に見えるが,ところどころ違和感がある
Floyd-Steinberg Dithering
- 誤差を,右隣と左下,下,右下方向にそれぞれ 7/16, 3/16, 5/16, 1/16 の重みをつけて拡散
- 右隣のみへの拡散と比べて違和感が減少 & 見やすくなった
Atkinson Dithering
- 誤差を,右と下にそれぞれ2ピクセル,左下と右下にそれぞれ1ピクセル,合計6箇所に 1/8 ずつ重みをつけて拡散 (2/8 分の誤差は捨てられる)
- Floyd-Steinberg Dithering より誤差が大きいが,逆に良い印象を受ける
まとめ
- ディザリング手法によって印象が変わる
- グレースケールで実験したが,RGBカラーの表現をする場合は3チャネル分誤差を拡散しないといけない