HSL превосходит цветовые пространства HSI и HSV?

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

Ответ 1

Какой из них лучше всего зависит от того, для чего вы его используете. Но по моему опыту HSL (HLS) имеет неудачное взаимодействие между яркостью и насыщенностью.

Здесь приведен пример уменьшения яркости изображения на 2. Самое левое изображение - оригинал; далее идут результаты с использованием RGB, HLS и HSV:

RGB, HLS, HSV comparison

Обратите внимание на слишком яркие и насыщенные пятна на краю бабочки в HLS, особенно на красном пятне внизу. Это проблема насыщения, о которой я говорил.

Этот пример был создан в Python с помощью colorsys module для конверсий.

Ответ 2

Поскольку ответа пока нет, и поскольку я должен был продолжить исследования, чтобы полностью понять это, я добавлю два цента.

Как и другие, ответ на вопрос, какой из HSL или HSV лучше зависит от того, что вы пытаетесь моделировать и манипулировать.

tl; dr - HSV только "лучше" чем HSL для машинного зрения (с оговорками, читайте ниже). "Лаборатория" и другие формальные цветовые модели гораздо точнее (но дорогостоящие вычислительные) и должны действительно использоваться для более серьезной работы. HSL лучше подходит для приложений "краски" или любого другого, где вам нужен человек, чтобы "установить", "enter" или иначе понимать/понимать значение цвета.

Подробнее см. ниже:




Если вы пытаетесь моделировать, как цвета GENERATED, наиболее интуитивной моделью является HSL, поскольку она почти сразу сопоставляет с тем, как вы смешиваете краски для создания цветов. Например, чтобы создать "темный" желтый цвет, вы смешали бы свою базовую желтую краску с черным цветом. Если для создания более светлого оттенка желтого цвета, вы бы смешали немного белого.

Значения между 50 и 0 в спектре "L" на карте HSL показывают, насколько "черный" должен быть смешан (черный увеличивается от 0 до 100%, так как L уменьшает от 50 до 0).

Значения между 50 и 100 указывают на то, сколько "белого" должно быть смешано (белый изменяется от 0 до 100% при увеличении L от 50 до 100%).

50% "L" дает вам "самую чистую" форму цвета без какого-либо "загрязнения" от белого или черного.


Взгляды из приведенных ниже ссылок:
1. http://forums.getpaint.net/index.php?/topic/22745-hsl-instead-of-hsv/ Последний пост там.
2. http://en.wikipedia.org/wiki/HSL_and_HSV Осмотрите цилиндр цветового пространства для HSL - он дает очень четкое представление о том, какое распределение я говорил.

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


Таким образом, HSL - это очень интуитивный способ понять, как "генерировать" цвет - таким образом, это отличная модель для приложений рисования или любых других приложений, предназначенных для аудитории, используемой для размышления в терминах "оттенок" / "тон" для цвета,




Теперь, на HSV.

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

На мой взгляд, "V" в HSV отображает количество света, брошенного на объект, с предположением, что при нулевом свете объект будет полностью темным и со 100% светом, все будет белый.

Таким образом, в этом изображении яблока точка, которая непосредственно обращена к источнику света, является белой и, скорее всего, имеет значение "V" при 100% тогда как точка внизу, которая полностью находится в тени и нетронутой светом, имеет значение "0". (Я не проверял эти значения, просто думал, что они будут полезны для объяснения).

Таким образом, HSV, похоже, моделирует, как объекты зажжены (и, следовательно, учитывают любую компенсацию, которую вы могли бы выполнить для зеркальных бликов или теней в приложении машинного зрения) ЛУЧШЕ, чем HSL.




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

P.S: Надеюсь, это поможет кому-то.

Ответ 3

Единственное цветовое пространство, которое имеет преимущество и учитывает человеческое восприятие, LAB, в том смысле, что в нем евклидова метрика коррелирует с дифференциацией цвета человека.

Взято прямо из Википедии:

В отличие от цветных моделей RGB и CMYK, цвет Lab предназначен для приблизительное человеческое видение. Он стремится к единообразию восприятия, а его L компонент близко соответствует восприятию человеком легкости

Именно по этой причине многие алгоритмы компьютерного зрения используют пространство LAB

HSV, HSB и HSI не имеют этого свойства. Поэтому ответ "нет", HSL не "превосходит" над HSI и HSV в смысле человеческого восприятия.

Если вы хотите быть ближе к восприятию человека, попробуйте LAB цветовое пространство.

Ответ 4

