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


11

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


Я не знаю, но это, безусловно, имеет смысл не гамма-корректно.
— 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.
— Симон Ф

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.