Тест на «профпридатність» графічних форматів

  1. Форматів, дійсно потрібних для зберігання зображень, не так вже й багато. А якщо відкинути PCX і TIFF,...
  2. JPEG
  3. PNG
  4. Очна ставка форматів
  5. вирок
Форматів, дійсно потрібних для зберігання зображень, не так вже й багато. А якщо відкинути PCX і TIFF, які раніше були популярними, а тепер поступово застарівають, то їх залишається всього чотири: BMP, JPEG, PNG і GIF. І цілком ймовірно, що скоро можна буде і GIF віднести до групи форматів, використання яких нераціонально.

Зараз найпростіший (якщо не сказати примітивний) графічний формат - BMP. Записаний в ньому файл являє собою масив даних, що містить інформацію про колір кожного пікселя, т. Е. Зображення розміром 1024х768 пікселів з глибиною кольору 24 біта буде займати 1024х768х3 = 2 359 296 байт (без урахування службової інформації про обсяг і імені файлу, що становить ще кілька сот байт). Навіть при нинішніх ємностях жорстких дисків зберігати колекцію 2,5-Мбайт графічних файлів вкрай обтяжливо. Та й передача графіки в форматі BMP по мережі (по крайней мере, без стиснення за допомогою різних архіваторів) - заняття не надто приємне. Зайве нагадувати, що 10-20 років тому можливості «заліза» були набагато скромніші, тому питання про розробку методів стиснення графічної інформації до прийнятних розмірів стояло дуже гостро.

Від LZW до GIF

Ще в далекому 1977 ізраїльські математики А. Лемпел і Я. Зів розробили новий клас алгоритмів стиснення без втрат, який отримав назву метод Лемпела-Зива. Одночасно з самим алгоритмом, що має назву LZ77 (за першими літерами прізвищ вчених і останнім цифрам року створення), світ побачила стаття, де викладалися загальні ідеї даного методу. Згодом з'явилася вдосконалена версія продукту - LZ78. Багато фахівців прагнули доопрацювати його; найбільшого поширення набув варіант LZW, написаний Т. Уелчем, співробітником фірми Unisys, в 1983 р Він відрізнявся від свого прабатька більш високою швидкодією. У 1985 р Unisys запатентувала LZW. Цей алгоритм універсальний і може використовуватися для стиснення інформації будь-якого виду. Однак найуспішніше він справляється з графічними зображеннями.

Через десятиліття після опублікування матеріалів, де викладається суть методу Лемпела-Зива, але в настільки ж далекому від нас 1987 році компанія CompuServe розробила на основі алгоритму LZW графічний формат GIF (Graphic Interchange Format), який дозволив ефективно стискати зображення з глибиною кольору до 8 біт , а на ті часи 256 відтінків вважалося величезною кількістю.

У 1989 р CompuServe випустила вдосконалену версію формату, названу GIF89a. У неї були додані дві чудові функції, які і до цього дня забезпечують формату шалену популярність в Інтернеті (GIF позиціонується передусім як мережевий формат). По-перше, був доданий альфа-канал, де може зберігатися маска прозорості, по-друге, GIF став анімованим, т. Е. В один файл можна помістити кілька зображень, які будуть змінювати один одного через заданий інтервал часу.

Ще одна корисна особливість формату - черезрядковий. Під час завантаження зображення спочатку показуються перший рядок, п'ята, десята і т. Д., А потім - друга, шоста, одинадцята ... Таким чином створюється ефект поступового прояви картинки на екрані. Це дозволяє побачити і оцінити зображення ще до завершення завантаження, що особливо вигідно при роботі з файлами значних розмірів.

Думаю, область застосування GIF відома всім - це зображення з різкими колірними переходами і бізнес-графіка (логотипи, кнопки, елементи оформлення і т. П.). А ось для тих картинок, де важливо поступова зміна відтінків (наприклад, для фотографій), даний формат підходить найменше. Перша причина таких досить жорстких обмежень - невелика за сучасними мірками максимальна глибина кольору зображення. Для фото 8 біт явно недостатньо. Друга - не завжди коректне перетворення файлів з плавними колірними переливами в палітру 256 кольорів і менш. Третя причина обмеженості сфери застосування GIF полягає в особливостях методу стиснення інформації. Дані про зображення записуються через підрядник. У підсумку всі операції відбуваються з масивом рядків висотою в один піксель (кожен рядок обробляється окремо). Наслідок цього - не тільки крайня неефективність стиснення фотографій і будь-яких інших зображень, що містять мало однотонних областей, а й залежність його результату від розташування об'єктів.

До речі, алгоритм LZW використовується і в форматі TIFF. Однак він за якістю стиснення значно поступається формату GIF, хоча і підтримує більшу кількість кольорів в палітрі.

