Преобразование истинного цвета изображения RGB в индексированные цвета
Я хочу преобразовать 24-битное изображение RGB (8 бит для каждого канала) в 8 бит, используя индексированную цветовую палитру.
Моя первоначальная идея состояла в том, чтобы создать массив и просто посчитать, сколько раз каждый цвет был представлен в изображении, но я подумал, что было бы расточительно, если бы были большие области с небольшим изменением цвета, которые использовали бы все пространство палитры в пользу меньших, но, возможно, более значимых цветовых групп.
Когда я закончил создание палитры, моя идея состояла в том, чтобы рассмотреть каждый цвет RGB как трехмерную матрицу и сравнить его точечное произведение с каждой записью в палитре.
...
Как видите, я не совсем разбираюсь в терминологии, но надеюсь, вы понимаете, что я имею в виду:)
Мой вопрос Может ли кто-нибудь поделиться своим пониманием того, как к этому подойти, или, может быть, направить меня в правильном направлении к любому материалу для чтения в Интернете?
Спасибо!
2 ответа
Согласно статье Пола Хекберта 1982 года, алгоритм популярности уступает Median Cut.
Существует семейство алгоритмов, аналогичных Median-Cut (пространственное подразделение), которые выбирают различные критерии, например, минимизируют дисперсию цветов в каждом разделе).
Там быстрое, но безобразное подразделение, использующее Octtree.
Существуют алгоритмы кластеризации, такие как K-Means и Linde-Buzo-Grey.
Интересной странной является нейронная сеть NeuQuant.