範囲 [0, 255] のグレースケール イメージをresult = (img/8)*8
その範囲のサブセットに変換しますが、現在は 32 の値のみを使用しているため、望ましくないアーティファクトが生じる可能性があります。視覚的に優れた画像を生成する可能性のある方法は、Improved Grayscale Quantization (略して IGS) と呼ばれます。それを実行するための擬似コードは、次のように指定できます。
mult = 256 / (2^bits)
mask = 2^(8 - bits) - 1
prev_sum = 0
for x = 1 to width
for y = 1 to height
value = img[x, y]
if value >> bits != mask:
prev_sum = value + (prev_sum & mask)
else:
prev_sum = value
res[x, y] = (prev_sum >> (8 - bits)) * mult
bits = 5
例として、次の図と、 、bits = 4
、およびbits = 3
上記の方法を使用したそれぞれの量子化について考えてみましょう。

同じ画像ですが、次のようにして量子化され(img/(256/(2^bits)))*(256/(2^bits))
ます。

これは病的な例ではありません。