JPEG

Формати на основі LZW не справлялися з ефективною обробкою фотографій, і тому з'явилася ідея стиснення з втратою якості. Суть його полягає в тому, що частина малопомітних для ока деталей зображення опускається, а відновлений після стиснення цифрового масив в повному обсязі відповідає оригіналу. Таким чином, можна домогтися досить великій мірі стиснення даних - в 10-20 разів замість дворазового, виробленого без втрат.

У 1991 р група Joint Photographic Experts Group, яка спирається на більш ніж піввіковий досвід досліджень в області людського зору, представила першу специфікацію формату JPEG. Через три роки вона була визнана індустріальним стандартом кодування нерухомих зображень, зареєстрованим як ISO / IEC 10918-1. Згодом JPEG ліг в основу стандарту стиснення відео MPEG.

Процес обробки графічної інформації алгоритмом JPEG дуже нагадує стиснення звукових даних в форматі МР3 (див. «Світ ПК», №4 / 03, с. 148 ).

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

2. Перехід до більш придатному для стиснення способу представлення кольорів. Звична модель RGB переводиться в YCbCr, де Y - сигнал яскравості, а Cb і Cr - насиченість синього і червоного відповідно. Такий спосіб представлення кольорів буде краще і з точки зору сприйняття зображення людським оком. Як відомо, зорова інформація сприймається за допомогою сенсорів двох типів: паличок і колбочок. Перші аналізують яркостную складову зображення, другі - колір. Паличок в 20 разів більше, ніж колб, і, отже, очей більш сприйнятливий до зміни яскравості, ніж кольори.

Якщо врахувати описану особливість людського зору, то з матриць значень насиченості синього і червоного слід відкидати всі парні рядки і стовпці. Таким чином втрачається 75% інформації про розподіл квітів. Матриця звітів про яскравість не змінюється, а ділиться на чотири частини, утворюючи блоки 8х8.

3. Виконується дискретне косинусное перетворення (Discrete Cosine Transform, DCT), запропоноване В. Ченом в 1981 р Воно схоже з перетворенням Фур'є, тільки у DCT трохи нижче ймовірність виникнення помилки. Застосування цього чисто математичного прийому пояснюється тим, що в реальних зображеннях сусідні блоки досить схожі (коефіцієнт кореляції - 0,9-0,98). DCT перетворює інформацію про колір і яскравість кожного пікселя в інформацію про швидкість зміни цих величин. Це перетворення є оборотним, і, значить, по новій матриці може бути відновлена ​​вихідна з точністю до похибки даного методу. DCT дозволяє значно скоротити обсяг даних і розмір одержуваного файлу.

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

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

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

PNG

PNG (Portable Network Graphics) зобов'язаний своєю появою на світло формату GIF, а точніше, його комерційному статусу. Справа в тому, що GIF заснований на запатентованому алгоритмі LZW, що належить фірмі Unisys, яка в перші роки існування GIF не висувала ніяких претензій фірмі CompuServe, яка розробила цей формат. Але стрімкий розвиток Інтернету в 1993-1994 рр. внесло свої корективи у взаємини компаній. І з корисливих цілей Unisys ініціювала судовий процес проти CompuServe. Рішення суду зобов'язувало розробників ПЗ, в якому використовується формат GIF, платити фірмі Unisys ліцензійні відрахування. Таким чином, GIF став платним.

За традицією будь-якому комерційному програмному продукту рано чи пізно буде запропонована безкоштовна альтернатива. Прикладами в даному випадку можуть служити операційні системи Windows і Linux або формати стиснення звуку МР3 і OGG, причому цей список можна продовжувати досить довго. GIF також не судилося втримати статус безальтернативного формату. Днем народження PNG можна вважати 4 січня 1995, коли Т. Боутелл запропонував в низці конференцій Usenet створити вільний формат, який був би не гірше GIF. І вже через три тижні після публікації ідеї були розроблені чотири версії нового формату. Спочатку він мав назву PBF (Portable Bitmap Format), а нинішнє ім'я отримав 23 січня 1995 р Уже в грудні того ж року специфікація PNG версії 0.92 була розглянута консорціумом W3C, а з виходом 1 жовтня 1996 р версії 1.0 PNG був рекомендований як повноправного мережевого формату.

До моменту створення PNG глибина кольору 8 біт, що надається GIF, перестала задовольняти сучасним вимогам. Серед пропозицій довести глибину кольору до 24, 48 і навіть до 64 біт був обраний перший варіант. Як показав час, це рішення виявилося раціональним і таким, що відповідає сучасним запитам. У заголовку файлу формату PNG зберігається опис всієї палітри. Підстроївшись таким чином під реальну кількість квітів, можна отримати досить компактний файл на виході.

