Теория
Оттенок серого получают из цветного пикселя, заменяя цвет одним числом — яркостью. Простейший способ — среднее арифметическое компонент; точнее — luminance, взвешенная сумма \(0{,}299R + 0{,}587G + 0{,}114B\), повторяющая чувствительность глаза: зелёный воспринимается ярче синего.
Третий способ — desaturate, когда сохраняется не яркость, а светлота цветовой модели. Формулы дают разный серый для одного цвета, поэтому способ выбирают под задачу: luminance — для контраста текста, среднее — для быстрой прикидки.
Важно: веса luminance не случайны — это вклад компонент в воспринимаемую яркость: при равных значениях RGB любой способ даёт одинаковый серый.
Пример с решением
- Условие. Переведите \((255, 0, 0)\) в серый по luminance.
- Формула. \(Y = 0{,}299R + 0{,}587G + 0{,}114B\).
- Подстановка. \(Y = 0{,}299 \times 255 + 0 + 0\).
- Вычисление. \(Y \approx 76\).
- Ответ. Серый \(rgb(76, 76, 76)\) — красный темнеет из-за низкого веса компоненты R. Калькулятор с этим цветом покажет результат всех трёх формул.
Главное
- Среднее — простое арифметическое компонент.
- Luminance — \(0{,}299R + 0{,}587G + 0{,}114B\), как видит глаз.
- Desaturate — светлота цветовой модели.