Я начал играть с этой идеей несколько лет назад, когда писал свои университетские работы. Идея такова - алгоритм квантования цвета perfect будет делать произвольное изображение с истинным цветом и уменьшать количество цветов до минимально возможного, сохраняя при этом, что новое изображение полностью неотличимо от оригинала с голым глаз.
В основном настройка проста - у вас есть набор точек в кубе RGB (от 0 до 255 целочисленных значений на каждой оси). Вы должны заменить каждую из этих точек другой точкой таким образом, чтобы:
- Общее количество баллов после операции должно быть как можно меньше;
- Расстояние от исходной точки до заменяемой точки не превышает некоторых предварительно определенных констант R, G и B на каждой из красной, зеленой и синей осей (они взяты из чувствительности человеческого глаза и в целом настраивается пользователем).
Я знаю, что существует множество алгоритмов квантования цветов, которые работают с разной эффективностью, но они в основном нацелены на уменьшение цветов до определенного числа, а не «минимально возможного без нарушения этих ограничений».
Кроме того, я бы хотел, чтобы алгоритм действительно вывел возможный абсолютный минимум , а не просто что-то, "довольно близкое к минимуму".
Возможно ли это без трудоемкого полного поиска всех комбинаций (невозможно для любой реальной картины)? Мои инстинкты говорят мне, что это NP-полная проблема или хуже, но я не могу доказать это.
Настройка бонуса: Измените ограничение от констант R, G, B на функцию F (R источник , G источник , B источник , R target , G target , B target ), который возвращает TRUE, если сопоставление будет в порядке, и FALSE, если оно выходит за пределы диапазона.