私の質問は、imagemagick (または Java ライブラリ) を使用して、159 色の静的パレットから選択された 15 色のみを使用して画像の色を変更する最良の方法は何かということです。これらの 15 色を使用して 15_color_palette.png を作成し、imagemagick convert のリマップ関数を使用して画像の色を変更します。
convert input.png +dither -remap 15_color_palette.png output.png
私はいくつかの異なる方法を試しましたが、どちらも十分に機能しませんでした (少なくとも、より良い方法があると思います。より良い方法がない可能性があると思います)。
例 1:
convert input.png +dither -colors 15 work/15_color.png
convert work/15_color.png -unique-colors work/15_color_palette.png
convert work/15_color_palette.png -remap work/palette.png work/15_color_palette_converted.png
convert input.png +dither -remap work/15_color_palette_converted.png work/final.png
(これはすべての色から 15 色を選択し、それを 159 色のカラー パレット パレットから 15 色のパレットに再マッピングし、それらの 15 色を使用して元の画像の色を変更します)。
例 2:
convert +dither -remap work/palette.png work/remap.png
#use java to count top 15 colors used from the remap, recolor the original using those 15 colors
convert +dither -remap work/temp_palette.png work/final.png