Поиск по этому блогу

вторник, 1 октября 2013 г.

Методи стиснення графічної інформації

Методи компресії і стиснення зображень

     Графічні дані, особливо дані растрових файлів, займають колосальну кількість дискового простору. Наприклад, растрове зображення формату А4 у колірній моделі CMYK при дозволі 300 крапок на дюйм займає близько 30 мегабайт дискового простору. Добре, якщо файл один, і ваша публікація не використовує інших зображень (що вкрай малоймовірно). Ситуація докорінно змінюється тоді, коли Ви створюєте якийсь шедевр, наприклад, галерею репродукцій картин А2 формату, при це вона ледве вміщується на 100 сторінках, запечатаних з двох сторін. При самих скромних підрахунках (120 мегабайт х 100 аркушів х 2 сторони у кожного листа), растрові зображення в цьому форматі при такій кількості листів будуть займати близько 24 гігабайт дискового простору. На чому ви збираєтеся зберігати таку публікацію? А тепер уявіть, що у вас кілька замовників, і роботи кожного з них зберігаються в кількох варіантах оформлення, крім того, для більшості замовлень ви зберегли виконаний проект на різних стадіях його готовності, щоб у разі бажання замовника все докорінно і кардинально змінити, ви могли швидко це виконати .... Природно, всі ці дані зберегти буде дуже і дуже складно. Саме тому, а також тому, що дисковий простір звичайно досить дорого обходиться (не дивлячись на те, що пристрої для зберігання цифрової інформації постійно дешевшають, їх весь час потрібно більше і більше, що вимагає чималих капіталовкладень), були винайдені безліч методів стиснення даних самого різного типу, в тому числі і графічних. Про найбільш розповсюджених і широко використовуються ми зараз поговоримо.

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

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

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

