Преобразование истинного цвета изображения RGB в индексированные цвета - PullRequest
2 голосов
/ 07 марта 2011

Я хочу преобразовать 24-битное изображение RGB (8 бит для каждого канала) в 8 бит, используя индексированную цветовую палитру.

Моя первоначальная идея состояла в том, чтобы создать массив и просто посчитать, сколько раз каждый цвет былпредставлен на изображении, но я подумал, что было бы расточительно, если бы были большие области с небольшим изменением цвета, которые использовали бы все пространство палитры в пользу меньших, но, возможно, более значительных цветовых групп.

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

...

Как вы можете видетьЯ не совсем разбираюсь в терминологии, но надеюсь, вы понимаете, что я имею в виду:)

У меня вопрос;Кто-нибудь может поделиться своими идеями о том, как подойти к этому или, может быть, направить меня в правильном направлении к любому материалу для чтения в Интернете?

спасибо!

Ответы [ 2 ]

4 голосов
/ 02 января 2012

Согласно статье Пола Хекберта от 1982 г. алгоритм популярности уступает Median Cut.

Существует семейство алгоритмов, подобных разделению по срединному разрезу, которые выбирают разные критерии, например, свести к минимуму дисперсию цветов в каждом разделе).

Есть быстрое, но безобразное подразделение, использующее Octtree.

Существуют алгоритмы кластеризации, такие как K-Means и Linde-Buzo-Grey .

Интересно, что странным является NeuQuant нейронная сеть.


Я все еще пытаюсь найти лучший вариант для pngquant .

4 голосов
/ 07 марта 2011
...