Як представлений кольоровий простір YCbCr у зображенні JPEG?


9

Я знаю, що 24-бітове зображення присвячує 8 біт кожному для R, G і B. Це просто для кольорового простору RGB. У кольоровому просторі YCbCr для 24-бітного зображення JPEG, як розподіляються біти?

Відповіді:


3

Є кілька форматів для YCbCr. загалом кажучи, око чутливіше до змін освітленості (Y, яскравості), ніж до змін кольоровості (Cb, Cr, кольору). Таким чином, можна стерти деяку інформацію щодо кольоровості, зберігаючи якість зображення.

Таким чином, самий "дорогий" формат - це 4: 4: 4, де для кожного компонента luma (Y) припадає 1 червона різниця (Cr) та одна складова синьої різниці (Cb).

Потім, застосовуючи принцип, який я згадував, існує 4: 2: 2, де для кожного компонента 2 Y є 1 Cb і 1 Cr. І це іде ще далі до 4: 1: 1 і 4: 2: 0 і т.д. Детальніше тут .


Ці структури, схоже, стосуються вибірки частоти для відео, а не кодування JPEG.
whuber

@whuber: Вони часто використовуються для обговорення кодування відео, але JPEG також підтримує яскравість із подвійним дозволом кольоровості. У випадку з JPEG, однак це необов'язково - кольоровість може бути як повною, так і напівроздільною.
Джері Коффін

1
GIMP використовуватиме підсистему кольоровості за замовчуванням під час збереження JPEG, хоча це легко перекрити. Не можу згадати, якщо це стосується і Photoshop.
thomasrutter

@thomasrutter, Photoshop вибирає підсистему на основі обраної вами налаштування якості. Це не самостійний варіант.
Марк Викуп 11

Цифри, до речі, відносяться до кількості зразків на 4 горизонтальних пікселя для Y, Pr та Pb. Отже, 4: 4: 4 означає, що всі три канали відбирають вибірку кожного пікселя; 4: 2: 2 означає, що канали Pr і Pb відбирають вибірку лише кожного другого пікселя по горизонталі; 4: 1: 1 (я не думаю, що це ніколи не використовується у фотографії, лише у відео) означає, що Pr та Pb відбирають вибірки кожен четвертий піксель по горизонталі. 4: 2: 0 - це особливе відхилення від цього правила. Це НЕ означає, що каналу Pb немає. Це означає, що канали Pr і Pb вдвічі зменшуються як в горизонтальному, так і у вертикальному напрямку, а не тільки в горизонтальному.
thomasrutter

24

JPEG може починатися з 8 біт на канал R, G і B, але при збереженні в JPEG він зберігається дуже по-різному, де немає реальної "бітової глибини", а натомість значення зберігаються як коефіцієнти частоти заданої точності.

У JPEG найбільш актуальною є швидкість квантування , яка впливає на те, скільки інформації викидається на етапі квантування стиснення, а отже, наскільки точним є кожен коефіцієнт. Ця швидкість квантування встановлюється параметром "якість" під час збереження JPEG у фотошопі. Це не пов’язано з глибиною біту, як у растровому зображенні, і ви навіть можете сказати, що JPEG-зображення не має трохи глибини в форматі JPEG, хоча кодери / декодери JPEG починаються з / закінчуються 24-бітним растрові зображення.

Іншим головним фактором, що має значення для збереження JPEG, є тип підбірки кольоровості . У JPEG у вас є можливість зменшити вдвічі горизонтальний або як горизонтальний, так і вертикальний роздільну здатність кольорових (Pr і Pb) каналів відносно каналу яскравості (легкості). При декомпресії кольорові канали інтерполюються, і в більшості фотоматеріалів це не робить великої різниці.

