Откуда берется формула Y = 0.3R + 0.59G + 0.11B для преобразования из цветного RGB-изображения в черно-белое (монохромное)?

Любое цветовое пространство RGB должно быть связано с эталонным цветовым пространством CIE XYZ [4]. Для CIE XYZ известно соответствие между значением коэффициентов (x,y,z) пикселя и фактическим значением яркости эталонных источников света, смешением которых добиваются получения нужного воспринимаемого цвета. Для каждого RGB-изображения явно или неявно такое преобразование в XYZ должно быть определено, иначе оно может быть корректно показано только на том мониторе, на котором создавалось. Назовем такую информацию цветовым профилем изображения [2, 6]. Если такой профиль есть у монитора, то путем преобразования RGBimage → XY Zimage и затем преобразования XY Zimage → RGBdisplay монитора можно получить на другом мониторе цвета, соответствующие исходным (с учетом ограниченной цветопередачи).

В системе XYZ координата Y по определению соответствует воспринимаемой яркости цвета (Luminance [9]). Таким образом, чтобы получить из RGB монохромное изображение с учетом воспринимаемых человеком яркостей, необходимо преобразовать каждый пиксель в XYZ и взять координату Y в качестве результата. Известно, что преобразование между любыми аддитивными цветовыми системами линейное (в силу линейности восприятия цвета целовеком [7]), а, значит, может быть описано матрицей M3×3, такой, что

Коэффициенты (0.3,0.59,0.11) — это округленная до второго знака строчка из матрицы преобразования MNTSC из системы NTSC RGB (стандарт для американского телевидения) в XYZ, а “типичная” формула

(1)

вычисляет воспринимаемую яркость Y для изображения, закодированного в NTSC RGB. Полная матрица преобразования выглядит так[1]:

Большинство цифровых изображений на данный момент соответствуют стандарту sRGB [3,5], разработанному для компьютерных мониторов, поэтому типичная формула неверна!

Более корректным будет преобразование для sRGB (см. матрицу MsRGB в [1]): Y = 0.21R + 0.72G + 0.07B . Но наиболее правильным будет использование профиля изображения, если он доступен.

Необходимо обратить внимание, что RGB-изображения имеют нелинейную кодировку яркости, так называемую гамма-коррекцию [8] Cgamma = Clinear1∕γ, где γ является также частью профиля изображения (для sRGB можно считать гамму равной 2.2, хотя на практике функция несколько сложнее [3, 5]). А преобразование в черно-белое необходимо проводить в линейном пространстве, поэтому перед преобразованием надо выполнить гамма-преобразование, обратное гамма-коррекции Clinear = Cgammaγ. Таким образом, корректное преобразование из цветного sRGB-изображения в монохромное выглядит так (цвета изображения лежат в диапазоне [0,255]):

Как видно из рисунка 1, разница между преобразованиями (1) и (2) имеется и она может быть существенной для требовательных приложений.

(а)

(б)

(в)

(г)

Рис. 1: Пример преобразование цветного в черно-белое изображение. (а) Исходное изображение (б) “Типичное” неверное преобразование (в) sRGB-преобразование (г) Линейная разница (x15)

Ссылки

[1] http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html

[2] http://www.color.org

[3] http://www.w3.org/Graphics/Color/sRGB.html

[4] http://en.wikipedia.org/wiki/CIE_1931_color_space

[5] http://en.wikipedia.org/wiki/SRGB

[6] http://en.wikipedia.org/wiki/ICC_profile

[7] http://en.wikipedia.org/wiki/Grassmann%27s_law_%28optics%29

[8] http://en.wikipedia.org/wiki/Gamma_correction

[9] http://en.wikipedia.org/wiki/Luminance_%28relative%29

Прикрепленный файлРазмер
rgb2gray_article.pdf419.46 кб