Я знаю, що 24-бітове зображення присвячує 8 біт кожному для R, G і B. Це просто для кольорового простору RGB. У кольоровому просторі YCbCr для 24-бітного зображення JPEG, як розподіляються біти?
Я знаю, що 24-бітове зображення присвячує 8 біт кожному для R, G і B. Це просто для кольорового простору RGB. У кольоровому просторі YCbCr для 24-бітного зображення JPEG, як розподіляються біти?
Відповіді:
Є кілька форматів для 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 може починатися з 8 біт на канал R, G і B, але при збереженні в JPEG він зберігається дуже по-різному, де немає реальної "бітової глибини", а натомість значення зберігаються як коефіцієнти частоти заданої точності.
У JPEG найбільш актуальною є швидкість квантування , яка впливає на те, скільки інформації викидається на етапі квантування стиснення, а отже, наскільки точним є кожен коефіцієнт. Ця швидкість квантування встановлюється параметром "якість" під час збереження JPEG у фотошопі. Це не пов’язано з глибиною біту, як у растровому зображенні, і ви навіть можете сказати, що JPEG-зображення не має трохи глибини в форматі JPEG, хоча кодери / декодери JPEG починаються з / закінчуються 24-бітним растрові зображення.
Іншим головним фактором, що має значення для збереження JPEG, є тип підбірки кольоровості . У JPEG у вас є можливість зменшити вдвічі горизонтальний або як горизонтальний, так і вертикальний роздільну здатність кольорових (Pr і Pb) каналів відносно каналу яскравості (легкості). При декомпресії кольорові канали інтерполюються, і в більшості фотоматеріалів це не робить великої різниці.
Ось приблизний підсумок того, як зображення перетворюється на JPEG.
Значення RGB перетворюються в значення Y, Pb, Pr. Колірний простір YPbPr краще підходить для ефективної компресії, оскільки він зберігає інформацію про яскравість, яка містить найбільш детальну інформацію, лише в одному каналі. Це перетворення - це проста арифметична операція, яка ідеально оборотна, за винятком випадків помилки округлення.
Якщо використовується будь-яка кольорова підсистема (іншими словами, використовуючи що-небудь, крім режиму 4: 4: 4), то вертикальна та / або горизонтальна роздільна здатність каналів Pb і Pr зменшується вдвічі. Таким чином, ці канали будуть мати різні розміри пікселів до каналу яскравості. Це призводить до постійної втрати роздільної здатності в кольорових каналах.
Для кожного каналу зображення поділяється на блоки по 8 пікселів на 8 пікселів, що дає 64 лінійних значення для кожного такого блоку в кожному каналі. Якщо канал не є кратним 8 пікселів в будь-якому вимірі, то крайові пікселі повторюються (і будуть викинуті під час декомпресії - таким чином стиснення JPEG завжди ефективніше з розмірами, кратними 8 пікселів, або 16, якщо покласти фактор в кольоровій підсистемі).
64 значення в кожному блоці піддаються перетворенню з космічної області в частотну область, в цьому випадку називається дискретним перетворенням косинусів. У кінцевому підсумку ви маєте 64 коефіцієнти, кожен з яких представляє амплітуду певної частотної карти над областю, прийнятою цим блоком. Перше значення - це найнижча частота, яка фактично є середнім значенням усіх пікселів, аж до останніх значень, які описують компонент найвищої частоти блоку. Більш ранні значення відхиляються набагато більше і важливіші для вигляду остаточного зображення, ніж пізніші значення в блоці. Ця операція ідеально оборотна, якщо ви використовуєте достатню точність.
Потім відбувається квантування, де кожен із 64 коефіцієнтів, які ви отримали на попередньому етапі, ділиться на деяку кількість (називається коефіцієнтом квантування), а решту викидається. Тут найбільше впливає на точність зразків, але саме там ви отримуєте величезну економію простору від JPEG порівняно з стисненням без втрат. Оскільки в попередній трансформації все знаходиться в частотній області, ця втрата точності робить найкращу роботу зі збереження якості сприйнятого зображення, ніж просто зменшення глибини біта / точності пікселів до цього перетворення. Реверс цієї процедури - це просто помножити на те саме число, на яке ви розділили коефіцієнти, але, звичайно, оскільки ви викинули залишки, ви закінчитеся з меншою точністю коефіцієнтів. Це призводить до постійної втрати якості,
Після цього квантування типовим для багатьох пізніших менш значущих коефіцієнтів є нуль, тому їх викидають. Тоді порядок кодування (без втрат) кодування змінної довжини ефективно кодує всі решта коефіцієнтів, хоча кожен може використовувати різну кількість біт.
Неможливо сказати, що певний коефіцієнт квантування еквівалентний певній глибині бітів, оскільки квантування не дає смуги, як коли ви зменшуєте глибину бітів, а натомість дає загальну перцептивну втрату в деталях, починаючи з частин, де ви це помітили. менше, тому що він має таку низьку амплітуду за своєю частотою.
Представлення кольоровості (Cb Cr) в окремих каналах від luma (Y) має ще один позитивний вплив на стиснення. Більшість видимої інформації знаходиться в каналі луми. Людські очі переносять як менший просторовий дозвіл, так і більш агресивне квантування в хромових каналах. Таким чином, агресивно стиснене зображення може в кінцевому рахунку витратити близько 10% файлового простору для кольоровості, а решта - для луми, і все ще виглядати гідно.
Зрештою, це все ще втрата стиснення.
Приблизно 8 біт для кожного каналу, але є кілька дещо різних способів зробити це. Деталі наведені у статті Вікіпедії на YCbCr .