Преобразование RGB в индекс

Рустам13 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
22.06.2012

Задача:

Преобразовать картинку из RGB-24 в RGB-8 индексированные цвета палитры состоящей из 240 цветов. В палитре есть 17 цветов имеющих градацию от темного к светлому. Цветовые тона картинки подгонять под максимальное использование градаций из палитры, чтобы переходы были плавные.

Особенности:

В заданной палитре, достаточно плавные градации 17 основных цветов (желтый, красный, малиновый, голубой и т.д.). В данный момент для преобразования картинки в индексированные цвета используется Photoshop. Если цветовой переход в картинке, даже незначительно отличается от имеющихся в палитре, происходит создание новых цветовых оттенков, путем миксования существующих цветов. И соответственно не используется преимущество наличия основных градиентов из палитры. Качество полученных картинок далеко от желаемого. Приходится тратить много времени на изменение цветовой гаммы картинки перед преобразованием.

Мое личное видиние решения задачи:

Имеем цветовой куб в трехмерном пространстве R,G,B по 256 едениц по каждой оси. В этом кубе есть 17 линий состоящих, в среднем, из 14 точек нашей палитры (палитра прилагается). Берем картинку, анализируем наличие областей с плавным переходом тона цвета. И для каждой области выбираем наиболее подходящую линию из 17 имеющихся.

Области не имеющие переходов, а просто содержащие разнообразие красок, преобразовываются по стандартному алгоритму любой графической программы. Не претендую на правильность указанного мной пути.

Пожелания:

Желательно выполнить в виде фильтра к Photoshop, но необязательно. И иметь настройки преобразования, для вариативности.