Есть ли способ разделить цветовую палитру RGB? - PullRequest
4 голосов
/ 05 сентября 2010

Я пытаюсь создать цветовую палитру, которая имеет 16 цветов. я буду отображать эту палитру в сетке 4х4.

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

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

Ответы [ 6 ]

6 голосов
/ 05 сентября 2010

На самом деле я нашел способ, который зависит от этой проблемы с разделением палитры. я буду использовать эти значения цвета с преобразованием значений RGB в значения HSV.

оттенок, насыщенность, значение

так что я могу использовать одно целое значение от 0 до 360 или одно целое число от 0 до 100 (%) для моей цветовой палитры.

наконец, я могу легко использовать эти значения для поиска / фильтрации моих данных на основе выбора цвета. Я погружаюсь в диапазоне от 0-360 до 16 пиков одинаково, поэтому я могу легко определить 16 различных цветов.

но спасибо за разные подходы

3 голосов
/ 05 сентября 2010

Когда количество выбранных цветов (16) настолько мало (особенно по сравнению с количеством доступных цветов), вам будет гораздо лучше выбрать вручную красивую палитру или использовать стандартную (например, предварительно-определенная система или веб-палитра для 16 цветовых систем) вместо попытки придумать математический алгоритм выбора палитры.

3 голосов
/ 05 сентября 2010

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

Если вы пытаетесь распределить цветовую палитру таким образом, который имеет смысл для человеческого восприятия, необходимо учитывать большое количество нелинейностей, о которых упоминается в этой статье . Например, цвета #fffffe, #fffeff и #feffff занимают дальние углы математического пространства, но почти неразличимы для человеческого глаза.

2 голосов
/ 05 сентября 2010

Многое зависит от того, для чего предназначены цвета.Если вы просто хотите 16 произвольных цветов, я бы посоветовал:

black    darkgray   lightgray white
darkred  darkgreen  darkblue  darkyellow
medred   medgreen   medblue   medyellow
lightred lightgreen lightblue lightyellow

Я использовал этот набор цветов для игры с несколько мультяшными цветами (VGA) и обнаружил, что она работает довольно хорошо.Я думаю, что я упорядочил цвета немного по-другому, но приведенная выше последовательность выглядела бы логичной, если бы она располагалась в квадрате 4x4.

2 голосов
/ 05 сентября 2010

Вы в основном проецируете куб (R X G X B) на квадрат (4 X 4). Сначала я хотел бы спросить себя, какой размер куба помещается внутри этого квадрата.

1 X 1 X 1 =  1
2 X 2 X 2 =  8
3 X 3 X 3 = 27

Самый большой куб, который вписывается в квадрат, имеет 8 цветов. В этот момент я хотел бы отметить, насколько удобно 8 является интегральным фактором 16.

Я думаю, что удобство побудило бы меня использовать 8 основных цветов в 2 вариантах: светлый и темный или насыщенный и ненасыщенный.

1 голос
/ 05 сентября 2010

Это стандартная проблема, известная как квантование цвета. Для этого есть пара алгоритмов:

Цель: вы в основном хотите сделать 16 кластеров вашего пикселя в трехмерном пространстве, где 3 оси варьируются от 0 до 255.

Методы: 1) округление первых значащих битов. - очень прост в реализации, но не дает хорошего результата. 2) метод гистограммы. - примите среднее усилие и дайте лучший результат 3) четырехугольное дерево. - современная структура данных. Дать наилучший результат, но реализовать структуру данных дерева qaud сложно.

Возможно, есть еще несколько алгоритмов. Но я использовал эти 3.

...