Ось приблизний підсумок того, як зображення перетворюється на JPEG.

  1. Значення RGB перетворюються в значення Y, Pb, Pr. Колірний простір YPbPr краще підходить для ефективної компресії, оскільки він зберігає інформацію про яскравість, яка містить найбільш детальну інформацію, лише в одному каналі. Це перетворення - це проста арифметична операція, яка ідеально оборотна, за винятком випадків помилки округлення.

  2. Якщо використовується будь-яка кольорова підсистема (іншими словами, використовуючи що-небудь, крім режиму 4: 4: 4), то вертикальна та / або горизонтальна роздільна здатність каналів Pb і Pr зменшується вдвічі. Таким чином, ці канали будуть мати різні розміри пікселів до каналу яскравості. Це призводить до постійної втрати роздільної здатності в кольорових каналах.

  3. Для кожного каналу зображення поділяється на блоки по 8 пікселів на 8 пікселів, що дає 64 лінійних значення для кожного такого блоку в кожному каналі. Якщо канал не є кратним 8 пікселів в будь-якому вимірі, то крайові пікселі повторюються (і будуть викинуті під час декомпресії - таким чином стиснення JPEG завжди ефективніше з розмірами, кратними 8 пікселів, або 16, якщо покласти фактор в кольоровій підсистемі).

  4. 64 значення в кожному блоці піддаються перетворенню з космічної області в частотну область, в цьому випадку називається дискретним перетворенням косинусів. У кінцевому підсумку ви маєте 64 коефіцієнти, кожен з яких представляє амплітуду певної частотної карти над областю, прийнятою цим блоком. Перше значення - це найнижча частота, яка фактично є середнім значенням усіх пікселів, аж до останніх значень, які описують компонент найвищої частоти блоку. Більш ранні значення відхиляються набагато більше і важливіші для вигляду остаточного зображення, ніж пізніші значення в блоці. Ця операція ідеально оборотна, якщо ви використовуєте достатню точність.

  5. Потім відбувається квантування, де кожен із 64 коефіцієнтів, які ви отримали на попередньому етапі, ділиться на деяку кількість (називається коефіцієнтом квантування), а решту викидається. Тут найбільше впливає на точність зразків, але саме там ви отримуєте величезну економію простору від JPEG порівняно з стисненням без втрат. Оскільки в попередній трансформації все знаходиться в частотній області, ця втрата точності робить найкращу роботу зі збереження якості сприйнятого зображення, ніж просто зменшення глибини біта / точності пікселів до цього перетворення. Реверс цієї процедури - це просто помножити на те саме число, на яке ви розділили коефіцієнти, але, звичайно, оскільки ви викинули залишки, ви закінчитеся з меншою точністю коефіцієнтів. Це призводить до постійної втрати якості,

  6. Після цього квантування типовим для багатьох пізніших менш значущих коефіцієнтів є нуль, тому їх викидають. Тоді порядок кодування (без втрат) кодування змінної довжини ефективно кодує всі решта коефіцієнтів, хоча кожен може використовувати різну кількість біт.

Неможливо сказати, що певний коефіцієнт квантування еквівалентний певній глибині бітів, оскільки квантування не дає смуги, як коли ви зменшуєте глибину бітів, а натомість дає загальну перцептивну втрату в деталях, починаючи з частин, де ви це помітили. менше, тому що він має таку низьку амплітуду за своєю частотою.


2
Я думаю, мій мозок просто вибухнув.
Нік Бедфорд

Хромасистема не просто призводить до "втрати роздільної здатності". Він представляє дуже помітні артефакти, особливо в Червоному каналі.
Марк Рансом

@Mark Ransom ці артефакти - це не що інше, як результат зменшення наполовину роздільної здатності кольорових каналів та інтерполяції, необхідної для врахування цього після декомпресії. Він ніколи не повинен створювати будь-яких «помітних артефактів», окрім тих, що викликані розмиттям роздільної здатності, хоча можуть існувати деякі декодери, які викручують цю інтерполяцію або роблять дуже просту інтерполяцію найближчого сусіда, що призводить до блокади, що є досить помітною для червоного деталі на чорному (або пурпуровому на блакитному тощо). Наприклад, це була поширена проблема у деяких програвачах DVD на початку.
thomasrutter

5
Я не думаю, що я ніколи не бачив кращого, легшого для розуміння пояснення jpeg - або насправді втратного - стиснення зображення. визначений +1
jay.lee

Вибачте, я не мав на увазі, що підсистема викликає артефакти. Просто наявні помилки в результаті квантування підірваються в 2 рази, роблячи їх набагато помітнішими. Я думаю, що важливо знати, що видимий ефект підвузливості - це більше, ніж лише невелика нечіткість.
Марк Викуп

1

Представлення кольоровості (Cb Cr) в окремих каналах від luma (Y) має ще один позитивний вплив на стиснення. Більшість видимої інформації знаходиться в каналі луми. Людські очі переносять як менший просторовий дозвіл, так і більш агресивне квантування в хромових каналах. Таким чином, агресивно стиснене зображення може в кінцевому рахунку витратити близько 10% файлового простору для кольоровості, а решта - для луми, і все ще виглядати гідно.

Зрештою, це все ще втрата стиснення.


-1

Приблизно 8 біт для кожного каналу, але є кілька дещо різних способів зробити це. Деталі наведені у статті Вікіпедії на YCbCr .


Про це було сказано у запитанні. Надайте більш детальну відповідь.
Нік Бедфорд

@Nick Де саме це було зазначено у запитанні? Питання, як зараз, говорить: "У кольоровому просторі YCbCr для 24-бітного зображення JPEG, як розподіляються біти?" Я говорив, як вони розподіляються, припускаючи - як той, хто розуміє питання - що канали Y, Cb і Cr. Моя відповідь - правильний підсумок статті у Вікіпедії. Політика SE полягає в наданні резюме, а не копіюванні матеріалів оптом (хоча, я визнаю, легко надати прикордонні приклади довгих цитат деінде на цьому сайті).
whuber

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