Графічний формат jpeg - опис і алгоритми стиснення, matrixblogmatrixblog

Всім привіт, сьогодні ми трохи розглянемо графічний формат JPEG, а також алгоритми стиснення даних, з втратами і без втрат.

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

З минулої статті "Цифрові зображення - пікселі, дозвіл і глибина кольору", з'ясувалося, що одна 6-мегапіксельна фотографія в графічному форматі файлу JPEG, що зберігається в 24 бітної глибини кольору (8 біт на канал) повинна мати розмір 18 МБ. Якщо Ви використовуєте глибину кольору 48 біт (16 біт / канал), фотографії будуть мати навіть 36 МБ. Бажання зменшити вагу картинки, привело до створення алгоритмів стиснення.

Стиснення без втрат

Графічний формат jpeg - опис і алгоритми стиснення, matrixblogmatrixblog
Принцип стиснення полягає в Скремблювання даних таким чином, щоб вихідний файл був менше ніж оригінальний. Уявіть собі, наприклад, ряд з 30 цифр:

9 7 3 0 0 0 0 0 0 0 0 0 9 9 9 9 9 9 6 7 6 3 7 6 5 5 5 5 5 5

Якщо домовитися, що символ "n / B" буде означати n-е повторення числа B, то можна ці 30 чисел перетворити в такий спосіб:

9 7 3 "9/0" "6/9" 6 7 6 3 7 6 "6/5"

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

Стиснення без втрат використовується, наприклад, популярними ZIP архиваторами, якими зазвичай упаковують різні види даних. Той факт, що вихідні дані можна на 100% відновити, ідеально підходить для загальної упаковки чого-небудь - наприклад, комп'ютерних програм, текстів, а також фотографій в графічному форматі JPEG. Алгоритм фактичного стиснення, звичайно, набагато складніше, ніж наведений вище приклад, він використовує статистичну надмірність даних. Ступінь стиснення, або співвідношення розмірів оригінальних даних до стисненим, сильно залежить від змісту - чим більше надмірність дані, тим більше вдасться їх зменшити. Відносно графіки, рівень стиснення найкраще досягається для монотонних зображень.

Стиснення з втратами

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

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

Графічний формат JPEG - невеликий опис

Графічний формат jpeg - опис і алгоритми стиснення, matrixblogmatrixblog

Остаточна економія розміру графічного формату файлу JPEG залежить не тільки від обраної ступеня стиснення, а й від змісту фотографії. Різкі фотографії сповнені дрібних деталей (наприклад, поле або трава) і їх можна стискати набагато менше, ніж, наприклад, портрет з расфокусированним фоном.

Алгоритм кодування в графічному форматі JPEG можна дуже спрощено описати наступним чином:

  1. Вхідне зображення з колірною моделі RGB перетворюється в модель YCbCr, яка окремо зберігає канал яскравості Y і дві кольорові компоненти Cb і Cr. Подібний спосіб передачі використовується і в телебаченні, в системі PAL або колірної моделі L * a * b.
  2. Причина перекладу в YCbCr в тому, що око набагато менш чутливий до змін в кольорі, ніж в яскравості. Іншими словами - кольору можна стискати набагато більше, ніж яскравість і очей цього стиснення не помітить. Це саме по собі значно зменшує розмір кінцевого графічного формату файлу JPEG.
  3. Наступний крок застосовується в рівній мірі до Y, Cb і Cr компонентів, коли JPEG зображення ділиться на піксельні квадрати 8х8, і в них, за допомогою, так званого, дискретного косинусного перетворення (DCT), відбувається пошук повторюваних зразків.
  4. На закінчення, на результат ще застосовується JPEG стиснення без втрат і результат зберігається як графічному форматі файлу JPEG (jpg розширення).

Недоліки графічного формату файлів JPEG

Графічний формат JPEG хоча і дуже популярний, але має низку недоліків:

  1. Файл зображення в формат JPEG не підтримує більш високу глибину кольору і завжди працює з глибиною кольору "всього лише" 24 біта (тобто 8 біт / канал). Тому, він не дозволяє використовувати більше 12-бітного кольору на канал, отриманого, наприклад, з RAW формату.
  2. JPEG формат не підтримує прозорість і не в змозі зберегти зображення з прозорим фоном. Прозорість при створенні комп'ютерної графіки та колажу часто необхідний, і тому необхідно вдаватися до інших графічним форматам (TIFF. PNG, GIF. PSD і т.д).
  3. Через використовуваного методу стиснення, формат стиснення JPEG не підходить для зберігання графіки (малюнки, графіки, діаграми, іконки, скріншоти і т.п.). Алгоритм стиснення JPEG відображається на лініях і буквах, вони змащуються, і тим самим погіршується їх зовнішній вигляд і читаність.
  4. Графічний JPEG формат не підтримує анімацію (рухомі картинки). Це область GIF або Flash даних.
  5. Графічний формат файлів JPEG не підтримує стиснення без втрат. Стиснення завжди з втратами, однак, при високій якості результат абсолютно невиразний, наприклад, від стиснення без втрат в TIFF.
  6. JPEG формат не підтримує збереження зображення, що містить кілька шарів. Це область TIFF або, скоріше, PSD.
  7. JPEG графічний формат не підтримує векторну графіку, підходить тільки для фотографій.
  8. Повторне збереження в форматі JPEG погіршує фото.

Звичайно, хоча JPEG і має недоліки, але він як і раніше популярний.