Як працює стиснення JPEG
Просте пояснення етапів ефективного стиснення зображень
24. January 2025 автор Bianca Palmer
Чи замислювалися ви, як ваш телефон або камера можуть зробити знімок, і вже за мить він зберігається як JPEG: менший, швидший і водночас чіткий? За лаштунками працює потужний процес, який зменшує великі файли зображень до частки їхнього початкового розміру, зберігаючи високу якість. Але як це насправді працює? У цьому посібнику ми розглянемо деталі Стиснення JPEGі поетапно розберемо кожен крок простими словами, щоб ви зрозуміли, як працює цей процес стиснення зображень.
Що таке JPEG?
JPEG (скорочення від Joint Photographic Experts Group) є одним із найпоширеніших форматів зображень. Це основний формат для зберігання цифрових фотографій. Головна перевага JPEG полягає в можливості стискати файли зображень, роблячи їх набагато меншими без помітної втрати якості.
Наприклад, високоякісне нестиснене зображення може мати розмір 46 МБ. Після стиснення в JPEG те саме зображення може зменшитися до лише 4,1 МБ. Але як йому вдається зберігати чіткість?
Відповідь полягає в compression process, процесі стиснення, який використовує особливості нашого зору та видаляє зайві дані.
Що робить JPEG?
Простими словами, JPEG аналізує зображення та видаляє елементи, які наші очі погано помічають. Коли ви стискаєте зображення за допомогою JPEG, ви можете контролювати ступінь стиснення. Налаштовуючи параметр "якість", ви вирішуєте, скільки місця потрібно заощадити. Коли якість зменшується зі 100% до 0%, розмір файлу зменшується так само.
Чим сильніше стиснення, тим більше ймовірність появи дефектів або "артефактів", при цьому роздільна здатність зображення не змінюється. Такі дефекти виглядають як маленькі квадрати і їх часто важко помітити, доки ви не збільшите зображення. Мета JPEG зробити файл якомога меншим, не погіршуючи сприйняття зображення людським оком.
Етапи стиснення JPEG
Стиснення JPEG це не один процес, а послідовність кроків, спрямованих на зменшення розміру зображення. Ось п’ять ключових етапів, які роблять JPEG таким ефективним.
Крок 1: Перетворення колірного простору
Зображення складаються з пікселів, і кожен піксель має червону, зелену та синю (RGB) складові, які разом утворюють колір. JPEG починає з перетворення цих значень RGB в інший колірний простір:
- Яскравість (Luminance): це яскравість або світлість пікселя, важливий параметр для загального контрасту зображення.
- Колірність (Chrominance): це інформація про колір, включно з відтінком і насиченістю.
Це перетворення використовує той факт, що людське око чутливіше до яскравості (luminance), ніж до кольору (chrominance). Відокремивши яскравість від кольору, JPEG дозволяє вибірково зменшувати обсяг даних на наступних етапах, зберігаючи при цьому найважливіші візуальні деталі.
На цьому етапі дані не втрачаються, але зображення готується до ефективного стиснення.
Крок 2: Зменшення колірності / Chroma Subsampling
Chroma Subsampling є це метод, який застосовується після перетворення колірного простору. Пам’ятаєте, ми згадували, що наше око гірше сприймає кольори (chrominance), ніж яскравість (luminance)?
JPEG використовує це, зменшуючи кількість колірних даних. Сині та червоні компоненти колірності зменшуються шляхом усереднення в блоках по чотири пікселі. Це значно скорочує обсяг даних про колір, зберігаючи яскравість (luminance) незмінною. На цьому етапі зображення вже суттєво стиснене.
Крок 3: Дискретне косинусне перетворення (DCT)
Дискретне косинусне перетворення (DCT) це математичний метод, який перетворює дані зображення із просторової області (де зображення подане як сітка пікселів) у частотну область. Цей процес допомагає визначити, які частини зображення містять найважливішу візуальну інформацію, а які можна відкидаються.
DCT розбиває зображення на блоки 8x8 і перетворює кожен блок на набір частотних значень. Вищі частоти, які відповідають різким змінам у значеннях пікселів, як-от краї або шум, часто менш помітні для людського ока і можуть бути спрощені або видалені.
Крок 4: Квантування
Після застосування DCT отримані частотні дані проходять квантування. На цьому етапі діапазон частотних значень зменшується шляхом ділення їх на набір констант, який називається таблицею квантування. Цей процес по суті заокруглює частотні значення, щоб спростити їх.
Вищі частотні значення квантуються сильніше, тобто втрачають більше точності, оскільки вони менш важливі для загальної якості зображення. На цьому четвертому етапі зменшується обсяг даних, необхідних для подання зображення, що робить файл меншим. Однак надто сильне квантування може призвести до помітних артефактів, як-от блокуватість або розмиття, особливо за високих рівнів стиснення.
Крок 5: Кодування довжин серій і Хаффмана
Після квантування дані все ще недостатньо компактні для ефективного зберігання. Тут у хід ідуть Run Length Encoding (RLE) та Huffman Encoding які використовуються.
Спочатку RLE використовується для спрощення довгих послідовностей повторюваних даних (наприклад, нулів) шляхом збереження кількості повторень замість кожного окремого значення. Потім застосовується кодування Хаффмана, метод, який замінює часто вживані значення коротшими бітовими кодами, роблячи файл ще меншим.
These two методи кодування працюють разом, щоб значно зменшити розмір файлу без втрати більшої частини якості зображення.
Додаткові примітки
Хоча JPEG є дуже ефективним форматом, варто врахувати кілька важливих моментів:
- Рівень стиснення: JPEG дозволяє вибирати рівень стиснення, але більше стиснення зменшує розмір файлу й може спричинити помітні артефакти, як-от розмиті краї або пікселізація. Це відбувається, коли значення в таблиці квантування надто високі, що призводить до більшої кількості нулів і меншого розміру файлу, але за рахунок якості зображення.
- Втрата високочастотних даних: квантування зменшує точність високочастотних даних (деталей на кшталт різких країв), тому JPEG добре підходить для плавних текстур, але може погано справлятися з чіткими лініями та векторною графікою.
- Неідеально для векторної графіки: JPEG не є найкращим варіантом для стиснення векторної графіки, оскільки може спричиняти помітні артефакти на межах фігур або ліній.
Попри ці обмеження, JPEG залишається найпопулярнішим форматом зображень, частково тому, що він давній, добре вивчений і вільний від роялті. Однак новіші формати, такі як WebP або HEIF забезпечують ще вищий рівень стиснення без погіршення якості, що робить їх привабливими альтернативами в певних випадках.
Підсумок
Алгоритм стиснення JPEG є помітним досягненням в управлінні даними зображень. Розбиваючи зображення на менші блоки, застосовуючи математичні перетворення та використовуючи ефективні методи кодування, як-от Run Length і Huffman Encoding, він дозволяє зберігати зображення високої якості в значно менших файлах.
Хоча JPEG має певні обмеження, особливо за високих рівнів стиснення або для векторної графіки, його широке використання та здатність забезпечувати хороші результати для фотографічних зображень роблять його стійким стандартом.