Я пытаюсь понять, как правильно работать со значениями 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 а>:
Каждое значение серого - это число, пропорциональное интенсивности пикселя, настроенное функцией передачи гамма-излучения Рекомендации ITU-R BT.709. (Эта передаточная функция определяет гамма-число 2,2 и имеет линейный участок для малых интенсивностей). Следовательно, нулевое значение является черным. Значение Maxval представляет белый цвет CIE D65 и наиболее интенсивное значение в изображении и любом другом изображении, с которым можно сравнивать изображение.
Диапазон значений канала BT.709 (16–240) не имеет отношения к PGM.
Обратите внимание, что обычным отклонением от формата PGM является "линейное" значение серого, т. е. как указано выше, за исключением регулировки гаммы. pnmgamma принимает такой вариант PGM на входе и производит настоящий PGM на выходе.
Большинство источников предполагают, что имеют дело с линейным RGB и просто применяют свои веса и сохраняют, возможно, не сохраняя яркость. Я предполагаю, что любой обработчик жалоб будет предполагать, что эти значения RGB являются гамма-сжатыми ... таким образом, технически отображая "цвета" оттенков серого, отличные от тех, что я указал. Это правильно? Может по другому спросить, имеет ли значение? Я знаю, что это загруженный вопрос, но если я не могу точно сказать, является ли он линейным или нелинейным, или как он был сжат или ожидается, что он будет сжат, будут ли сильно затронуты алгоритмы обработки изображений (бинаризация), если я просто предполагаю линейные значения RGB?