Подтвердить что ты не робот

Почему серая шкала работает так, как она работает?

Мой оригинальный вопрос

Я прочитал, что для преобразования RGB-пикселя в RGB с серой шкалой следует использовать

r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11

Я также читаю и понимаю, что g имеет более высокий вес, потому что человеческий глаз более чувствителен к зеленому. Реализовав это, я увидел, что результаты были такими же, как и при настройке изображения на "оттенки серого" в редакторе изображений, таком как Gimp.

Прежде чем я прочитал это, я представил себе, что для преобразования пикселя в оттенки серого можно преобразовать его в HSL или HSV, а затем установить насыщенность в ноль (следовательно, удалить весь цвет). Однако, когда я это сделал, у меня получилось совсем другое изображение, хотя у него также не было цвета.

Как s = 0 точно отличается от "правильного" способа, который я читаю, и почему он "неверен"?

Текущие результаты, основанные на ответах и ​​других исследованиях

Похоже, что используемые коэффициенты яркости являются предметом некоторых дебатов. Различные комбинации и алгоритмы greyscale имеют разные результаты. Ниже приведены некоторые пресеты, используемые в таких областях, как телевизионные стандарты:

  • коэффициенты, определенные ITU-R BT.601 (NTSC?), равны 0.299r + 0.587g + 0.114b
  • коэффициенты, определенные ITU-R BT.709 (новее), 0.2126r + 0.7152g + 0.0722b
  • коэффициенты равной трети, (1/3)(rgb), эквивалентны s = 0

Эта научная статья описывает различные методы оттенков серого и их результаты для различных изображений, плюс субъективный опрос 119 человек.

Однако при преобразовании изображения в оттенки серого для достижения "наилучшего" художественного эффекта почти наверняка не будет использовать эти предопределенные коэффициенты, а можно настроить вклад каждого канала для получения наилучшего результата для конкретного изображения.

4b9b3361

Ответ 1

Хотя эти коэффициенты трансформации существуют, ничто не связывает вас с их использованием. Пока общая интенсивность каждого пикселя не изменяется, вклад от каждого канала может составлять от 0 до 100%.

Фотографы, преобразующие изображения в оттенки серого, используют канальные микшеры для настройки уровней каждого канала (RGB или CMYK). На вашем изображении много красных и зеленых, поэтому может быть желательно (в зависимости от вашего намерения), чтобы эти каналы были более представлены в интенсивности серого, чем синий.

Это то, что отличает "научную" трансформацию изображения от "художественной" комбинации полос.

Дополнительным соображением является динамический диапазон значений в каждой полосе и попытка сохранить их в изображении в градациях серого. Например, увеличение теней и/или бликов может потребовать увеличения вклада синей полосы.

Ответ 2

Интересная статья по этой теме здесь... "потому что человеческие глаза не определяют яркость линейно с цветом".

http://www.scantips.com/lumin.html

Ответ 3

Похоже, что эти коэффициенты исходят из старой технологии CRT и плохо адаптированы к сегодняшним мониторам, из Цветные часто задаваемые вопросы:

Коэффициенты 0.299, 0.587 и 0.114 правильно рассчитанная яркость для мониторов с люминофорами, которые были современности при введении NTSC в 1953 году. Они все еще подходящий для вычисления видео яркость, которая будет обсуждаться ниже в разделе 11. Однако эти коэффициенты не точно вычисляют яркость для современные мониторы.

Не удалось найти правильный коэффициент преобразования.

См. также RGB для монохромного преобразования

Ответ 4

Используя s = 0 в HSL/HSV и преобразование в результаты RGB в R = G = B, то же самое, что и при выполнении r_old * 1/3 + g_old * 1/3 + b_old * 1/3.

Чтобы понять, почему, посмотрите страницу Wikipedia, в которой описывается преобразование HSV- > RGB. Насыщенность s будет равна 0, поэтому C и X тоже будет. В итоге вы получите R_1,G_1,B_1 (0,0,0), а затем добавьте m к окончательным значениям RGB, что приведет к (m,m,m)= (V,V,V). То же самое для HSL, результат будет (m,m,m)= (L,L,L).

РЕДАКТ: ОК, только что выяснилось, это не полный ответ, хотя это хорошая отправная точка. Значения RGB будут одинаковыми: либо L, либо V, но все равно зависит от того, как изначально были рассчитаны L и V, см. Wikipedia. Кажется, программа/формулы, которые вы использовали для преобразования, использовали решение 1/3 * R + 1/3 * G + 1/3 * B или один из двух других (hexcone/bi-hexcone).

В конце концов, использование HSL/HSV просто означает, что вам нужно будет решить, какая формула использовать раньше, а преобразование в значения оттенков серого RGB позже просто изолирует последний компонент.