Нижче будуть розглянуті деякі алгоритми стиснення даних, їх гідності та недоліки, а також оптимальна їх сфера застосування (тобто ті типи зображень, до яких даний метод стиснення краще застосовувати).
Спочатку розглянемо декілька алгоритмів стиснення даних, які не вносять зміни до вихідні файли і гарантують повне відновлення даних.
RLE (Run - length encoding) - метод стиснення даних, при якому однакові послідовності одних і тих же байт замінюються однократним згадкою повторюваного байт (або цілої ланцюжка байтів), і числа його повторень в вихідних даних. Наприклад, рядок типу 0100 0100 0100 0100 0100 0100 0100 0100, описує якусь групу пікселів буде замінена на запис типу 0100 х 8, і т.д. Застосовується цей тип стиснення в тих випадках, коли зображення має великі ділянки однакового кольору, цифрове подання яких ідентично. У основному, цей тип стиснення застосовується для монохромних ізображній, збережених у колірної моделі Bitmap, де при стисненні даних з його використанням можна домогтися найкращих результатів. Для стиснення інших типів даних (у тому числі, і не графічних) алгоритм застосуємо, але малоефективний, тому що стискає дані повинні мати просту повторювану структуру). Цей алгоритм має ще одне важлива перевага, що полягає в його відносній простоті, що дозволяє швидко проводити розпакування з цього формату і упаковку в цей формат (як ви пам'ятаєте, всі графічні дані для їх обробки повинні бути попередньо розпаковані, а будь-яка компресія або архівація застосовується, в основному, для тимчасового або постійного зберігання файлу). В принципі, на основі цього нескладного алгоритму, працюють більш досконалі і більш складні (а також менш швидкі) методи стиснення графічних даних, які ми розглянемо нижче. Цей метод стиснення графічних фанних використовуватися для файлів формату PSD, BMP та інших.
CCITT Group 3, CCITT Group 4 - Два схожих методу стиснення графічних даних, працюють з однобітних зображеннями, записаними в кольоровій моделі Bitmap. Базуються на пошуку і вилучення з початкового зображення дубльованих послідовностей даних (як у попередньому типі стиснення, RLE). Відмінністю є лише те, що ці алгоритми орієнтовані на упаковку саме растрової графічної інформації, тому що працюють з окремими рядами пікселів в зображенні. Спочатку алгоритм був розроблений для стискання даних, що передаються через факсимільні системи зв'язку (CCITT Group 3), а більш досконала різновид цього методу архівації даних (CCITT Group 4) підходить для запису монохромних зображень з більш високим ступенем стиснення. Як і попередній алгоритм, він, в основному, підходить для стиснення зображень з великими одноколірними областями. Його перевагою є швидкість виконання, а недолік - обмеженість застосування для компресії графічних даних (не всі дані вдається таким чином ефективно стиснути). Цей метод стиснення графічних фанних наспіл у файлах формату PDF, PostScript (в інкапсульованими об'єктах) та інших.
LZW (Lemple-Zif-Welch) - алгоритм стиснення даних, заснований на пошуку і заміни в вихідному файлі однакових послідовностей даних, для їх виключення, і зменшення розміру "архіву". На відміну від попередніх розглянутих методів стиснення, в даному випадку проводиться більш "інтелектуальний" перегляд стисливого Cодержимое, для досягнення більшого ступеня стиснення даних. Даний тип стиснення не вносить спотворень у вихідний графічний файл, і підходить для обробки растрових даних будь-якого типу - монохромних, чорно - білих, або повнокольорових. Найкращі результати виходять при компресії зображень з великими областями однакового кольору та зображень з повторюваними однаковими структурами. Цей метод дозволяє досягти одну з найкращих ступенів стиснення серед інших існуючих методів стиснення графічних даних, при одночасному повній відсутності втрат або спотворень у вихідних файлах. Цей метод стиснення графічних фанних наспіл у форматі TIFF, PDF, GIF, PostScript (в інкапсульованими об'єктах) та інших.
ZIP - Метод стиснення даних, аналогічний методу, використаного в популярному алгоритмі архівації PKZip. В основу методу стиснення покладено метод, аналогічний LZW. Як і попередній метод стиснення даних, цей спосіб не вносить спотворень в вихідний файл, і найкраще підходить для обробки графічних даних з однаковими одноколірними або повторюваними областями. Цей метод стиснення графічних фанних наспіл у файлах формату PDF, TIFF і деяких інших.
А тепер розглянемо алгоритми і методи конвертації даних, які вносять зміни в вихідні тексти, показуючи при цьому більш високу ступінь упаковки графічних зображень.
JPEG (Joint Photographic Experts Group) - метод, який використовується для зберігання напівтонових і повнокольорових зображень, що дозволяє досягти найвищого ступеня стиснення та мінімальний розмір вихідного файлу. Заснований алгоритм на особливостях сприйняття людським оком різних кольорів, і досить громіздкий з обчислювальної точки зору, так як займає багато процесорного часу. Відбувається кодування файлу в кілька етапів. По-перше, зображення умовно розбивається на кілька колірних каналів, для подальшого аналізу. Потім, зображення розбивається на групи, по 64 піксела в кожній групі, які являють собою квадратні ділянки зображення розміром 8х8 пікселів, для подальшої обробки. Потім, колір пікселів спеціальним чином кодується, виключається дублююча і надмірна інформація, причому при описі кольору більша увага приділяється швидше яскравісної, ніж колірної складової, тому що людське око сприймає більше зміни яскравості, ніж конкретного тон кольору. Отримані дані стискаються за RLE або LZW - алгоритму, для отримання ще більшої компресії. В результаті, на виході ми отримуємо файл, іноді в десятки разів менший, ніж його неконвертованого аналог. Однак, чим менше розмір вихідного файлу, тим менше ступінь "акуратності" при роботи програми - конвертора, і, відповідно, нижча якість вихідного зображення. Звичайно, у програмах, що дозволяють зберігати растрові дані, можливо завдання якогось компромісу між обсягом вихідного файлу і якістю зображення. При найвищій якості, обхем вихідного файлу в 3-5 разів менше вихідного незапакованного. При найменшому - менше исходники в десятки разів, але, як правило, при цьому якість зображення не дозволяє його де-небудь використовувати. Як правило, для збереження гідного рівня якості, використовують найвищу з доступних ступінь якості. Цей формат призначений для зберігання, в основному, фотографічних зображень з великою кількістю колірних відтінків і переходів, і практично не підходить для зберігання однотонних зображень типу кадрів з мультфільмів, скріншотів і пр. (стиснення буде занадто низьким, або якість картинки виявиться просто неприпустимим). Цей метод стиснення графічних фанних наспіл у файлах формату PDF, PostScript (в інкапсульованими об'єктах), власне, в JPEG та інших.
Головним недоліком компресії з частковою втратою якості, є те, що ці втрати, що виражаються у спотворенні тон кольору або появі характерної кубічної структури в контрастних ділянках зображення (проявляються так звані артефакти), виникають щоразу при збереженні зображення, і "накладаються" один на одного при багаторазовому збереженні файлу в цьому форматі. Тому фахівці рекомендують використовувати формати з частковою втратою якості тільки для зберігання остаточних результатів роботи, а не проміжних робочих файлів.
Крім того, як допоміжні засоби, які можуть використовуватися для зниження обсягів файлів можна розглянути зміна колірної моделі графічного файла, зміна дозволу растрового файлу і ресемплірованіе (зміна глибини кольору пікселів).
Зміна колірної моделі файлу. Наприклад, файли в кольоровому просторі CMYK більше аналогічних файлів у просторі RGB на 33% (так як в CMYK є додатковий четвертий чорний канал). Якщо ви не плануєте друк ваших файлів, або впевнені в тому, що ви зможете коректно провести кольороподіл (перехід в субтрактівним модель CMYK) пізніше, ви можете зберігати робочі файли в RGB.
Зміна дозволу растрового файлу. Файл з роздільною здатністю 600 точок на дюйм більше свого аналога роздільною здатністю 300 точок у чотири рази, а якість друку при підвищеному дозволі не завжди буде вищою, нім при номінальному його значенні. Так що якщо дозвіл надмірно, можете його знизити. Зниження дозволу файлу -- незворотній процес, і ніяких подальших інтерполяція потім втрачені пікселі не відновить. Так що при завданні необхідного дозволу також будьте уважні і раціональні. Слід врахувати, що параметр дозволу контурів стосовно до векторної графіку не має відношення до обсягу вихідного файлу (це вже дещо інше дозвіл і дещо інше поняття), а впливає на акуратність "промальовування" вектора при його растеризації в пристрої, де проводиться друк. Так що зменшення цього параметра для векторної графіки не зменшить обсяг Ваших файлів, а лише погіршить якість друку.
Ресемплірованіе (зміна глибини кольору растрового зображення) - це зміна початкової глибини кольору файлу. Деякі оцифровуються пристрої видають растрову інформацію з глибиною кольору, що перевищує достатню для друку значення 8 біт на канал. Це іноді виправдано, тому що більше значення біт на канал дозволяє задавати більше число градацій кольору, що потрібно, наприклад, при сильному, "кардинальної" корекції кольору - сильному освітленні або затіненні окремих ділянок. Однак, у більшості випадків для зберігання растрових даних в різних колірних моделях з лишком достатньо глибини кольору 8 біт на канал. Крім того, один зі стандартів стиснення для RGB зображень має на увазі використання різного кількості біт для різних колірних складових (зазвичай найбільшу кількість біт використовується для зеленого каналу). Також, більшість фільтрів Adobe Photoshop розраховане на роботу із зображеннями з глибиною кольору в 8 біт (із зображенням, що використовують нестандартну глибину кольору, стає практично неможливо працювати, тому що більшість фільтрів розраховані на значення глибини кольору у 8 біт).

1 комментарий:

  1. Хтось тут шукає позику? Пан Педро та його компанія, що займається кредитуванням, позичають мені позику в розмірі 400 000 євро після того, як я пережив певну фінансову ситуацію в моєму житті, пан Педро працює з авторитетною позичковою компанією, яка надає позики за дуже низькою ставкою 2% будь-який вид позики, на який ви бажаєте подати заявку, за умови, що ви маєте чесність і довіру щодо повернення. Кожен, хто шукає позику, може зв’язатися з паном Педро за електронною адресою: pedroloanss@gmail.com

    ОтветитьУдалить