2010-09-04 3 views
4

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

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

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

+0

Вы пытаетесь выбрать 16 векторов из трехмерного пространства с 255 элементами в каждом измерении. Это не матрица 3x3. Это также будет трудно сделать равномерно, потому что 3 не является делителем 16 (если бы это было тривиально). Может быть что-то из теории цвета, которая приходит на помощь. В его нынешнем виде это ставит меня как проблему упаковки шара. – aaronasterling

+0

Вернее, вариация проблемы упаковки сферы (вроде бы наоборот, в том, что вы хотите поместить 16 сфер в трехмерном пространстве так далеко друг от друга, насколько это возможно. – aaronasterling

+0

да, вы правы, я не очень хорош в это на самом деле, я думал, что есть некоторые aproaches/известные решения для этой проблемы. Слышали ли вы такую ​​вещь? –

ответ

2

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

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

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

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

+0

+1 Это мошенничество;) – aaronasterling

+0

неважно. равномерное распределение 8 элементов так же сложно, как 16. – aaronasterling

2

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

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

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

3

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

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

+0

три цвета, которые вы приводите в качестве примера, кластеризованы относительно происхождения;) точка взята, хотя. – aaronasterling

+1

вы просто оцифровываете свои топоры назад;) точка взята, хотя. – msw

3

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

+1

+1 Я думаю, что это лучшее решение. У меня все равно, и это уродливо. просто подберите их. – aaronasterling

+0

да, я предпочитаю это делать, но на самом деле я собираюсь интегрировать эту палитру в логику поиска, поэтому я выберу математический путь –

1

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

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

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

Могут быть еще несколько алгоритмов. Но я использовал эти 3.

6

Фактически я нашел способ, который зависит от этой проблемы «деление цветовой палитры». Я буду использовать эти значения цвета с преобразованием значений rgb в значения hsv.

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

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

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

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

+0

, но, как предположил суперкар, вы, вероятно, захотите сочетать различия оттенков и значений как в одиночку трудно отличить элементы в 24-битном цвете. – msw

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