Должна ли кодировка JPEG учитывать гамму?

11

Когда изображение кодируется с использованием JPEG, пиксели RGB сначала кодируются в YUV, а затем ультрафиолетовые каналы подвергаются пониженной дискретизации. Перед фактическим выполнением DCT и кодированием коэффициентов JPEG не корректирует гамма -канал Y. Это правильно? Разве мы не должны определять коэффициенты DCT, которые больше всего повлияют на наш просматриваемый результат?

Mokosha
источник
Я не знаю, но это, безусловно, имеет смысл не гамма-корректно.
joojaa
Я не публикую это как ответ, так как не уверен в этом, но человеческое зрение воспринимает яркость не линейно. Фактически, sRGB неплохо справляется с этой задачей и обеспечивает максимальную точность в тех областях, которые имеют значение. Таким образом, вы можете обнаружить, что гамма-коррекция перед сжатием яркости может привести к худшим результатам.
Юрикс
AFAIK, видео стандарты предполагают R'G'B ', т.е. нелинейное цветовое пространство, при применении цветовых преобразований 3x3 в / из YCbCr. В таких приложениях, как видео, где требуется максимальное качество на бит, не имеет смысла использовать линейное. Я думаю, что разделы 27 и 29 часто задаваемых вопросов о цвете Чарльза Пойтона выражают это более четко: poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC27
Саймон Ф,
«Демистификация видео» также гласит: «YCbCr - это цветовое пространство, первоначально определенное BT.601, и теперь используемое для всех цифровых форматов видео компонентов. .... Технически правильная запись - Y'Cb'Cr ', поскольку все три компонента являются получено из R'G'B '. "
Саймон Ф.
Показатель гаммы сохраняется в данных exif JPEG. большинство программ полностью игнорируют это. но вы можете предположить, что после декодирования jpeg он уже находится в гамма-пространстве, поэтому преобразование не нужно делать перед отправкой значения rgb в буфер отображения.
v.oddou

Ответы:

2

В соответствии с Википедией (вставьте стандартный отказ RE точность):

JPEG не определяет, какую цветовую кодировку использовать для изображений. JFIF определяет используемую цветовую модель: либо Y для оттенков серого, либо YCbCr, как определено в CCIR 601.

YCbCr - нелинейный формат. Как я упоминал ранее, «Видео демистифицировано» гласит:

«YCbCr - это цветовое пространство, первоначально определенное BT.601, и теперь используемое для всех форматов цифрового компонентного видео .... Технически правильная запись - Y'Cb'Cr ', поскольку все три компонента получены из R'G'B »«.

и Чарльз Пойнтон в цветах FAQ состояния

Видеосистемы аппроксимируют отклик яркости зрения, используя сигналы R'G'B ', каждый из которых подвергается функции мощности 0,45.

С компрессией мы получаем лучшее визуальное представление на бит, и, поскольку глаз нелинейно примерно таким образом, имеет смысл использовать нелинейные представления.

Саймон Ф
источник
Исходя из этих подробностей, насколько я понимаю, JPEG ожидает, что входные значения RGB будут закодированы таким образом, что дисплей будет применять функцию питания при отображении. Чтобы воссоздать эти конкретные значения RGB, их не следует исправлять до кодирования.
Мокоша
1
Проблема в том, чтобы заявить это так, что это немного двусмысленно. Вероятно, мы должны заявить, что, если ваши «RGB» данные на самом деле R'G'B '(и давайте предположим, что sRGB попадает в эту категорию), то вам не следует изменять значения перед применением R'G'B' => Матрица YCbCr. Если, однако, данные были, скажем, вычислены с помощью средства визуализации (возможно, линейного), обработаны с использованием уменьшения масштаба (которое должно быть выполнено в линейном пространстве) или, скажем, были получены (и очищены) с помощью ПЗС (которое я думаю, является линейным), то он должен быть переназначен до сжатия JPEG.
Симон Ф