What is a color space?
Цветовое пространство — это «карта» всех возможных цветов, которую может воспроизвести устройство.
1. Цвет ≠ свет
Свет — физическая волна, цвет — субъективное ощущение мозга. Один и тот же спектр может выглядеть по-разному у разных людей.
2. Глаз как камера
Сетчатка содержит три типа колбочек: S, M, L. Их сигналы превращаются в три числа (XYZ), описывающие цвет.
3. XYZ и «лошадиная подкова»
Международная система CIE-XYZ строит 2D-диаграмму всех видимых цветов. Внутри неё — треугольники sRGB, P3 и Rec.2020: чем больше треугольник, тем больше охват.
4. RGB — не просто «красный, зелёный, синий»
Каждое пространство задаёт точные координаты своих «красного», «зелёного» и «синего». Перекрасить изображение между пространствами можно матрицей 3×3, но если цвета выходят за границы треугольника, приходится «сжимать» их (rendering intent).
5. Гамма-кривая
Люди чувствуют свет нелинейно. Поэтому sRGB и большинство RGB-пространств применяют гамму ≈ 2.2, чтобы экономить биты и не хранить невидимые тени.
6. Не только RGB
- HSV/HSL — удобны для палитр, но не физически точны.
- LAB/LCH — основаны на восприятии, позволяют менять яркость без сдвига оттенка.
- CMYK — субтрактивная модель печати, зависит от типа бумаги и чернил.
7. Профили и ICC
Файл .icc
описывает, как устройство интерпретирует числа. Без профиля «255, 0, 0» может быть ярко-красным на одном экране и тусклым на другом.
8. Практические советы
- Работайте в широком пространстве (P3/Rec.2020), экспортируйте в sRGB для веба.
- Проверяйте «out-of-gamut» перед печатью.
- Не используйте HSL для научных задач.
Комментарии (37)
- Читатели высоко оценили статью как исчерпывающее введение в цветовые пространства, особенно отметив упор на восприятие и новые модели вроде Oklab.
- Подняты практические темы: сложные профили принтеров, HDR, «супер-белые/супер-чёрные» значения, необходимость регулярной калибровки колориметров.
- Упомянуты инструменты и ресурсы: Python-библиотека colour-science, LCMS, видео по истории цветовых пространств.
- Обсуждались нетривиальные эффекты: необратимость преобразований, региональные вкусы к «перенасыщенным» цветам, трудности с фиолетовым на дорогих принтерах.
- Подчеркнута важность цвета в прикладных задачах: улучшение алгоритмов детекции, компактное хранение данных, VFX и робототехника.
What are OKLCH colors? 🔥 Горячее 💬 Длинная дискуссия
OKLCH — новая цветовая модель, построенная на пространстве OKLab. Она равномерна по восприятию: одинаковые шаги по Lightness, Chroma, Hue выглядят одинаково яркими и насыщенными.
- Lightness 0–1 (или 0–100 %)
- Chroma — «чистота» цвета
- Hue — тон, 0–360°
Плюсы OKLCH
- Меняя только Hue, получаем равные по яркости цвета (в HSL они «плывут»).
- Изменяя Lightness, сохраняется оттенок без сдвига в серый или фиолетовый.
- Градиенты ровные, без грязных средних точек.
- Поддерживает Display-P3 и другие широкие гамуты.
Ограничения
- Очень высокие значения Chroma могут выходить за пределы реальных экранов и обрезаться.
- Старые браузеры не понимают
oklch()
; используйте@supports
и резервные sRGB-значения.
CSS-пример с фолбеком
:root {
--brand: #0066ff;
}
@supports (color: oklch(0 0 0)) {
:root { --brand: oklch(0.55 0.18 260); }
}
Комментарии (173)
- OKLCH — это цветовое пространство на базе OKLab (перцептивно-равномерное), где задаются Lightness, Chroma и Hue; название — «OK, it does an ok job».
- Градиенты в OKLCH могут «ехать» по кругу hue и давать неожиданные цвета; для плавности чаще берут OKLab-интерполяцию.
- Основные плюсы: равномерная яркость, отсутствие «мутных» средних, удобные относительные цвета в CSS.
- Минусы: неинтуитивная chroma, разные максимумы в зависимости от hue/lightness, нужно учитывать гамут-ограничения.
- Полезные ресурсы: oklch.com, офлайн-пикеры, конвертеры и статья Evil Martians.