Я бы сказал, что один НЕТ лучше, чем другой, каждый из них - просто математическое преобразование другого. Различные представления МОЖЕТ сделать манипуляцию с изображением для эффекта, который вы хотите немного легче. Каждый человек будет воспринимать изображения несколько иначе, и использование HSI или HSV может обеспечить небольшую разницу в выходном изображении.

Даже RGB при рассмотрении против системы (т.е. с матрицей пикселей) учитывает восприятие человеком. Когда изображение (с наложением байера) принимает изображение, на каждый 1 красный и синий пиксели есть 2 зеленых пикселя. Мониторы все еще выводятся в RGB (хотя большинство из них имеют только один зеленый пиксель для каждого красного и синего). Новый ТВ-монитор от Sharp теперь имеет желтый выходной пиксель. Причина, по которой они это сделали, связана с тем, что в фактическом частотном спектре имеется желтая полоса, поэтому для того, чтобы лучше представлять цвет, они добавили желтую полосу (или пиксель).

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

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

http://hyperphysics.phy-astr.gsu.edu/hbase/vision/colcon.html

http://www.physicsclassroom.com/class/light/u12l2b.cfm

Короче говоря, я не думаю, что кто-то лучше другого, просто разные представления.

http://en.wikipedia.org/wiki/Color

Ответ 5

На самом деле, я бы сказал, что HSV лучше учитывает зрительное восприятие человека, если вы понимаете, что в HSV насыщенность - это чистота цвета, а значение - это интенсивность этого цвета, а не яркость в целом. Возьмите это изображение, например...
Spectrum

Вот отображение насыщенности HSL (слева) и яркости HSL (справа)...
HSL saturationenter image description here
Обратите внимание, что насыщенность составляет 100%, пока вы не достигнете белого на самом верху, где он внезапно падает. Это отображение не воспринимается при взгляде на исходное изображение. То же самое касается отображения яркости. Хотя это более четкий градиент, он лишь смутно совпадает визуально. Сравните это с насыщенностью ВПГ (слева) и значением ВПГ (справа) ниже...
HSV Saturationenter image description here
Здесь видно, что отображение насыщенности падает, поскольку цвет становится более белым. Кроме того, отображение значения может быть очень четко видно на исходном изображении. Это становится более очевидным при рассмотрении сопоставлений для отдельных цветовых каналов исходного изображения (не черные области почти идеально соответствуют сопоставлению значений, но нигде не близко к сопоставлению яркости)...
Red ChannelGreen ChannelBlue Channel
Исходя из этой информации, я должен сказать, что HSV лучше работает с реальными изображениями (особенно с фотографиями), тогда как HSL, возможно, лучше только для выбора цветов в цвете. подборщика.

С другой стороны, значение в HSV является инверсией черного в CMYK.

Другой аргумент в пользу использования HSV над HSL состоит в том, что HSV имеет гораздо меньше комбинаций различных значений, которые могут привести к одному и тому же цвету, поскольку HSL теряет около половины своего разрешения до своего верхнего конуса. Допустим, вы использовали байты для представления компонентов - тем самым предоставив каждому компоненту 256 уникальных уровней. Максимальное количество уникальных выходов RGB, которое это даст в HSL, составляет 4 372 984 цвета (26% доступной гаммы RGB). В HSV этот показатель достигает 9 830 041 (59% от RGB-гаммы)... в два раза больше. А разрешение диапазона от 0 до 359 для оттенка приведет к 11 780 015 для HSV, но только 5 518 160 для HSL.

Ответ 6

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

HSL/HSV отлично подходят для простой написания программных функций для обработки цвета, не имея дело с кучей крайних случаев. Они ужасно точно воспроизводят человеческое восприятие цвета.

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

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

Проблема с RGB в смысле программирования заключается в том, что он по существу кубичен в представлении, тогда как HSL/HSV разрешаются в радиусе, что значительно упрощает создание "цветового круга" программным путем. С RGB это очень трудно сделать без написания огромного количества кода, который он обрабатывает, потому что он решает кубически с точки зрения представления данных. Тем не менее, RGB очень точно отражает человеческое зрение, и это также основа реального оборудования, из которого состоит монитор.

TLDR; Если вы хотите получить мертвую окраску и не возражаете против дополнительной работы, все время используйте RGB. Если вы хотите использовать "достаточно хорошую" цветовую утилиту и, возможно, позже выставить заявки на ошибки, с которыми вы ничего не сможете поделать, используйте HSL/HSV. Если вы печатаете, используйте CMYK не потому, что это хорошо, а потому, что принтер захлебнется, если вы его не используете, даже если он плохо работает.


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

