Говорят, что при преобразовании из RGB в оттенки серого к каналам R, G и B должны применяться определенные веса. Эти веса: 0,2989, 0,5870, 0,1140.
Говорят, что причиной этого является разное человеческое восприятие / чувствительность к этим трем цветам. Иногда также говорят, что это значения, используемые для вычисления сигнала NTSC.
Однако я не нашел хорошей ссылки на это в сети. Каков источник этих ценностей?
Ответы:
Конкретные числа в вопросе взяты из CCIR 601 (см. Ссылку на Википедию ниже).
Если вы конвертируете RGB -> оттенки серого с немного другими числами / разными методами, вы не увидите большой разницы на обычном экране компьютера при нормальных условиях освещения - попробуйте.
Вот еще несколько ссылок по цвету в целом:
Википедия Luma
Выдающийся веб-сайт Брюса Линдблума
глава 4 о цвете в книге Колина Уэра «Визуализация информации», isbn 1-55860-819-2; эта длинная ссылка на Ware на books.google.com может работать, а может и не работать
cambridgeincolor : отличные, хорошо написанные «учебники о том, как получать, интерпретировать и обрабатывать цифровые фотографии с использованием визуально-ориентированного подхода, при котором концепция важнее процедуры»
Если вы столкнетесь с «линейным» или «нелинейным» RGB, вот часть моей старой заметки по этому поводу. Повторяю, на практике большой разницы не увидишь.
RGB -> ^ гамма -> Y -> L *
В науке о цвете обычные значения RGB, такие как html rgb (10%, 20%, 30%), называются «нелинейными» или с поправкой на гамму . «Линейные» значения определяются как
где гамма 2.2 для многих ПК. Обычные RGB иногда записываются как R 'G' B '(R' = Rlin ^ (1 / gamma)) (пуристы щелкают языком), но здесь я опущу '.
Яркость на ЭЛТ-дисплее пропорциональна RGBlin = RGB ^ гамма, поэтому 50% серого на ЭЛТ довольно темное: 0,5 ^ 2,2 = 22% от максимальной яркости. (ЖК-дисплеи более сложные; кроме того, некоторые видеокарты компенсируют гамму.)
Чтобы получить меру яркости, вызванную
L*
из RGB, сначала разделите RGB на 255 и вычислитеЭто
Y
цветовое пространство XYZ; это мера «яркости» цвета. (Настоящие формулы не совсем x ^ gamma, но близки; придерживайтесь x ^ gamma для первого прохода.)В заключение,
источник
Я обнаружил, что эта публикация ссылается на предыдущий аналогичный вопрос. Это очень полезно:
http://cadik.posvete.cz/color_to_gray_evaluation/
Он показывает «тонны» различных методов для создания изображений в оттенках серого с разными результатами!
источник
Вот код в c для преобразования rgb в оттенки серого. Реальный вес, используемый для преобразования RGB в оттенки серого, составляет 0,3R + 0,6G + 0,11B. эти веса не являются абсолютно критическими, так что вы можете с ними играть. Я сделал их 0,25R + 0,5G + 0,25B. Это дает немного более темное изображение.
ПРИМЕЧАНИЕ. В следующем коде предполагается, что 32-битный пиксельный формат xRGB
источник
0.11111111 * ((G + (G<<1) + R) <<1) + B)
. Это эквивалентно(2*R+6*G+B) / 9)
или0.222 R + 0.666 G + 0.111 B
. Перед запуском в производство сравните с точной формулой для различных тестовых случаев.Вот статья о том, как были получены эти (или похожие) числа:
https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf
источник
Проверьте цвет Справку для получения информации по этому вопросу . Эти значения получены из стандартизации значений RGB, которые мы используем в наших дисплеях. На самом деле, согласно FAQ по цвету, используемые вами значения устарели, поскольку они являются значениями, используемыми для исходного стандарта NTSC, а не для современных мониторов.
источник
«Источником» размещенных коэффициентов являются спецификации NTSC, которые можно увидеть в Rec601 и « Характеристики телевидения» .
«Конечным источником» являются эксперименты CIE 1931 года по восприятию цвета людьми. Спектральный отклик человеческого зрения неоднороден. Эксперименты привели к взвешиванию трехцветных значений на основе восприятия. Наши колбочки L, M и S 1 чувствительны к длинам световых волн, которые мы определяем как «красный», «зеленый» и «синий» (соответственно), что и является источником трехцветных основных цветов. 2
Спектральные веса linear light 3 для sRGB (и Rec709):
R лин * 0,2126 + G лин * 0,7152 + B лин * 0,0722 = Y
Они относятся к цветовым пространствам sRGB и Rec709, которые предназначены для представления компьютерных мониторов (sRGB) или мониторов HDTV (Rec709), и подробно описаны в документах ITU для Rec709, а также BT.2380-2 (10/2018)
СНОСКИ (1) Колбочки - это клетки сетчатки глаза, определяющие цвет.
(2) Однако выбранные трехцветные длины волн НЕ находятся на «пике» каждого типа конуса - вместо этого трехцветные значения выбираются так, чтобы они стимулировали один тип конуса значительно сильнее, чем другой, то есть разделение стимулов.
(3) Перед применением коэффициентов необходимо линеаризовать значения sRGB. Я обсуждаю это в другом ответе здесь.
источник
Эти ценности варьируются от человека к человеку, особенно для людей с дальтонизмом.
источник
действительно ли все это необходимо, человеческое восприятие и ЭЛТ по сравнению с ЖК-дисплеем будут различаться, но интенсивность RGB не изменится. Почему бы
L = (R + G + B)/3
и нет, и установить новый RGB на L, L, L?источник