ИМХО, очевидная вещь, которую нужно сделать, - создать палитризованное изображение, в котором у вас есть палитра из 60 цветов и указатель на палитру в каждом месте.С PIL / Pillow это очень просто.
Теперь вы можете выбрать эти 60 цветов.Я бы подумал об использовании цветового пространства HSL (Hue, Saturation and Lightness).Теперь вам нужно 60 разных значений.Таким образом, вы можете использовать полную насыщенность и яркость для всех пикселей и распределить доступные 360 градусов оттенка на куски 6 градусов для 60 цветов.Или вы можете использовать 100% легкость и 50% легкость плюс 100% насыщенность и 50% насыщенность, чтобы дать вам в 4 раза больше комбинаций легкость / насыщенность, что означает, что вы можете повернуть 24 степени оттенка для большего разделения.
См. здесь например, как сделать изображение из массива Numpy, добавить палитру к изображению, превратить его в изображение подушки и сохранить.
Я в основном предлагаю палитру с 60 записями, сследующие значения:
Hue, Saturation, Lightness
0 50% 50%
0 50% 100%
0 100% 50%
0 100% 100%
23 50% 50%
23 50% 100%
23 100% 50%
23 100% 100%
47 50% 50%
47 50% 100%
47 100% 50%
47 100% 100%
61 ...