現在、Java で Floyd-Steinberg-Dithering アルゴリズムを実装しようとしています。数回失敗した後、ウィキペディアにリストされている疑似コードを読んだ後、質問に出くわしました。
for each y from top to bottom
for each x from left to right
oldpixel := pixel[x][y]
newpixel := find_closest_palette_color(oldpixel)
pixel[x][y] := newpixel
quant_error := oldpixel - newpixel
pixel[x+1][y ] := pixel[x+1][y ] + 7/16 * quant_error
pixel[x-1][y+1] := pixel[x-1][y+1] + 3/16 * quant_error
pixel[x ][y+1] := pixel[x ][y+1] + 5/16 * quant_error
pixel[x+1][y+1] := pixel[x+1][y+1] + 1/16 * quant_error
私が達成しようとしているのは、画像を 16 色のパレットに押しつぶすことです。しかし、ピクセルにエラーを追加した後、パレットにも存在しない完全に新しい色を作成していませんか?
しかし、最後に画像全体を強制的にカラー パレットに戻せば、これで十分でしょうか?
前もって感謝します!