Формат PNG має масу достоїнств, що вигідно відрізняють його від конкурентів. Найголовніша з них - попередня фільтрація оброблюваних даних, оскільки більшість алгоритмів стиснення розраховані на одну цілком певну модель інформації. Наприклад, формат JPEG «заточений» для зображень з плавними колірними переходами, а GIF - з великою кількістю однотонних областей. І чим більше структура картинки відрізняється від зразка, тим нижче ефективність стиснення. Часом зміна всього декількох біт приводить до того, що алгоритм починає працювати дуже добре або, навпаки, дуже погано. Тим часом формат PNG стабільніше сприймає такі трансформації, і високий коефіцієнт стиснення досягається практично для будь-якого роду зображень шляхом перетворення інформації в вигляд, найбільш прийнятний для обробки.

Формат PNG дуже зручний для створення елементів оформлення веб-сторінок завдяки наявності більш досконалого альфа-каналу, ніж у GIF. Число його рівнів доведено до 254 (в більшості форматів альфа-канал обмежується всього двома шарами), а прозорість кожного з них може варіювати від 0 до 100%. Таким чином, PNG надає веб-дизайнерам дуже потужний і зручний засіб для побудови складних багатошарових зображень. Єдиний тип малюнків, де PNG не може потіснити GIF на веб-сторінках, - невеликі кнопки і «смайлики» розміром до 700-800 байт в форматі GIF. За рахунок службової інформації та опису палітри такі файли в форматі PNG займають на 10-30% більше місця, та й анімовані картинки цей формат не підтримує. До речі, статичні «смайлики» частіше використовуються на сторінках журналів, ніж у Всесвітній павутині.

Будучи форматом наступного покоління PNG має ще кілька приємними нововведеннями в порівнянні зі «старичками» JPEG і GIF. По-перше, це дещо модифікований варіант черезрядковості. На відміну від GIF, де не до кінця завантажене зображення відображається великими рядками, в форматі PNG такий файл показується великими точками, т. Е. Розгортку варто було б називати не чергуванням, а «чересточечной», хоча перший варіант - вже сталий (походить від англійського interlace).

По-друге, не можна не відзначити вбудовану в формат гамма-корекцію. При перенесенні графічного файлу з одного комп'ютера на інший зображення може виглядати світліше або темніше, ніж в оригіналі. Ситуація загострюється тоді, коли на комп'ютерах встановлені різні ОС (MS Windows і Linux) або коли машини побудовані на базі різних платформ (наприклад, PC і Macintosh). Співвідношення між цифровою інформацією та реально спостерігаються на моніторі квітами називається гамою. Вбудована в формат PNG гамма-корекція працює наступним чином: дані про настройках дисплея, відеоплати і ПО (інформація про гамі) записуються в файл, при перенесенні якого на інший комп'ютер вид PNG-зображення не зміниться.

Очна ставка форматів

На перший погляд, у всіх описаних форматів подібне призначення: домогтися зменшення розміру графічного файлу до розумних меж, щоб його було зручно зберігати на жорсткому диску і передавати через мережу. Але алгоритми стиснення у кожного з них настільки різняться, що і сфери використання GIF, JPEG і PNG виявилися різними. І щоб з'ясувати оптимальні області застосування цих форматів, був проведений аналіз за участю досить великої кількості тестових зображень (див. таблицю ).

Фотографічні зображення. Як виявилося, знайти де-небудь картинку фотографічної якості - завдання не з легких навіть для власників цифрової фотокамери, оскільки вона зберігає знімки у форматі JPEG, так і конвертувати JPEG в GIF або PNG було б не зовсім коректно. Але вдалося розв'язати цю проблему досить елегантним способом: в сканер була навалена купа сміття і перетворена в цифрову форму. Одержаний «шедевр» розміром 2530х3490 точок з глибиною кольору 24 біта, який займає 25,2 Мбайт, стискалася в форматах JPEG і PNG (внаслідок нездатності зберігати зображення з палітрою, що включає більше 256 кольорів, GIF задіяний не був).

Як і слід було очікувати, в даному випадку формат JPEG з підібраним експериментальним шляхом якістю в 70% набагато випередив конкурентів. При мінімальній втраті якості стиснення більш ніж в 25 разів гідно похвали. Причому відмінності між оригіналом і стиснутим файлом можна замінити, тільки якщо сильно збільшити зображення. PNG впорався із завданням набагато гірше. Останнім прийшов до фінішу універсальний алгоритм стиснення інформації, реалізований у програмі WinRAR 3.20, який був включений в тест з цікавості.

