от
Оригинальный Вопрос Если вам дано число n. максимально отдаленная цвета (и некоторые связанные метрика расстояния), можете ли вы придумать способ, чтобы отсортировать эти цвета в некотором порядке так, что первая м также достаточно близко, чтобы быть максимально определенный набор? Другими словами, дали кучу различных цветов, придумать заказ, поэтому я могу использовать столько цветов, сколько мне нужно начать с самого начала и быть достаточно уверенным, что все они различны и что рядом цветы также очень различны (например, сине-красного не рядом с красно-синим). Рандомизация-это хорошо, но, конечно, не оптимальный. Уточнение: учитывая некоторые большие и визуально определенный набор цветов (скажем, 256 или 1024), я хочу отсортировать их так, что когда я пользуюсь в первые, скажем, 16 из них, что я получаю сравнительно визуально различимых подмножество цветов. Это эквивалентно, примерно, сказать я хочу, чтобы отсортировать этот список из 1024, так что чем ближе индивидуальные цвета визуально дальше друг от друга, они находятся в списке.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

10 Ответы

0 голосов
от
Оригинальный Вопрос Если вам дано число n. максимально отдаленная цвета (и некоторые связанные метрика расстояния), можете ли вы придумать способ, чтобы отсортировать эти цвета в некотором порядке так, что первая м также достаточно близко, чтобы быть максимально определенный набор? Другими словами, дали кучу различных цветов, придумать заказ, поэтому я могу использовать столько цветов, сколько мне нужно начать с самого начала и быть достаточно уверенным, что все они различны и что рядом цветы также очень различны (например, сине-красного не рядом с красно-синим). Рандомизация-это хорошо, но, конечно, не оптимальный. Уточнение: учитывая некоторые большие и визуально определенный набор цветов (скажем, 256 или 1024), я хочу отсортировать их так, что когда я пользуюсь в первые, скажем, 16 из них, что я получаю сравнительно визуально различимых подмножество цветов. Это эквивалентно, примерно, сказать я хочу, чтобы отсортировать этот список из 1024, так что чем ближе индивидуальные цвета визуально дальше друг от друга, они находятся в списке.
0 голосов
от
Это звучит для меня как какой-то график сопротивления, где вы пытаетесь наметить пути наименьшего сопротивления. Если вы обратного требования, пути максимального сопротивления, он, возможно, может быть использована для того чтобы произвести набор, который с самого начала производит максимальную разницу, как вы идете, и к концу начинает возвращаться к значениям ближе к другим. Например, вот один из способов, возможно, делать то, что вы хотите. Вычислить расстояние (см. Ваш пост) из каждого цвета, чтобы все остальные цвета Сумма расстояний для каждого цвета, это дает вам указание, как далеко этот цвет от других цветов в общей сложности Упорядочить список по расстоянию, спускаясь Это бы, кажется, составить список, который начинается с цвета, который находится дальше от всех остальных цветов, а затем спуститься, цвета ближе к концу списка будет ближе к другим цветам в целом. Редактировать: прочитав ваш ответ на мой первый пост, о пространственном подразделении, не совсем подходит описание выше, так как цвета рядом с другими цветами может упасть до нижней части списка, но, допустим, у вас есть кластер из цветов где-нибудь, хотя бы один из цветов, С, что кластер будет расположен ближе к началу списка, и это будет тот, что обычно был далеко от всех других цветов в целом. Если это имеет смысл.
0 голосов
от
Эта проблема называется Цвет квантования, и имеет много хорошо известных алгоритма: http://en.wikipedia.org/wiki/Color_quantization я знаю людей, которые реализовали подход восьмеричного дерева набора для хорошего эффекта.
0 голосов
от
Похоже, восприятие является важным для вас, в таком случае вы, возможно, захотите рассмотреть возможность работы с перцептивное цветовое пространство, например, YUV, YCbCr или лаборатории. Каждый раз, когда я использовал их, они дали мне гораздо лучших результатов, чем в одиночку цветового пространства sRGB. Преобразования цветового пространства sRGB может быть боль, но в вашем случае это действительно может сделать алгоритм проще и в качестве бонуса он будет в основном работать для цвета жалюзи!
0 голосов
от
Н максимально далеких цветов можно считать набор хорошо-распределенных точек в 3-мерном (цвет) пространства. Если вы можете создавать их из последовательности Халтон, то любой префикс (первые M цвета) также состоит из равномерно распределенных точек.
0 голосов
от
Если я правильно понимаю вопрос, вы хотите получить подмножество из M цветов с самым высоким средним расстоянием между цветами, учитывая некоторое расстояние D функция. Иными словами, учитывая исходный набор из N цветов, как большой, неориентированный граф, в котором все цвета соединяются, вы хотите, чтобы найти самый длинный путь, который посещает любой M узлов. Решения NP-полных задач графика это далеко за пределы меня я боюсь, но вы могли бы попробовать запустить простое физическое моделирование: Генерировать м случайных точек в цветовом пространстве Вычислить расстояние между каждой точкой Вычислить векторы отталкивания для каждой точки, которая будет двигать его от всех других точек (через 1 / (расстояние ^ 2) как величина векторная) Сумма векторов отталкивания для каждой точки Обновить положение каждой точки по данным суммарного вектора отталкивания Сдерживают любое из связанного координаты (например, яркости происходит негативное или выше) Повторите шаг 2 до точки стабилизации Для каждой точки, выберите ближайший цвет из исходного набора из N Это далеко не эффективное, но для малых М может быть достаточно эффективной, и это даст около оптимальных результатов. Если на расстоянии цвет функция проста, может быть более детерминированным способом формирования оптимального подмножества.
0 голосов
от
Начните с два списка. CandidateColors, который изначально содержит различных цветов и SortedColors, которая изначально пустая. Выберите любой цвет и снимите его с CandidateColors и положить его в SortedColors. Это первый цвет и станет наиболее распространенным, так что это хорошее место для выбора цвета, что jives хорошо с вашим приложением. Для каждого цвета в CandidateColors вычислить общее расстояние. Общее расстояние равно сумме расстояний от CandidateColor на каждый из цветов в SortedColors. Удалить цвет с наибольшим общее расстояние от CandidateColors и добавить его в конце SortedColors. Если CandidateColors не пуста, вернитесь к шагу 3. Это жадный алгоритм должен дать вам хорошие результаты.
0 голосов
от
Вы могли бы просто отсортировать цветов кандидата на основе максимального расстояния минимальной дистанции, чтобы любой из цветов. Используя цвет Евклидово расстояние:
public double colordistance(Color color0, Color color1) {
    int c0 = color0.getRGB();
    int c1 = color1.getRGB();
    return distance(((c0
0 голосов
от
Вы хотите сказать, что из набора из N цветов, вы должны выбрать цветы M, где m
0 голосов
от
Вы можете разбить их в RGB в шестнадцатеричном формате, так что вы можете сравнить Р С Р в другой цвет, совпадает с G и B. Же формат, как HTML
XX XX XX
RR GG BB

00 00 00 = black
ff ff ff = white
ff 00 00 = red
00 ff 00 = green
00 00 ff = blue
Поэтому единственное, что вам нужно решить, насколько близко вы хотите, чтобы цвета и какая разница приемлемым для сегментов должны быть рассмотрены различные.
...