2010-12-11 3 views

ответ

1

Ну простейший подход - просто взглянуть на изображение и создать словарь, отображающий цвета пикселей в ints. Для каждого пикселя, если его цвет находится в словаре, увеличьте его количество. Если это не так, добавьте его со счетом 1. Это дает вам количество раз, когда каждый цвет появляется на изображении.

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

Затем повторите итерацию изображения. Для каждого пикселя найдите цвет палитры, который ближе всего к цвету этого пикселя, и установите этот индекс пикселя в этот индекс палитры.

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

Для получения более точных результатов, вы должны посмотреть на методы dithering.

1

Проблема называется квантованием цвета. См. Например, pngquant.

Если вы ищете алгоритмы, то найдите Median Cut, Octtree, K-Means, Linde-Buzo-Gray, NeuQuant. В идеале на Google Scholar, так как регулярные результаты рассылаются спамовыми плательщиками.

Смежные вопросы