Понимание нелинейного цветового пространства RGB NetPBM для преобразования в оттенки серого - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь понять, как правильно работать со значениями RGB, найденными в форматах PNM, чтобы неизбежно преобразовать их в оттенки серого.

Изучая тему, выясняется, что если значения RGB являются нелинейными, то мне нужно сначала преобразовать их в линейное цветовое пространство RGB, применить мои веса, а затем преобразовать их обратно в то же нелинейное цветовое пространство.

Похоже, есть ожидаемый формат http://netpbm.sourceforge.net/doc/ppm.html:

В растре значения выборки являются «нелинейными». Они пропорциональны интенсивности Рекомендации МСЭ-R BT.709 красного, зеленого и синего в пикселях, настроенной функцией передачи гамма-излучения BT.709.

Так что я понимаю, что эти значения являются нелинейными, но не sRGB. Я нашел несколько тем, посвященных ImageMagick, в которых говорится, что они могут сохранять их как линейные значения RGB.

Правильно ли, что PNM определяет стандарт, но различные редакторы, такие как Photoshop или GIMP, могут или не могут следовать ему?

С http://netpbm.sourceforge.net/doc/pamrecolor.html

При использовании этого параметра входные и выходные изображения не являются настоящими изображениями Netpbm, поскольку формат изображения Netpbm указывает конкретное цветовое пространство . Вместо этого вы используете вариант формата, в котором значения выборки в растре имеют различное значение. Многие программы, которые якобы используют изображения Netpbm, на самом деле используют вариации с другим цветовым пространством. Например, GIMP использует sRGB для внутреннего использования, и если у вас GIMP генерирует файл изображения Netpbm, он действительно генерирует вариант формата, который использует sRGB.

Еще где я вижу это http://netpbm.sourceforge.net/doc/pgm.html:

Каждое значение серого - это число, пропорциональное интенсивности пиксель, скорректированный согласно Рекомендации МСЭ-R BT.709 о гамма-передаче функция. (эта передаточная функция задает гамма-число 2,2 и имеет линейное сечение для малых интенсивностей). Нулевое значение поэтому черный. Значение Maxval представляет CIE D65 белый и Наиболее интенсивное значение в изображении и любом другом изображении, к которому относится изображение можно сравнить.

Диапазон значений BT.709 (16-240) не имеет отношения к PGM.

Обратите внимание, что обычное отличие от формата PGM - серый значение будет "линейным", т.е. как указано выше, за исключением гаммы регулировка. pnmgamma принимает такой вариант PGM в качестве ввода и выдает истинный PGM в качестве выхода.

Большинство источников предполагают, что имеют дело с линейным RGB, и просто применяют свои веса и сохраняют, возможно, не сохраняя яркость. Я предполагаю, что любой обработчик жалоб будет предполагать, что эти значения RGB гамма-сжатые ... таким образом, технически отображая «цвета» градаций серого, чем я указал. Это правильно? Может быть, спросить это по-другому, это имеет значение? Я знаю, что это загруженный вопрос, но если я не могу точно сказать, является ли он линейным или нелинейным, или как он был сжат или ожидается, что он будет сжат, будут ли сильно затронуты алгоритмы обработки изображений (бинаризация), если я просто предположу, линейные значения RGB?

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

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

Короче говоря ... похоже, что никто не потрудился перекодировать гамму изображения при сохранении в формате PNM . Из-за этого, поскольку почти все является sRGB, он останется sRGB, в отличие от технически правильного BT.709, согласно спецификации.

Я обратился к Брайану Хендерсону из NetPBM. Он придерживался того же мнения и утверждал, что метод гамма-сжатия не так важен, как знание того, применялся он или нет, и что мы всегда должны предполагать, что он применяется при работе с цветовыми форматами PNM .

Чтобы подтвердить влияние этого мнения в отношении обработки изображений, прочитайте «От цвета к оттенкам серого: имеет ли значение метод при распознавании изображений?», 2012, Канан и Коттрелл . В основном, если вы вычислите Среднее значение RGB, вы окажетесь в одной из трех ситуаций: Gleam, Intensity 'или Intensity. После сравнения эффектов различных формул преобразования в градациях серого, принимая во внимание, когда и как применялась гамма-коррекция, он обнаружил, что Gleam и Intensity «там, где лучшие исполнители. Они отличаются только тем, когда была добавлена ​​гамма-коррекция (Gleam имеет гамма-коррекцию на входных значениях RGB, в то время как Intensity 'принимает линейный RGB и применяет гамма-послесловия). К сожалению, вы понижаетесь с 1-го и 2-го места до 8-го, когда гамма-коррекция не добавлена, иначе интенсивность. Интересно отметить, что это была простая формула среднего значения, которая работала лучше всего, а не одна из самых популярных формул в оттенках серого, которую большинство людей рекламируют. Все это говорит о том, что если вы используете формулу Среднее для преобразования цвета PNM в оттенки серого для приложений обработки изображений, вы обеспечите высокую производительность, поскольку мы можем предположить, что будет применено некоторое гамма-сжатие . Мой комментарий о ImageMagick и линейных значениях, по-видимому, относится только к их формату PGM.

Надеюсь, это поможет!

0 голосов
/ 07 мая 2019

Существует только один способ преобразования цветового сигнала в оттенки серого: переход в линейное пространство и добавление света (и, следовательно, интенсивности цвета).Таким образом, у вас есть эффективный свет, и вы можете рассчитать яркость.Тогда вы можете "гамма" исправить значение.Это то, как свет ведет себя (линейное пространство), и как яркость измеряется с помощью CIE (по длине волны).

На телевидении принято создавать яркость, а затем черно-белые изображения из нелинейного R, G, B.Это сделано потому, что простота и способ работы аналогового цветного телевидения (NTSC и PAL): черно-белый сигнал (для телевидения BW) в качестве основного сигнала, а затем добавление цветов (в качестве поднесущей) к изображению BW.По этой причине вычисления выполняются в нелинейном пространстве.

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

Для алгоритмов обнаружения ребра не должно быть важно, какой метод вы используете: у нас возникают трудности с обнаружением ребра с одинаковыми L или Y ', поэтому нам все равноесли у компьютеров аналогичная проблема.

Примечание: наши глаза нелинейны при обнаружении интенсивности света и имеют ту же гамму, что и люминофоры на наших старых телевизорах.По этой причине полезно использовать значение с гамма-коррекцией: оно сжимает информацию оптимальным образом (или в прошлом «аналогового телевидения»: оно уменьшает воспринимаемый шум).

То есть, если вы хотите Y ', сделайте снелинейный R ', G', B '.Но если вам нужна настоящая серая шкала, вам нужно рассчитать реальную шкалу серого, переходящую в линейное пространство.Вы можете увидеть различия, особенно в середине серого, и в фиолетовом или желтом, где два из R, G, B почти одинаковы (и как максимальное значение между тремя).

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

Примечание. Рек. 709 никогда не указывали применение гамма-коррекции (OETF в стандарте бесполезен, нам нужен EOTF, и часто один не является обратным другому по практическим соображениям).Только по последовательной рекомендации эта недостающая информация была наконец предоставлена.Но так как многие люди говорят о Rec.709, обратное значение OETF используется как гамма, что неверно.

Как обнаружить: классическое желтое солнце на голубом небе, выбирая желтое и синее с тем же L. ЕслиВы видите солнце на сером изображении, вы трансформируетесь с нелинейным пространством (Y 'не равно).Если вы не видите солнца, вы преобразуетесь линейно.

...