Чи має кодування 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
Simon F

"Демістифіковане відео" також говорить: "YCbCr - це кольоровий простір, спочатку визначений BT.601, а тепер використовується для всіх цифрових компонентів відеоформатів. Технічно правильне позначення Y'Cb'Cr", оскільки всі три компоненти походить від R'G'B '. "
Simon F

Гамма-показник зберігається в даних JPEG exif. більшість програмного забезпечення повністю ігнорує це. але ви можете припустити, що після розшифровки jpeg його вже в гамма-просторі, тому перетворення значення rgb на буфер дисплея робити не потрібно.
v.oddou

Відповіді:


2

Відповідно до Вікіпедії (вставте стандартну точність відмови від відповідальності):

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 матриця. Якщо, однак, дані були обчислені рендерінгом (так, можливо, лінійним), обробляються за допомогою зменшення масштабу (що слід робити у лінійному просторі) або, скажімо, фіксуються (і очищаються) за допомогою CCD (що я Думаю, лінійний), тоді він повинен бути перероблений перед стисненням JPEG.
Саймон Ф

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.