HSB против HSL против HSV

Я делаю класс Color как часть очень простого графического API на C ++. Поэтому я решил взглянуть на платформу Microsoft .NET и заметил, что их класс Color имеет функции для HSB.

Затем я начал исследование, чтобы определить, следует ли мне предоставлять HSB, HSL или HSV или ВСЕ из них в моем классе.

Итак, у меня есть 3 вопроса по HSB, HSL, HSV:

  1. HSB такой же, как HSL?

  2. Если нет, то почему нет HSBL или даже HSBLV?

  3. Я нахожу много разных методов расчета этих значений, может ли кто-нибудь показать мне САМЫЕ БЫСТРЫЕ?


person Giwrgos Tsopanoglou    schedule 27.03.2013    source источник
comment
HSV == HSB. HSL! = HSB.   -  person Richard J. Ross III    schedule 28.03.2013
comment
@ RichardJ.RossIII Мне не удалось найти достойного сравнения по ним. Вот почему я разместил это :)   -  person Giwrgos Tsopanoglou    schedule 28.03.2013


Ответы (5)


HSB такой же, как HSL?

Нет, HSB такой же, как HSV, но HSL отличается. Все это используется как удобный способ представления цветов RGB. В статье Википедии о HSL и HSV объясняются различия с использованием цветных цилиндров: HSL и HSV В основном оттенок - это то же самое для HSB и HSL, но Насыщенность принимает разные значения, а Яркость и Светлота также разные.

Если нет, то почему нет HSBL или даже HSBLV?

Я не понимаю. И HSB / HSV, и HSL могут представлять любой цвет RGB. Наличие B и L независимо друг от друга невозможно из-за способа их определения. Заданные значения яркости и насыщенности HSB связаны с фиксированной яркостью. На самом деле преобразование между ними очень просто.

Я нахожу много разных методов расчета этих значений, может ли кто-нибудь показать мне САМЫЕ БЫСТРЫЕ?

Здесь есть аналогичный вопрос для расчета HSB из RGB: Fast , оптимизированный и точный код преобразования RGB ‹-> HSB в C Там может помочь реализация Java. Для преобразования между HSB / HSV и HSL см. HSL против HSB против HSV

person JoseV    schedule 26.10.2013
comment
Хотя это очень старый вопрос, спасибо за ответ :) - person Giwrgos Tsopanoglou; 27.10.2013
comment
Ссылки устарели (см. HSL против HSB против HSV) - person SwiftMatt; 08.03.2021
comment
И HSB / HSV, и HSL могут представлять любой цвет RGB. Верно ли и обратное? - person zzxjoanw; 31.03.2021

Изначально разница между яркостью и легкостью есть. «Яркость» используется для субтрактивных цветов и «Яркость» для аддитивных цветов. Теперь, если ваша программа имеет дело с субтрактивными цветами, такими как система CMYK, лучше использовать HSB, иначе лучше HSL.

person aziz    schedule 31.08.2019

  1. HSB! = HSL && HSB == HSV
  2. HSBL и HSBLV не существует, потому что Lightness и Brightness (Value) заменяют
  3. Вот методы преобразования (подробнее о вики HSL2RGB и HSV2RGB)

HSV -> RGB (реализация в js здесь)

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

RGB -> HSV (реализация в js здесь)

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

person Kamil Kiełczewski    schedule 08.01.2019

Если вы используете пользовательский интерфейс, имеет смысл использовать HSL, а не HSV, поскольку вам нужно контролировать значение яркости (L) вашей цветовой палитры.

person user1034912    schedule 03.05.2021

HSB и HSV одинаковы, но HSL отличается. HSB обозначает оттенок, насыщенность и яркость, HSV обозначает оттенок, насыщенность и значение. HSL означает оттенок, насыщенность, свет. Вот визуальное отличие от Medium.com: https://i.stack.imgur.com/nX8NL.png.

person Community    schedule 06.12.2020