Как избежать полос яркого цвета в градиентах?


13

Так что это скорее научная визуализация, чем графический дизайн, но я думаю, что теория та же самая. В цветовых картах, используемых для визуализации данных, часто встречаются полосы цвета, которые не должны появляться. Я полагаю, что они - форма групп Маха ?

Например, я использовал эту биполярную карту цветов, и она производит изображения, подобные этому:

введите описание изображения здесь

Это почти как кольцо из неонового апельсина около 0,2, и такое же кольцо у синего около -0,2. Вот график компонентов RGB и расчет относительной яркости черного цвета:

введите описание изображения здесь

Я вручную настроил его, чтобы попытаться избавиться от групп, и несколько преуспел, но я не совсем понимаю теорию, стоящую за этим:

введите описание изображения здесь

введите описание изображения здесь

Это лучше, но я все еще вижу группы в этом.

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

введите описание изображения здесь введите описание изображения здесь

Желтые и оранжевые полосы все еще там, они просто сдвинуты и немного смазаны. Таким образом, разрывы на графике яркости не являются причиной проблемы.

Как мне плавно перейти через цвета без полос? Существуют ли правила для создания плавных кривых через цветовое пространство Lab или что-то еще? ( Правка: ооо, я нашел пример для этого : «Цветовая шкала вычисляется с использованием цветового пространства L a b *. Она следует по равномерному наклону вдоль направления L * и следует по полукруглому пути в a * -b * самолет.")

Обновление: вот график этой цветовой карты в кубе RGB, показывающий острые углы, о которых говорит пользователь 568458:

введите описание изображения здесь


1
обратите внимание, я сделал комментарий о воспринимающих группах (ниже), но это было до того, как я действительно посмотрел на вопрос. Я вижу, что вы говорите о том, как выделяются две конкретные цветовые гаммы.
Горацио

1
Хорошая диаграмма! Это именно то , что я имею в виду под острыми углами, я представлял , цветной кубик , как этот или подобный . Я добавил грубую, но, надеюсь, полезную иллюстрацию того, что я имею в виду в своем ответе. (конечно, есть также вторая пара острых углов в точках, где красная дорожка добавляет зеленый, чтобы достичь белого, и где синяя дорожка добавляет красный, чтобы достичь белого)
user56reinstatemonica8

Ответы:


6

Не забывайте, что даже если вы работаете со значениями цвета LAB, значения RGB должны выводиться для отображения на экране. В какой-то момент он должен сказать красным, зеленым и синим пикселям экрана, что делать.

Посмотрите на это с точки зрения RGB, и причина существования групп на самом деле довольно проста.

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

  • В красном это то, где происходит переход от плавного увеличения R в RGB к добавлению G, чтобы стать желтым - вокруг # FF0000 до # FF2500
  • Синим цветом, это примерно то, где происходит плавное увеличение B в RGB до добавления G, чтобы стать голубым - от # 0000FF до # 0025FF

И аналогично с нижними графиками, добавляющими желтый к белому: они, по сути, объединяют три градиента. Используя красный градиент в качестве примера:

  • это от # 000000 до # FF0000 (увеличение яркости в терминах HSB, увеличение красного канала в RGB)
  • затем с # FF0000 на # FFFF00 (изменение оттенка в терминах HSB, увеличение зеленого канала в RGB)
  • затем # FFFF00 до #FFFFFF (изменение насыщенности в терминах HSB, увеличение синего канала в RGB)

введите описание изображения здесь

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


Тем не менее , если вы полны решимости пробежать по более широкому спектру (это выглядит неплохо), я бы посмотрел либо на начало добавления второго канала до завершения первого, формирования участка моста между градиентами, либо на наличие небольшая обратная S-образная кривая к скорости, с которой добавляется второй канал (вероятно, оба).

Так что вместо:

  • От 000000 до # FF0000, от 100% черного до 100% красного

  • От FF0000 до # FFFF00, от 100% красного до 100% желтого

  • От FFFF00 до #FFFFFF, от 100% желтого до 100% белого

... это может быть (только предположения от макушки головы, потребуется корректировка):

  • От 000000 до # E90000, от 100% черного до ярко-красного

  • E90000 на # FF2500 (SHORT BRIDGE) ярко-красный (темно) до ярко-красного (слегка оранжевый)

  • FF2500 на # FFE900, ярко-красный (слегка оранжевого) до ярко-желтого (слегка оранжевого цвета)

  • FFE900 на # FFFF25 (SHORT BRIDGE) ярко-желтый (слегка оранжевый) до ярко-желтого (свет)

  • FFFF25 к #FFFFFF, ярко-желтого цвета (светло) до 100% белого

... затем настроить кривые каждую секцию по вкусу :-)


Edit: Вот демонстрация «резки углов» внушения. Это не идеально - это довольно нерафинированное, просто что - то я положил вместе на глаз в течение нескольких минут с помощью Blend Tool Illustrator (неэтилированного объекты в нижней части, чтобы показать цветные точки). Каждый сегмент градиента между каждой цветовой точкой является на 100% линейным, в то время как вы, вероятно, захотите что-то более округлое - и, как следствие, если вы внимательно посмотрите, вы можете заметить полосы.

Результаты, естественно, варьируются между мониторами: на моем «хороший» монитор, это гладкое; на «плохой» монитор я использую для проверки устойчивости веб-изображений (где оригинальные полосы не показывают очень ясно), апельсины всегда появляются покорили делают красные и желтые Ареса кажется ярче, чем присоединяющимся оранжевая, чрезмерно подчеркивая красный и желтые зоны - но вы все еще можете увидеть, что «край» из оригинальных групп в значительной степени ушла.

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

введите описание изображения здесь

Другое преимущество заключается в том, что вы можете использовать более четкий переход черный> один канал больше.


Или та же самая идея о цветном кубе RGB (простите за грубость, это предназначено, чтобы быть демонстративным не точным ...):

введите описание изображения здесь

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


так тлдр; избегайте значений 255 для каналов R, G, B (?)
Горацио

2
@horatio не совсем нет, больше похоже на tldr; избегайте острых углов между участками градиента
user56reinstatemonica8

Все зависит от цветового пространства, используемого для вывода - вы бы увидели те же полосы в дизайне печати, если бы у вас был градиент, например, от чистого белого до чистого пурпурного до чистого фиолетового (100% пурпурный и голубой) до чистого черного ( сделано из 100% C, m, k)
user56reinstatemonica8

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

1
Вот попытка с помощью кривой Безье вместо: flic.kr/p/e1bcFf flic.kr/p/e15wik
эндолиты

1

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

http://nomorebanding.com/


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

1
воспринимаемые полосы являются из цветного квантования. Это проблема с 8-битным представлением на пиксель. Я ничего не знаю о плагине, но использование 16bpp RGB при создании градиентов и затем понижающей дискретизации до 8bpp даст гораздо лучшие результаты с гораздо меньшими полосами, чем построение их в 8bpp.
Горацио

@horatio: Нет, полосы от кривой, принимая острые углы, когда она движется через цветовое пространство восприятия. В частности, в моем примере это цветность, которая достигает пика в этих углах.
эндолит
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.