JPEG b> p>
Формат файла JPEG (Joint Photographic Experts Group - Об'єднана експертна група по фотографії, вимовляється "джейпег") був розроблений
компанією C-Cube Microsystems як ефективний метод зберігання зображень з великою глибиною кольору, наприклад, одержуваних при скануванні фотографій з
численними ледь уловимими (а іноді й невловимими) відтінками кольору. Найбільша відмінність формату JPEG від інших розглянутих тут форматів полягає в
те, що в JPEG використовується алгоритм стиснення з втратами (а не алгоритм без втрат) інформації. Алгоритм стиснення без втрат так зберігає інформацію про
зображенні, що розпаковані зображення в точності відповідає оригіналу. При стисненні з втратами приноситься в жертву частину інформації про зображення,
щоб досягти більшого коефіцієнта стиснення. Розпаковані зображення JPEG рідко відповідає оригіналу абсолютно точно, але дуже часто ці відмінності
настільки незначні, що їх навряд можна (якщо взагалі можна) виявити. p>
Процес стиснення зображення JPEG досить складний і часто для досягнення прийнятної продуктивності вимагає спеціальної апаратури. Спочатку
зображення розбивається на квадратні блоки із стороною розміром 8 пікселів. Потім проводиться стиснення кожного блоку окремо за три кроки. На першому кроці з
допомогою формули дискретного косінусоідального перетворення фури (DCT) проводиться перетворення блоку 8х8 з інформацією про пікселях в матрицю 8x8
амплітудних значень, що відображають різні частоти (швидкості зміни кольору) у зображенні. На другому кроці значення матриці амплітуд діляться на значення
матриці квантування, яка зміщена так, щоб відфільтрувати амплітуди, незначно впливають на загальний вигляд зображення. На третьому і останньому кроці
квантованими матриця амплітуд стискається з використанням алгоритму стиснення без втрат. p>
Оперує алгоритм областями 8х8, на яких яскравість і колір змінюються порівняно плавно. Внаслідок цього у процесі розкладання матриці такої області в
подвійний ряд по косінуса значущими виявляються тільки перші коефіцієнти. Таким чином, стиснення в JPEG здійснюється за рахунок малої величини значень
амплітуд високих частот у реальних зображеннях. p>
Оскільки в квантованими матриці відсутня значна частка високочастотної інформації, наявної у вихідній матриці, перший часто
стискується до половини свого початкового розміру або навіть ще більше. Реальні фотографічні зображення часто зовсім неможливо стиснути за допомогою
методів стиснення без втрат, тому 50%-е стиск слід визнати досить гарним. З іншого боку, застосовуючи методи стиснення без втрат, можна стискати
деякі зображення на 90%. Такі зображення погано підходять для стискування методом JPEG. P>
При стисненні методом JPEG втрати інформації відбуваються на другому кроці процесу. Чим більше значення в матриці квантування, тим більше відкидається
інформації з зображення і тим більш щільно стискається зображення. Компроміс полягає в тому, що більш високі значення квантування призводять до гіршого
якістю зображення. При формуванні зображення JPEG користувач встановлює показник якості, величиною якого "управляє"
значеннями матриці квантування. Оптимальні показники якості, що забезпечують кращий баланс між коефіцієнтом стиснення і якістю зображення, різні для
різних зображень і зазвичай можуть бути знайдені тільки методом проб і помилок. p>
Коефіцієнт архівації в JPEG може змінюватися в межах від 2 до 200 разів. Як і у будь-якого іншого алгоритму стиснення з втратами, у JPEG свої особливості.
Найбільш відомі "ефект Гіббса" і дроблення зображення на квадрати 8х8. Перший виявляється близько різких меж предметів, утворюючи своєрідний
"ореол". Він добре помітний, якщо, припустимо, поверх фотографії зробити напис кольором, сильно відрізняється від фону. Розбиття на квадрати відбувається,
коли задається занадто великий коефіцієнт архівації для даної конкретної картинки. p>
Не дуже приємним властивістю JPEG є також те, що нерідко горизонтальні і вертикальні смуги на дисплеї абсолютно не видно, і можуть
проявитися лише при друці у вигляді муарового візерунка. Він виникає при накладенні похилого растру друку на смуги зображення. Через ці сюрпризів JPEG не
рекомендується активно використовувати в поліграфії, задаючи високі коефіцієнти. Однак при архівації зображень, призначених для перегляду людиною, він
на даний момент незамінний. p>
Широке застосування JPEG стримується, мабуть, лише тим, що він оперує 24-бітними зображеннями. Тому для того, щоб з прийнятною якістю
подивитися картинку на звичайному моніторі в 256-кольоровий палітрі, потрібне застосування відповідних алгоритмів і, отже, певний час. У
додатках, орієнтованих на прискіпливого користувача, таких, наприклад, як ігри, подібні затримки неприйнятні. Крім того, якщо наявні у вас зображення,
припустимо, в 8-бітному форматі GIF перевести в 24-бітний JPEG, а потім назад в GIF для перегляду, то втрата якості відбудеться двічі при обох
перетвореннях. Проте виграш у розмірах архівів часто настільки великий (у 3-20 разів!), А втрати якості настільки малі, що зберігання зображень
в JPEG виявляється дуже ефективним. JPEG-стиснення реалізовано у форматах JPG і TIFF p>
Кілька слів необхідно сказати про модифікаціях цього алгоритму. Хоча JPEG і є стандартом ISO, формат його файлів не був зафіксований. Користуючись
цим, виробники використовують свої, несумісні між собою формати, і, отже, можуть змінити алгоритм. Так, внутрішні таблиці алгоритму,
рекомендовані ISO, замінюються ними на свої власні. Крім того, легка плутанина присутній при завданні ступеня втрат. Наприклад, при тестуванні з'ясовується,
що "відмінний" якість, "100%" та "0 балів", дають істотно розрізняються картинки. При цьому, до речі, "100%"
якості не означає стиснення без втрат. Зустрічаються також варіанти JPEG для специфічних додатків. P>
Алгоритм JPEG можна розділити на кілька етапов0. Подготовка1. ДКП (дискретно Косінусоідальное Перетворення) 2. Квантованіе3. Вторинне стиснення ------------------------------------------------ ----------------------------- Етап 0. Підготовка ------------------------------------------------- ----------------------------
Чутливість людського ока до яскравості Y-компоненту і цветностним компонентів Cb і Cr неоднакова, тому цілком припустимим видається
виконання цього перетворення з проріджуванням (інтерлівінгом) Cb і Cr компонентів, коли для групи з чотирьох сусідніх пікселів (2x2) обчислюються
Y-компоненти, а Cb і Cr використовуються загальні (схема 4:1:1). Більш того, пре-і постфільтрація в площинах Cb і Cr дозволяє використовувати проріджування по
схемою 16:1:1 без скільки-небудь значної втрати якості! Неважко підрахувати, що вже схема 4:1:1 дозволяє скоротити вихідний потік вдвічі
(замість 12 байтів для чотирьох сусідніх пікселів достатньо шести). Схема 16:1:1 забезпечує скорочення потоку в 2,67 рази. p>
Потрібно перетворити зображення в вигляд яскравість/кольоровість, можна використовувати колірну схему YCbCr (YUV), ось формули перекладу: Y = 0.299 * R + 0.578 * G + 0.114 * BCb = 0.1678 * R - 0.3313 * G + 0.5 * BCr = 0.5 * R - 0.4187 * G + 0.0813 * B Y потрібно зберегти без змін, його можна стиснути будь-яким алгоритмом без втрати даних. Тепер пояснимо, як стиснути Cb і Cr ------------------ -------------------------------------------------- --------- Етап 1. ДКП ------------------------------------------------- ---------------------------- Слід створити ДКП матрицю, використовуючи цю формулу DCT = 1/sqr (N), якщо i = 0 ij DCT = sqr (2/N) * cos [(2j +1) * i * 3.14/2N], якщо i> 0 ij N = 8, 0 p>