Вот интересная практическая проблема, с которой я столкнулся, работая над квантованием цветов и сжатием изображений.
Основная идея заключается в том, что мне нужна программа, которой я даю изображение, и оно уменьшает количество цветов, насколько это возможно, и я этого не замечаю. Поскольку у каждого человека разная чувствительность глаза (а глаза имеют разную чувствительность интенсивности красного / зеленого / синего), должна быть возможность каким-то образом указать этот порог чувствительности.
Другими словами, в изображении с истинным цветом замените цвет каждого пикселя другим цветом, чтобы:
- Общее количество различных цветов на изображении будет минимально возможным; и
- Каждый новый пиксель будет иметь свой цвет не дальше от исходного цвета, чем какое-либо заданное пользователем значение D.
D можно определить по-разному, выберите ваш любимый. Например:
- Отдельные красные, зеленые и синие компоненты для указания максимально возможного отклонения для каждого из них (для каждого пикселя вы получаете прямоугольный кубоид с действительными значениями замены);
- Действительное число, которое будет представлять максимально допустимое расстояние в кубе RGB (для каждого пикселя вы получаете сферу действительных значений замены);
- Что-то промежуточное или совершенно другое.