Найбільш цікаві результати дало стиснення зображення, перекладеного в палітру 256 кольорів (8,42 Мбайт в форматі BMP), завдяки чому в змаганні зміг брати участь GIF. І на цей раз в лідери вийшов JPEG, але, всупереч припущенням, розмір файлу вийшов трохи більшим, ніж при стисканні тієї ж картинки, але з глибиною кольору 24 біта. Ймовірно, збільшення розміру файлу викликано огрубіння колірних переходів при перекладі в палітру 8 біт. Серед форматів GIF і PNG останній виявився явним фаворитом, проте стиснення зображення архиватором дало просто вражаючий результат: RAR-алгоритм перевершив за ступенем стиснення формати, спеціально призначені для обробки зображень.

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

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

Електрична схема. Це зображення з малою кількістю квітів, что містіть в основном однотонні області и різкі колірні переходи. Здавай б, тут формат GIF винен каменя на камені НЕ Залишити від конкурентів. Альо и тут ситуация склалось нема на Користь дітіща CompuServe. Явнім аутсайдером став JPEG. Даже при 100% -ному якості (204 Кбайт) в очі кідається Деяк освітлення зафарбованіх областей (сірого та жовтого). При установці ж 6% -го якості, коли розмір малюнку можна порівняті з ОБСЯГИ файлів у форматах PNG и GIF, зображення сильно «попливло». А ось той факт, що PNG-файл займає на 20% менше місця, ніж аналогічна картинка в форматі GIF, змушує задуматися про ефективність останнього. І знову тут здивував WinRAR, зіщулившись схему майже в 2 рази краще все того ж GIF.

«Смугасті» малюнки. Вельми показовий приклад, що виявляє головний недолік LZW-алгоритму, застосованого в форматі GIF. Малюнок, що складається з горизонтальних смуг, займає в форматі GIF майже в 4 рази менше місця, ніж те ж зображення, повернене на 90o. Попередня фільтрація інформації, реалізована в PNG, зробила цей формат вільним від даного недоліку. Крім більшому ступені стиснення в порівнянні з GIF відмінність в розмірі «смугастих» файлів склало всього 10%. Але самими компактними знову опинилися BMP-файли, упаковані архіватором. А різниця в 2 (!) Байта між зображеннями з горизонтальними і вертикальними смугами просто вражає.

Знімок з екрану. У ньому були присутні досить складні багатоколірні елементи і все 256 кольорів палітри. Результат: зображення у форматі PNG на 40% менше GIF-файлу.

«Смайлик». Мабуть, єдина на найближчий час гарантія «недоторканності» формату GIF - величезна популярність різних графічних «смайликів» на широких мережевих просторах, зокрема на форумах і в чатах. Часом буває набагато легше передати яскраву емоцію за допомогою маленької картинки, ніж зробити це словом і навіть цілим пропозицією. Та й по компактності одержуваного файлу GIF в даному випадку поза конкуренцією.

вирок

З одного боку, результати порівняльного аналізу основних графічних форматів виявилися досить передбачуваними. В області зберігання фотозображень явним лідером, якщо не сказати монополістом, став формат JPEG. Він забезпечує відмінну якість картинки при малих розмірах файлу. Для інших цілей цей формат абсолютно непридатний. З іншого боку, ще до початку роботи над цією статтею я і не думав, що мені доведеться розписуватися в повну неспроможність GIF. При всій своїй популярності алгоритм стиснення цього формату абсолютно застарів. Молодший PNG перевершує GIF і за якістю стиснення практично всіх зображень. Убога на нинішній день глибина кольору 8 біт не дозволяє зберігати в GIF фотографії (некоректну передачу кольору я вже зазначав - GIF трохи «пустує» з палітрою, псуючи картинку). Формат PNG годиться, наприклад, для проміжних версій підлягають редагуванню фотозображень, коли BMP-файли займають занадто багато місця, а кожне наступне збереження в JPEG призводить до втрати якості.

Борознячи простори глобальної мережі, я помітив, що для нефотографіческіх зображень GIF використовується в 95% випадків (в останніх 5% застосовується PNG). А адже GIF - єдиний платний графічний формат, до того ж сильно поступається за можливостями своїм безкоштовного конкуренту. Нічим, крім сили звички і ліні веб-дизайнерів, я даний факт пояснити не можу. Тим часом формат PNG поряд з найкращим алгоритмом стиснення може похвалитися багаторівневим альфа-каналом і гамма-корекцією. Втім, популярність PNG зростає з кожним днем. Очевидно, що GIF здатний утримуватися на плаву за рахунок однієї своєї особливості: в ньому дозволено створювати анімовані зображення. Хоча хто знає, може бути, анімована версія PNG з'явиться вже завтра, а GIF назавжди піде в історію.

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