Введение
Альтернативные представления цветовой модели RGB
HSL и HSV — два наиболее распространенных цилиндрических координатных представления точек в цветовой модели RGB. Оба представления перестраивают геометрию RGB, стремясь быть более интуитивными и соответствующими восприятию, чем картезианское (кубическое) представление. Разработанные в 1970-х годах для приложений компьютерной графики, HSL и HSV сегодня используются в цветовых палитрах, в программах для редактирования изображений и реже — в анализе изображений и компьютерном зрении. HSL расшифровывается как оттенок, насыщенность и светлота, и часто также называется HLS. HSV расшифровывается как оттенок, насыщенность и значение, и также часто называется HSB (B — яркость). Третья модель, часто используемая в приложениях компьютерного зрения, — HSI (оттенок, насыщенность и интенсивность). Однако, хотя эти определения обычно согласованы, они не стандартизированы, и любая из этих аббревиатур может применяться к любой из трех или нескольким другим связанным цилиндрическим моделям. (Технические определения этих терминов приведены ниже.) В каждом цилиндре угол вокруг центральной вертикальной оси соответствует «оттенку», расстояние от оси — «насыщенности», а расстояние вдоль оси — «светлоте», «значению» или «яркости». Важно отметить, что хотя «оттенок» в HSL и HSV относится к одному и тому же атрибуту, их определения «насыщенности» существенно различаются. Поскольку HSL и HSV являются простыми преобразованиями RGB-моделей, зависящих от устройства, физические цвета, которые они определяют, зависят от цветов красного, зеленого и синего каналов устройства или конкретного цветового пространства RGB, а также от гамма-коррекции, используемой для представления величин этих каналов. Таким образом, каждое уникальное RGB-устройство имеет свои уникальные HSL- и HSV-пространства, и числовые значения HSL или HSV описывают разные цвета для каждого базового RGB-пространства. Оба этих представления широко используются в компьютерной графике, и одно из них часто удобнее, чем RGB, но оба также подвергаются критике за недостаточное разделение цветообразующих атрибутов или за отсутствие перцептивной однородности. Другие, более ресурсоемкие модели, такие как CIELAB или CIECAM02, считаются более эффективными в достижении этих целей.
Основной принцип
HSL и HSV представляют собой цилиндрические геометрии (рис. 2), с цветовым тоном, их угловым измерением, начинающимся с красного первичного цвета на 0°, проходящим через зеленый первичный цвет на 120° и синий первичный цвет на 240°, а затем возвращающимся к красному на 360°. В каждой геометрии центральная вертикальная ось включает нейтральные, ахроматические или серые цвета, варьирующиеся от белого при светлоте 1 (значении 1) до черного при светлоте 0 (значении 0). В обеих геометриях аддитивные первичные и вторичные цвета – красный, желтый, зеленый, голубой, синий и пурпурный – и линейные смеси между смежными парами этих цветов, иногда называемые чистыми цветами, расположены вокруг внешнего края цилиндра с насыщенностью 1. Эти насыщенные цвета имеют светлоту 0,5 в HSL, а в HSV – значение 1. Смешивание этих чистых цветов с черным, получение так называемых оттенков, не изменяет насыщенность. В HSL насыщенность также не изменяется при добавлении белого, и только смеси с черным и белым, называемые тонами, имеют насыщенность менее 1. В HSV добавление белого снижает насыщенность. Поскольку эти определения насыщенности, в которых очень темные (в обеих моделях) или очень светлые (в HSL) цвета, близкие к нейтральным, считаются полностью насыщенными (например, снизу справа в разрезанном цилиндре HSL или сверху справа), противоречат интуитивному понятию чистоты цвета, часто вместо этого изображают коническое или биконическое тело (рис. 3), где то, что в этой статье называется хромой, является радиальным измерением (равным диапазону значений RGB), а не насыщенностью (где насыщенность равна хроме, деленной на максимальную хрому в данном срезе (би)конуса). Сбивает с толку то, что на таких диаграммах это радиальное измерение обычно обозначается как "насыщенность", размывая или стирая различие между насыщенностью и хромой. Как описано ниже, вычисление хромы является полезным шагом при создании каждой модели. Поскольку такая промежуточная модель – с измерениями цветовой тон, хрома и значение HSV или светлота HSL – имеет форму конуса или биконуса, HSV часто называют "гексаконической моделью", а HSL – "бигексаконической моделью" (рис. 8).
Мотивация
Большинство телевизоров, компьютерных дисплеев и проекторов создают цвета, комбинируя красный, зеленый и синий свет в различных интенсивностях – так называемые аддитивные основные цвета RGB. Полученные смеси в цветовом пространстве RGB могут воспроизводить широкий спектр цветов (называемый цветовым охватом); однако, взаимосвязь между составляющими количествами красного, зеленого и синего света и результирующим цветом неинтуитивна, особенно для неопытных пользователей, а также для тех, кто знаком с вычитающим смешением цветов красок или традиционными моделями художников, основанными на оттенках и тонах (рис. 4). Более того, ни аддитивные, ни вычитающие цветовые модели не определяют цветовые отношения так, как это делает человеческий глаз. Например, представим, что у нас есть RGB-дисплей, цвет которого управляется тремя ползунками в диапазоне от 0 до 255, каждый из которых контролирует интенсивность красного, зеленого и синего основных цветов. Если мы начнем с относительно яркого оранжевого цвета со значениями sRGB R = 217, G = 118, B = 33, и захотим уменьшить его насыщенность вдвое, чтобы получить менее насыщенный оранжевый цвет, нам потребуется переместить ползунки, уменьшив R на 31, увеличив G на 24 и увеличив B на 59, как показано ниже. Начиная с 1950-х годов, цветное телевидение использовало совместимую цветовую систему, в которой сигналы "яркости" и "цветности" кодировались раздельно, чтобы существующие, немодифицированные черно-белые телевизоры могли по-прежнему принимать цветное вещание и отображать монохромное изображение. В попытке учесть более традиционные и интуитивно понятные модели смешивания цветов, пионеры компьютерной графики из PARC и NYIT представили модель HSV для компьютерных дисплеев в середине 1970-х годов, которая была формально описана Элви Рэем Смитом в августовском выпуске журнала Computer Graphics за 1978 год. В том же выпуске Джоблов и Гринберг описали модель HSL, чьи параметры они обозначили как тон, хроматичность и интенсивность, и сравнили ее с HSV (рис. 1). Их модель была основана больше на том, как цвета организованы и концептуализированы в человеческом зрении с точки зрения других цветовых атрибутов, таких как тон, светлота и хроматичность, а также на традиционных методах смешивания цветов, например, в живописи, которые включают смешивание ярких пигментов с черным или белым для получения более светлых, темных или менее насыщенных цветов. В следующем году, в 1979 году, на SIGGRAPH компания Tektronix представила графические терминалы, использующие HSL для обозначения цвета, а Комитет по стандартам компьютерной графики рекомендовала ее в своем ежегодном отчете о состоянии (рис. 7). Эти модели были полезны не только потому, что они были более интуитивными, чем исходные значения RGB, но и потому, что преобразования в RGB и из RGB были чрезвычайно быстрыми в вычислении: они могли выполняться в реальном времени на аппаратном обеспечении 1970-х годов. Следовательно, эти модели и аналогичные им стали широко распространены в программном обеспечении для редактирования изображений и графики с тех пор. Некоторые из их применений описаны ниже.
Атрибуты создания цвета
Размеры геометрий HSL и HSV – простые преобразования RGB-модели, не основанной на восприятии, – не связаны напрямую с фотометрическими атрибутами цвета с теми же названиями, как это определено учеными, такими как CIE или ASTM. Тем не менее, стоит рассмотреть эти определения, прежде чем приступать к выводу наших моделей. Определения атрибутов цвета, представленные ниже:
Оттенок – "атрибут зрительного ощущения, в соответствии с которым область представляется похожей на один из воспринимаемых цветов: красный, желтый, зеленый и синий, или на комбинацию двух из них". В работе четко указано, что "мы будем считать RGB-монитор линейным устройством", и, следовательно, HSV был разработан с использованием линейного RGB. Мы опустим штрихи, а обозначения R, G и B следует понимать как три атрибута исходного RGB-пространства, независимо от того, применяется ли к нему гамма-коррекция или нет. – и наклонили его так, чтобы черный цвет находился в начале координат, а белый – непосредственно над ним по вертикальной оси, после чего измерили оттенок цветов в кубе, определяя его углом вокруг этой оси, начиная с красного на 0°. Затем была разработана характеристика яркости/значения/светлоты и определена насыщенность, изменяющаяся от 0 вдоль оси до 1 в наиболее красочной точке для каждой пары других параметров. (Функция atan2, "арктангенс двух аргументов", вычисляет угол по паре декартовых координат.) Обратите внимание, что эти два определения оттенка (H и H2) почти совпадают, с максимальной разницей между ними для любого цвета около 1,12°, которая наблюдается в двенадцати конкретных оттенках, например, H = 13,38°, H2 = 12,26°, и H = H2 для каждого кратного 30°. Два определения хроматичности (C и C2) различаются более существенно: они равны в углах нашего шестиугольника, но в точках, находящихся на полпути между двумя углами, например, H = H2 = 30°, C = 1, но разница составляет около 13,4%.
Насыщенность
При кодировании цветов в модели оттенок/светлота/хроматичность или оттенок/значение/хроматичность (используя определения из двух предыдущих разделов), не все комбинации светлоты (или значения) и хроматичности имеют смысл: то есть половина цветов, представимых с помощью H ∈ [0°, 360°), C ∈ [0, 1], и V ∈ [0, 1], находятся за пределами цветового охвата RGB (серые области на диаграммах на рисунке 14). Создатели этих моделей считали это проблемой для некоторых задач. Например, в интерфейсе выбора цвета с двумя измерениями, представленными в виде прямоугольника, и третьим – в виде ползунка, половина этого прямоугольника оказывается неиспользуемой. Теперь представим, что у нас есть ползунок для светлоты: намерение пользователя при изменении этого ползунка может быть неоднозначным: как программное обеспечение должно обрабатывать цвета, выходящие за пределы цветового охвата? Или, наоборот, если пользователь выбрал максимально насыщенный темно-фиолетовый цвет, а затем перемещает ползунок светлоты вверх, что следует сделать: пользователь предпочтет видеть более светлый фиолетовый, остающийся максимально насыщенным для данного оттенка и светлоты, или более светлый фиолетовый с точно такой же хроматичностью, как у исходного цвета? Использование одного и того же названия для этих трех различных определений насыщенности приводит к путанице, поскольку эти три атрибута описывают существенно разные цветовые зависимости. В HSV и HSI этот термин приблизительно соответствует психометрическому определению хроматичности цвета относительно его собственной светлоты, но в HSL он сильно отличается. Более того, слово "насыщенность" также часто используется для обозначения одного из измерений, которые мы называем хроматичностью (C или C2).
Using the same name for these three different definitions of saturation leads to some confusion, as the three attributes describe substantially different color relationships; in HSV and HSI, the term roughly matches the psychometric definition, of a chroma of a color relative to its own lightness, but in HSL it does not come close. Even worse, the word saturation is also often used for one of the measurements we call chroma above (C or C2).
Примеры
Все значения параметров, представленные ниже, заданы в интервале [0, 1], за исключением значений для H и H2, которые находятся в интервале [0°, 360°). #FFFFFF 1.000 1.000 1.000n/an/a 0.000 0.000 1.000 1.000 1.000 1.000 0.000 0.000 0.000#808080 0.500 0.500 0.500n/an/a 0.000 0.000 0.500 0.500 0.500 0.500 0.000 0.000 0.000#000000 0.000 0.000 0.000n/an/a 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000#FF0000 1.000 0.000 0.000 0.0° 0.0° 1.000 1.000 1.000 0.500 0.333 0.299 1.000 1.000 1.000#BFBF00 0.750 0.750 0.000 60.0° 60.0° 0.750 0.750 0.750 0.375 0.500 0.664 1.000 1.000 1.000#008000 0.000 0.500 0.000 120.0° 120.0° 0.500 0.500 0.500 0.250 0.167 0.293 1.000 1.000 1.000#80FFFF 0.500 1.000 1.000 180.0° 180.0° 0.500 0.500 1.000 0.750 0.833 0.850 0.500 1.000 0.400#8080FF 0.500 0.500 1.000 240.0° 240.0° 0.500 0.500 1.000 0.750 0.667 0.557 0.500 1.000 0.250#BF40BF 0.750 0.250 0.750 300.0° 300.0° 0.500 0.500 0.750 0.500 0.583 0.457 0.667 0.500 0.571#A0A424 0.628 0.643 0.142 61.8° 61.5° 0.501 0.494 0.643 0.393 0.471 0.581 0.779 0.638 0.699#411BEA 0.255 0.104 0.918 251.1° 250.0° 0.814 0.750 0.918 0.511 0.426 0.242 0.887 0.832 0.756#1EAC41 0.116 0.675 0.255 134.9° 133.8° 0.559 0.504 0.675 0.396 0.349 0.460 0.828 0.707 0.667#F0C80E 0.941 0.785 0.053 49.5° 50.5° 0.888 0.821 0.941 0.497 0.593 0.748 0.944 0.893 0.911#B430E5 0.704 0.187 0.897 283.7° 284.8° 0.710 0.636 0.897 0.542 0.596 0.423 0.792 0.775 0.686#ED7651 0.931 0.463 0.316 14.3° 13.2° 0.615 0.556 0.931 0.624 0.570 0.586 0.661 0.817 0.446#FEF888 0.998 0.974 0.532 56.9° 57.4° 0.466 0.454 0.998 0.765 0.835 0.931 0.467 0.991 0.363#19CB97 0.099 0.795 0.591 162.4° 163.4° 0.696 0.620 0.795 0.447 0.495 0.564 0.875 0.779 0.800#362698 0.211 0.149 0.597 248.3° 247.3° 0.448 0.420 0.597 0.373 0.319 0.219 0.750 0.601 0.533#7E7EB8 0.495 0.493 0.721 240.5° 240.4° 0.228 0.227 0.721 0.607 0.570 0.520 0.316 0.290 0.135
Использование в конечных пользователей программного обеспечения
Первоначальное предназначение HSL и HSV и аналогичных моделей, а также их наиболее распространенное современное применение – в инструментах выбора цвета. В самом простом случае некоторые из таких цветовых выборщиков предоставляют три ползунка, по одному для каждого атрибута. Большинство, однако, показывают двумерный срез модели вместе с ползунком, контролирующим, какой конкретно срез отображается. Последний тип графического интерфейса отличается большим разнообразием из-за выбора цилиндров, шестиугольных призм или конусов/биконусов, которые предлагают модели (см. диаграмму в верхней части страницы). Справа показаны несколько цветовых выборщиков 1990-х годов, большинство из которых практически не изменились с тех пор: сегодня почти каждый компьютерный цветовой выборщик использует HSL или HSV, по крайней мере, как опцию. Некоторые более сложные варианты предназначены для выбора целых наборов цветов, основывая свои предложения совместимых цветов на отношениях HSL или HSV между ними. Большинство веб-приложений, требующих выбора цвета, также основывают свои инструменты на HSL или HSV, и существуют предварительно упакованные выборщики цветов с открытым исходным кодом для большинства основных веб-фронтенд-фреймворков. Спецификация CSS 3 позволяет веб-разработчикам задавать цвета для своих страниц непосредственно с помощью координат HSL. HSL и HSV иногда используются для определения градиентов для визуализации данных, например, на картах или медицинских изображениях. Так, популярная ГИС-программа ArcGIS исторически применяла настраиваемые градиенты на основе HSV к численным географическим данным. Рис. 17. Модификатор цвета xv на основе HSV. Рис. 18. Инструмент «Оттенок/Насыщенность» в Photoshop 2.5, ок. 1992 г. Программное обеспечение для редактирования изображений также обычно включает инструменты для настройки цветов со ссылкой на координаты HSL или HSV или на координаты в модели, основанной на «интенсивности» или луме, определенной выше. В частности, инструменты с парой ползунков «Оттенок» и «Насыщенность» распространены, начиная как минимум с конца 1980-х годов, но также были реализованы различные более сложные цветовые инструменты. Например, Unix-просмотрщик изображений и цветовой редактор xv позволяли вращать и изменять размер шести определяемых пользователем диапазонов оттенков (H), включали дископодобный регулятор для управления насыщенностью (SHSV) и интерфейс, подобный кривым, для управления светлотой (V) – см. рис. 17. Редактор изображений Picture Window Pro включает в себя инструмент «Коррекция цвета», который позволяет выполнять сложное переназначение точек на плоскости «Оттенок/Насыщенность» относительно пространства HSL или HSV. Эти модели также используются видеоредакторами. Например, Avid и Final Cut Pro включают в себя цветовые инструменты на основе HSL или аналогичной геометрии для настройки цвета в видео. С помощью инструмента Avid пользователи выбирают вектор, щелкая точку внутри круга «Оттенок/Насыщенность», чтобы сместить все цвета на определенном уровне светлоты (тени, средние тона, блики) по этому вектору. Начиная с версии 4.0, режимы наложения Adobe Photoshop «Luminosity», «Hue», «Saturation» и «Color» компонуют слои, используя цветовую геометрию luma/chroma/hue. Они были широко скопированы, но несколько имитаторов используют вместо них геометрию HSL (например, PhotoImpact, Paint Shop Pro) или HSV.
Использование в анализе изображений
HSL, HSV, HSI или связанные с ними модели часто используются в компьютерном зрении и анализе изображений для выявления признаков или сегментации изображений. Области применения таких инструментов включают обнаружение объектов, например, в системах машинного зрения для роботов; распознавание объектов, например, лиц, текста или автомобильных номеров; поиск изображений по содержанию; и анализ медицинских изображений.