Цвет с художественной точки зрения в основном представлен в масштабе пяти плоскостей.

  • Пигмент (или оттенок) - фактический основной цвет, к которому вы стремитесь.
  • Оттенок, представляющий собой пигмент, смешанный с чистым белым.
  • Оттенок, представляющий собой пигмент, смешанный с чистым черным.
  • Тон (или "Истинный тон"), представляющий собой пигмент, смешанный с различной степенью серого.
  • Насыщенный тон (или "земляные тона"), представляющий собой пигмент, смешанный с дополнительным цветом. Насыщенные тона не отображаются на цветовом круге, потому что они по своей сути представляют собой смесь противоположностей и визуально отражают немного по-другому, чем "Истинный тон", из-за незначительных расхождений в физических носителях, которые невозможно эффективно воспроизвести на машине.

Типичная проблема с программным представлением этой парадигмы состоит в том, что на самом деле не существует какого-либо хорошего способа представления насыщенных тонов. У художника материала практически нет проблем с тем, чтобы делать это с краской, потому что тонкие несоответствия мазков кисти позволяют отражать основную разницу между дополнениями в композиции. Точно так же и цифровая фотография, и видео - это отстой, но реальный аналоговый фильм не так уж и плох. Это больше отражается на фотографии и видео, чем на компьютерной графике, потому что текстура всего, что находится в области просмотра камеры, улавливает некоторые из них, но все же значительно меньше, чем на самом деле при просмотре одной и той же вещи (поэтому вы никогда не сможете по-настоящему хорошая картина заката без тонны пост-продакшн, чтобы взломать буквальный вид его обратно, например). Однако компьютеры не способны воспроизвести эти расхождения, потому что цвет в основном будет преобразовываться в непротиворечивую матрицу отображения пикселей RGB, которая визуально выглядит как ровный обычный тон. Не существует вычислительного цветового пространства, которое точно отражает насыщенные тона, потому что нет вычислительного способа немного изменить цвет в рассеянном, неповторяющемся случайном порядке в пространстве и по-прежнему иметь один уникальный идентификатор, и вы не можете хорошо это сделать. сохраните его как данные без уникального идентификатора.

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

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


Вам также необходимо учитывать различие между цветом, представленным как свет, и цветом, представленным как пигмент. RGB является представлением цвета, представленного в виде света, и соответствует основным значениям, используемым для смешивания освещения для представления цвета, и делает это с отображением 1:1. CMYK представляет спектр пигментации. Различие состоит в том, что когда вы смешиваете свет в равной мере, вы получаете белый, а когда вы смешиваете пигмент в равной мере, вы получаете черный. Если вы программируете какую-либо утилиту, которая использует компьютер, вы работаете со светом, потому что пиксели по сути являются одним узлом на мониторе, который излучает световые волны RGB. Причина, по которой я сказал, что CMYK отстой, не в том, что он не точный, а в том, что он не точен, когда вы пытаетесь представить его как свет, что имеет место на всех компьютерных мониторах. Если вы используете настоящую краску, маркеры, цветные карандаши и т.д., Это работает просто отлично. Однако представление CMYK на экране все еще должно разрешаться в RGB, потому что именно так работает монитор компьютера, поэтому он всегда немного отличается от того, как он выглядит на дисплее.


Не уходите в гигантскую сторону, так как это форум по программированию, и вы задали вопрос как программист. Тем не менее, если вы стремитесь к точности, есть определенный "не технический" аспект, который необходимо учитывать с точки зрения того, насколько эффективна ваша работа в достижении желаемой цели, а именно, чтобы хорошо противостоять зрительному восприятию, которое не особенно хорошо представлено в большинство вычислительных цветовых пространств. В конце концов, цель любой цветовой утилиты - сделать так, чтобы она выглядела правильно с точки зрения человеческого восприятия цвета. HSL/HSV оба терпят неудачу при этом. Они выдающиеся, потому что их легко кодировать, и только по этой причине. Если у вас короткий срок, они являются приемлемыми ответами. Если вы хотите что-то, что действительно будет работать хорошо, тогда вам нужно сделать тяжелую работу и подумать над этим, что учитывает ваша аудитория, когда они решают, хотят ли они использовать ваш инструмент или нет.


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

Теория цвета вики

Базовая разбивка оттенков, оттенков, тонов и оттенков

Земные тона (или богатые тона, если вы предпочитаете)

Основные основы цветовых решений