我想将图像限制为 16 种颜色,但只能使用一组特定的更大颜色中的颜色

I want to limit an image to 16 colors, but ONLY colors from a specific larger set of colors

我正在尝试将图像转换为非常具体的配色方案,我有一张包含 6684 种独特颜色的图像:

我只想专门使用此图片中的颜色,但它太大而无法用作调色板(限制为 256)。

除此之外,我转换的任何图像都应具有 MAX 16 种索引颜色。 (例如:我转换的任何图像都应该只有 16 种颜色,它可以像 4 位图像一样显示,并且所有这 16 种颜色都必须是我上面发布的图像中也存在的颜色。)

是否可以在 imagemagick 中执行此操作?

假设您提供的图像名为 palette.png,我认为您希望将输入图像中的所有颜色重新映射到该调色板,然后根据最近邻插值法将颜色减少到 16 种颜色这会给你这样的命令:

magick +dither input.png -remap palette.png -interpolate nearest -colors 16 result.png

如果这不是您想要的,您可以通过将其分解为多个步骤并查看部分结果来调试上面的内容:

magick +dither input.png -remap palette.png partial.png

并且:

magick partial.png -interpolate nearest -colors 16 result.png

您可能想尝试将 +dither 替换为 -dither Riemersma-dither FloydSteinberg

请注意,使用 "Nearest Neighbour" 插值可避免在图像中引入任何新颜色 - 它仅使用现有图像中最近的邻居,而不是平均或计算新颜色像素.