Методы создания цветовой палитры из изображения? - PullRequest
0 голосов
/ 11 декабря 2010

Скажем, у меня есть изображение с неопределенной глубиной цвета и размерами.Какие есть способы сжатия до n-цветовой палитры?Мой гугл-фу слаб с этим.

Ответы [ 2 ]

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

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

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

1 голос
/ 11 декабря 2010

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

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

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

Это будет хорошим "первым делом", но на изображениях с большим количеством цветов это может не очень хорошо отыскать палитру. На этапе словаря вам может потребоваться объединить цвета, которые «достаточно близки», чтобы избежать большого количества очень похожих цветов, которые все получали плохо, даже если вместе они были бы очень распространены.

Для получения лучших результатов вам нужно взглянуть на техники дизеринга .

...