Какой алгоритм Photoshop использует для десатурации изображения?

Я пытаюсь выяснить, какой математический алгоритм, который программы, как использовать Photoshop, когда они обесцветить каждого пиксела изображения. По обесцветить, я имею в виду превращение цветного изображения в оттенки серого изображения и сохраняя цвета. Я все еще говорю о RGB-изображении, но оно только что было обесцвечено в цвете и теперь черно-белое.

кто-нибудь знает, какой алгоритм используется?

2 ответов


Десатурация довольно проста. Обычно это что-то вроде G*.59+R*.3+B*.11

Photoshop также имеет инструмент преобразования B&W, который (в основном) позволяет выбрать коэффициент для каждого. Например, вы можете получить эффект красного фильтра, увеличив процент красного и уменьшив зеленый и синий для соответствия.


Как отмечено в комментариях, принятый ответ не на формула, используемая Photoshop. Реальная формула desaturate Photoshop среднее минимального RGB и максимального RGB компонентов.

float bw = (fminf(r, fminf(g, b)) + fmaxf(r, fmaxf(g, b))) * 0.5f;

Я считаю, что операции HSL в Photoshop выполняются в пространстве min-max-hue, поэтому эта формула выбрана для скорости.