Стиснення даних без втрат. Алгоритм Хаффмана
Сучасні користувачі часто стикаються з проблемою нестачі вільного простору на жорсткому диску. Багато хто, намагаючись звільнити хоч трохи вільного простору, намагається видалити з жорсткого диска всю непотрібну інформацію. Більш просунуті користувачі використовують зменшення обсягу даних особливі алгоритми стиснення. Незважаючи на ефективність цього процесу, багато користувачів ніколи про нього навіть не чули. Давайте спробуємо розібратися, що мається на увазі під стиском даних, які алгоритми для цього можуть використовуватися.
На сьогоднішній день стиснення інформації є досить важливою процедурою, яка потрібна кожному користувачеві ПК. Сьогодні будь-який користувач може дозволити собі придбати сучасний накопичувач даних, у якому передбачено можливість використання великого обсягу пам'яті. Такі пристрої, зазвичай, оснащуються високошвидкісними каналами для транслювання інформації. Проте, слід зазначити, що з кожним роком обсяг необхідної користувачам інформації стає дедалі більше. Усього $10$ років тому обсяг стандартного відеофільму не перевищував $700$ Мб. В даний час обсяг фільмів у HD-якості може досягати кількох десятків гігабайт.
Коли потрібно стиснення даних?
Не варто чекати від процесу стиснення інформації. Але все-таки зустрічаються ситуації, в яких стиснення інформації буває просто необхідним та вкрай корисним. Розглянемо деякі з таких випадків.
- Передача електронною поштою. Дуже часто бувають ситуації, коли потрібно надіслати великий обсяг даних електронною поштою.Завдяки стиску можна істотно зменшити розмір файлів, що передаються. Особливо оцінять переваги даної процедури користувачі, які використовують для пересилання інформації мобільні пристрої.
- Публікація даних на інтернет-сайтах та порталах. Процедура стиснення часто використовується для зменшення обсягу документів, які використовуються для публікації на різних інтернет-ресурсах. Це дозволяє значно заощадити на трафіку.
- Економія вільного місця на диску. Коли немає можливості додати нові засоби для зберігання інформації, можна використовувати процедуру стиснення для економії вільного простору на диску. Буває так, що бюджет користувача вкрай обмежений, а вільного місця на жорсткому диску не вистачає. Ось тут на допомогу і приходить процедура стиснення.
Крім перелічених вище ситуацій, можливо ще величезна кількість випадків, у яких процес стиснення даних може бути дуже корисним. Ми перерахували лише найпоширеніші.
Способи стиснення інформації
Усі існуючі засоби стиснення інформації можна розділити на дві основні категорії. Це стиснення без втрат та стиснення з певними втратами. Перша категорія актуальна лише тоді, коли є необхідність відновити дані з високою точністю, не втративши жодного біта вихідної інформації. Єдиний випадок, у якому необхідно використати саме цей підхід, це стиснення текстових документів.
У тому випадку, якщо немає особливої потреби в максимально точному відновленні стиснутої інформації, необхідно передбачити можливість використання алгоритмів з певними втратами під час стиснення.
Стиснення без втрати інформації
Дані методи стиснення інформації цікавлять перш за все, оскільки саме вони застосовуються при передачі великих обсягів інформації електронною поштою, при видачі виконаної роботи замовнику або при створенні резервних копій інформації, що зберігається на комп'ютері. Ці методи стиснення інформації не допускають втрату інформації, оскільки в їх основу покладено лише усунення її надмірності, інформація має надмірність практично завжди, якби останньої не було, нічого було б і стискати.
Наведемо найпростіший приклад. Російська мова включає $33$ букви, $10$ цифр і ще приблизно $15$ розділових знаків та інших спеціальних символів. Для тексту, записаного лише великими російськими літерами (наприклад, як у телеграмах) цілком вистачило б $60$ різних значень. Проте, кожен символ зазвичай кодується байтом, що містить, як відомо, 8 бітів, і може виражатися $256$ різними кодами. Це один із перших факторів, що характеризують надмірність. Для телеграфного тексту цілком вистачило б $6$ бітів на символ.
Розглянемо інший приклад. У міжнародному кодуванні символів ASCII для кодування будь-якого символу виділяється однакова кількість бітів ($8$), в той час, як всім давно і добре відомо, що символи, що найчастіше зустрічаються, має сенс кодувати меншою кількістю знаків. Так, наприклад, в абетці Морзе літери "Е" і "Т", які зустрічаються дуже часто, кодуються $ 1 $ знаком (відповідно це точка і тире). А такі рідкісні літери, як «Ю» ($•• - -$) та «Ц» ($-• - •$), кодуються $4$ знаками.
Неефективне кодування є другим фактором, що характеризує надмірність.Програми, завдяки яким виконується стиснення інформації, можуть вводити своє кодування, причому воно може бути різним для різних файлів, і приписувати його до стиснутого файлу у вигляді таблиці (словника), з якої програма, що розпаковує, буде зчитувати інформацію про те, як в даному файлі закодовані ті чи інші символи чи їх групи.
Алгоритми, основою яких покладено перекодування інформації, називаються алгоритмами Хаффмана.
Алгоритм Хаффмана
У цьому алгоритмі стиснення інформації здійснюється шляхом статистичного кодування чи основі словника, який попередньо було створено. Відповідно до статистичного алгоритму Хаффмана кожному вхідному символу надається певний код. При цьому символу, що найчастіше використовується - найбільш короткий код, а найбільш рідко використовуваному - більш довгий. Як приклад на діаграмі наведено розподіл частоти використання окремих букв англійського алфавіту (рис.1). Такий розподіл може бути побудований і для російської мови. Таблиці кодування створюються заздалегідь та мають обмежений розмір. Цей алгоритм забезпечує найбільшу швидкодію та найменші затримки. Для отримання високих коефіцієнтів стиснення статистичний метод потребує великих обсягів пам'яті.
Рисунок 1. Розподіл англійських букв за їх частотою використання
Величина стиснення визначається надмірністю оброблюваного масиву біт. Кожна з природних мов має певну надмірність. Серед європейських мов російська має найвищий рівень надмірності. Про це можна судити за розмірами перекладу російського англійського тексту. Зазвичай він приблизно на $30% більше. Якщо йдеться про віршований текст, надмірність може бути до $2$ разів вищою.
Найбільша складність з кодами полягає в необхідності мати таблиці ймовірностей для кожного типу даних, що стискаються. Це не є проблемою, якщо відомо, що стискається англійський або російський текст. У цьому випадку ми просто надаємо кодеру та декодеру відповідне для англійського або російського тексту кодове дерево. У випадку, коли ймовірність символів для вхідних даних невідома, статичні коди Хаффмана працюють неефективно.
Вирішенням цієї проблеми є статистичний аналіз даних, що кодуються, виконується в ході першого проходу за даними, і складання на його основі кодового дерева. Власне, кодування при цьому виконується другим проходом.
Ще одним недоліком кодів і те, що мінімальна довжина кодового слова їм може бути менше одиниці, тоді як ентропія повідомлення цілком може становити і $0,1$, і $0,01$ біт/літер. У цьому випадку код стає суттєво надмірним. Проблема вирішується застосуванням алгоритму до блоків символів, але тоді ускладнюється процедура кодування/декодування та значно розширюється кодове дерево, яке потрібно зрештою зберігати разом із кодом.
Ці коди не враховують взаємозв'язків між символами, які є практично в будь-якому тексті.
Сьогодні, у вік інформації, незважаючи на те, що практично кожному користувачеві доступні високошвидкісні канали для передачі даних і носії великих обсягів, питання стиснення даних залишається актуальним. Існують ситуації, у яких стиснення даних просто необхідною операцією. Зокрема, це стосується пересилання даних електронною поштою та розміщення інформації в Інтернеті.
Методи стиснення даних
Катієва, Л. М. Методи стиснення даних/Л. М.Катієва. - Текст: безпосередній // Молодий учений. - 2020. - № 36 (326). - С. 12-15. - URL: https://moluch.ru/archive/326/73489/ (дата звернення: 05.01.2025).
В рамках цієї роботи було проведено дослідження проблематики збереження якості цифрової інформації під час використання методу стиснення даних Хаффмана. У цій роботі було повністю описано специфіку цього методу, разом з його основними перевагами.
Ключові слова: цифрові дані, інформація, методика стиснення цифрової інформації, метод стиснення Хаффмана, методик стиснення інформації без втрати якості.
Варто зазначити, що сучасний світ гостро потребує розробки та практичного використання просунутих методів стиснення цифрової інформації. Звичайно, зараз людство має доступ не тільки до сховищ цифрових даних величезного обсягу, а й до високошвидкісних засобів обміну інформацією. При цьому потрібно врахувати, що постійно спостерігається зростання обсягів передачі даних. Раніше цілком нормальним було дивитися фільми, записані на звичайному компакт-диску, що містить 700 мегабайт інформації. Тепер же при перегляді онлайн-фільмів у високій якості відеоряд може займати кілька десятків гігабайт простору. Безумовно для забезпечення можливості зберігання такого величезного обсягу інформації та її передачі буде потрібний не тільки час і широкий канал передачі інформації, а й велике сховище цифрових даних. Для реалізації цих завдань якраз і застосовуються різні методики стиснення інформації. В рамках цієї статті буде вивчено принцип роботи методів стиснення цифрової інформації без втрати її якості. Також ми спробуємо зрозуміти, як працює найпопулярніший метод стиснення даних під назвою "алгоритм Хаффмана".
Процес стиску обсягу цифрової інформації має виражений алгоритмічний характер. Він заснований на принципі скорочення надмірності обсягів даних. Метод стиснення інформації передбачає зменшення її обсягу без втрати. [1, с. 214]
У основі алгоритму Хаффмана лежить елементарна концепція. У рамках цього алгоритму застосовується метод, що передбачає кодування однакових символом меншою кількістю біт, ніж тих символів, що зустрічаються не так часто.
Подібний метод стиснення цифрової інформації було розроблено 1952 року Д. А. Хаффманом. При цьому на той час ще не було жодних комп'ютерів сучасного типу. За рахунок ефективності цього методу він був покладений у різні сучасні способи стиснення цифрових даних шляхом застосування спеціальних алгоритмів кодування.
В основі ідеї алгоритму лежить наступний принцип: за наявності знань про ймовірність наявності в повідомленні конкретних символів виникає можливість опису формування кодів зі змінною довжиною, які структурно являтимуть собою цілісні кількості бітів. Короткі коди надаються тим символам, які зустрічаються частіше. У кодів Хаффмана є свій індивідуальний префікс, що дає можливість їхнього декодування навіть незважаючи на те, що їхня довжина має змінний характер.
При використанні динамічного алгоритму, розробленого Хаффманом, можна отримати на вході частотну таблицю символів, які у конкретному повідомленні. На наступному етапі на основі даної таблиці відбувається побудова кодувального дерева Хаффмана.
На сьогоднішній день застосовуються два способи стиснення цифрової інформації: із втратами частини даних та без будь-яких втрат.При використанні методу стиснення інформації з втратами відновлена інформація дещо відрізнятиметься від початкової, що призводить до падіння її якості. Цей спосіб застосовується у тих випадках, коли при відновленні цифрової інформації не потрібна максимальна точність. Якщо ж використовується спосіб стиснення без втрат, тоді відновлені дані матимуть свій вихідний вигляд. Такий метод, зазвичай, застосовується під час передачі текстових цифрових документів. Надалі в рамках цієї роботи проводитиметься робота з вивчення другого способу стиснення цифрової інформації. [2, с. 364]
Методика стиснення цифрової інформації без втрат використовує алгоритм зменшення бітів за рахунок визначення та подальшого видалення виявленої надмірності статистичного характеру. А, щоб зрозуміти принцип цього способу, потрібно ознайомитися з наступними прикладами. [4, с. 163]
Припустимо, у нас є набір із дев'яти фігур круглої форми. Три червоні, три блакитні і три коричневі кола. При цьому замість того, щоб показувати всі дев'ять кіл можна просто залишити три кола різного кольору і вказати поряд з ними кількість цих кіл. Фактично ми надаємо аналогічну інформацію, але вже меншого обсягу.
Як ще один приклад можна взяти файл, що містить у собі наступний текст: RRRRRZZZZEEEEGGGGGG.
Дана текстова інформація за допомогою методики Хаффмана може бути стиснута наступним чином: R5Z4E3G6. У результаті замість 18 символів нам для надання аналогічної інформації знадобилося всього 8. При цьому, може здатися, що цей метод стиснення даних працює надто бездоганно, що важко собі уявити.По суті, багато в чому, сама концепція стиснення інформації без втрат йде в розріз Ньютонівським фізичним законам.
Правда, все ж таки цей метод дійсно ідеально працює. Сучасні програми, що використовуються для стиснення інформації без втрат, забезпечують це за рахунок використання таких ефективних алгоритмів як алгоритм Хаффмана, а також кодування LZW. [4, с. 241]
Особливості алгоритму Хаффмана
В основі популярності цього методу стиснення цифрової інформації лежить його простота та легкість застосування. Незважаючи на те, що сама методика була придумана ще в середині 20 століття, вона досі зберігає свою актуальність. В основі роботи алгоритму Хаффмана лежить принцип того, що в цифровій інформації одні символи можуть зустрічатися набагато частіше за інші. При цьому потрібно знайти найпоширеніші символи і присвоїти ними коротке кодування. При цьому рідкісні символи отримують, навпаки, довгий код. У рамках алгоритму Хаффмана на вході повинна бути спочатку сформована частотна таблиця, без якої сам метод просто не працюватиме. [2, с. 75]
Алгоритм стиснення інформації визначається частотною таблицею. Спочатку визначається пара інформаційних вузлів із найнижчою частотою символів. Після цього формується батько, який дорівнюватиме сумі частот. При цьому батько виступатиме як новий повноцінний вузл, який прийде на заміну двом попереднім вузлам. Дузі, що виходить від батька, надається біт з нулем або одиницею. Ця операція повторно здійснюється до того часу, поки всередині списку нічого очікувати сформований єдиний вузол. Наприклад, маємо таку частотну табличку:
Виходячи зі специфіки алгоритму, потрібно провести роботу з підсумовування пари вузлів, що мають найнижчу частотність:
. Новий батько G/H буде отриманий з G і H. При цьому вузли, які є прабатьками батька, будуть видалені. Після цього найменшою частотною вагою будуть володіти вузли G/H і F. Після підсумовування вузлів формується новий з їх видаленням. Дані маніпуляції здійснюються до того самого моменту, коли залишиться лише один єдиний вузол. Саме кодувальне дерево матиме такий вигляд:
На наступному етапі кожному символу надається унікальний код. Для цієї мети потрібно буде просуватися у напрямку знизу вгору по кодувальному дереву. При цьому потрібно буде накопичувати біти в процесі руху гілками дерева. Рух праворуч це нуль біт, а вліво один біт. У результаті на виході буде отримано таблицю наступного виду:
Цей алгоритм має один серйозний недолік, що полягає в тому, що декодеру для відновлення інформації потрібно мати дані про частотну таблицю. У результаті обсяг отриманого файлу буде збільшено через розміщення перед кодом частотної таблиці. Також потрібно зазначити, що факт наявності повноцінної частотної таблиці Крім того, факт наявності перед кодувальним кодом повноцінної частотної таблиці диктує необхідність подвійного проходження по повідомленню з метою формування самої моделі інформації та для її подальшого декодування. [5, с. 152]
Незважаючи на те, що алгоритм Хаффмана було розроблено понад 60 років тому, він досі зберіг свою актуальність. Тому він у тому чи іншому вигляді використовується сучасними програмами, що забезпечують можливість стиснення даних без втрати.
В рамках цієї статті було проведено роботу з опису способів стиснення цифрової інформації без її втрати, а також було описано найпопулярніший алгоритм Хаффмана. При цьому, важливо зазначити, що існують різні алгоритми, що забезпечують можливість стиснення даних без втрат. Тому користувачеві потрібно буде самостійно вибирати найбільш підходящий для себе спосіб.
- Баринов В. В. Стиснення даних, мовлення, звуку та зображень у телекомунікаційних системах, РадіоСофт - Москва, 2019. - 360 c.
- Вотолін Д. Ратушпяк А. Смирнов М. Юкін В. Методи стиснення даних. Пристрій архіваторів, Стиснення зображень та відео. - М.:ДІАЛОГ-МІФІ, 2018 р. - 381 с.
- Рассел Джессі Стиснення даних, Книга на вимогу - Москва, 2017. - 104 c.
- Ратушняк О. А. Стиснення мультимедійної інформації. // Hard'n'Soft. 2016. - №.4 - стор 78-79.
- Селомон Д. Стиснення даних, зображень та звуку, Техносфера - Москва, 2016. - 368 c.
Основні терміни (генеруються автоматично): цифрова інформація, втрата, рамка цієї, символ, частотна таблиця, LZW, RRRRRZZZZEEEGGGGGGG, алгоритм Хаффмана, єдиний вузол, повноцінна частотна таблиця.
Ключові слова
інформація, цифрові дані, методика стиснення цифрової інформації, метод стиснення Хаффмана, методик стиснення інформації без втрати якості
цифрові дані, інформація, методика стиснення цифрової інформації, метод стиснення Хаффмана, методик стиснення інформації без втрати якості
Схожі статті
Роль великих даних у глибинному навчанні
Мета даної дослідницької роботи ґрунтується на двох ключових темах: як глибинне навчання може допомогти у вирішенні специфічних проблем в аналізі великих даних, і, як певні галузі глибинного навчання можуть бути покращені для відповідності.
Аспекти використання різних методів розпізнавання осіб у сучасних системах безпеки
У статті автори намагаються оглянути існуючі аспекти використання різних методів розпізнавання осіб у сучасних системах безпеки.
Перетворення Фур'є як основний частотний метод покращення зображень
Підвищення якості зображення залишається відкритою проблемою сучасних технологій. У цій роботі розглянуті частотні методи поліпшення зображень, зокрема використання Фур'є перетворення з різними способами фільтрації підвищення ка.
Важливість математичних знань у науці про дані
У сучасному цифровому світі наука про дані стає все більш важливою для розуміння та аналізу великих обсягів інформації. У цій статті розглядається важливість математичних знань у цій галузі. Описується як математичні концепції.
Метрики якості даних
У статті розглядаються ключові підходи щодо оцінювання якості даних за допомогою різних метрик у сучасному цифровому суспільстві. p align="justify"> Особлива увага приділяється розгляду існуючих метрик якості даних та їх класифікації.
Застосування нечіткої логіки та методів візуалізації графічних рішень при аналізі показників фінансового ринку
У цій статті проведено аналіз мультиплікаторів фінансового ринку, на підставі чого було представлено систему виведення, яка базується на нечіткій логіці.Також було реалізовано методи візуалізації імплікацій.
Приховування інформації у коефіцієнтах спектральних перетворень файлу формату JPEG
В умовах активного розвитку мережевих технологій велика кількість інформації передається по мережах та зростає відсоток атак зловмисників та спроб несанкціонованого доступу до неї. У зв'язку з цим виникає питання безпеки передачі даних.
Застосування циклу Шухарта-Демінгу до процесу автоматизації обробки геопросторової інформації
Стаття присвячена застосуванню одного з інструментів управління якістю, циклу Шухарта-Демінга, до процесу автоматизації обробки геопросторових даних загалом та аерокосмічних знімків зокрема. Були представлені схеми створення та впровадження.
Розробка систем рекомендацій на основі Big Data
У цій статті розглянуто основні підходи до розробки систем рекомендацій на основі Big Data, включаючи колаборативну фільтрацію, контентну фільтрацію та гібридні методи, а також наведено приклади реалізації алгоритмів мовою програмованою.
Порівняльний аналіз методів Наївного Байєсу та SVM алгоритмів при класифікації текстових документів
У статті розкривається поняття класифікації текстових документів для виявлення категорій за текстами. Проводиться порівняльний аналіз двох найголовніших алгоритмів, якими є методи наївного Байєса та SVM. Робиться висновок, що .
Що таке стиск даних? (Визначення, значення та методи)
Зберігання та передача даних часто є важливими проблемами для підприємств, урядів та інших організацій.Стиснення даних дозволяє цим організаціям максимізувати обсяг даних, які можуть обробляти, при мінімізації відповідного простору і витрат. Якщо ви зберігаєте або передаєте дані в рамках своєї роботи, може бути корисним зрозуміти, як працює стиск і які переваги воно може дати вам і вашій організації. У цій статті ми даємо визначення стиснення даних, обговорюємо його важливість, описуємо різні методи стиснення та даємо поради щодо реалізації стиснення.
Що таке стиск даних?
Стиснення даних — це процес або процес зменшення розміру комп'ютерного файлу. За допомогою алгоритму або набору правил для виконання операції комп'ютери можуть визначити способи скорочення довгих рядків даних, а потім зібрати їх у формі, що розпізнається після вилучення. В результаті виходить файл, в якому використовується менше бітів або одиниць інформації, ніж вихідний файл. Існує два типи стиснення даних:
Без втрат
У даних без втрат усі вихідні дані залишаються недоторканими. Алгоритм зменшує розмір файлу таким чином, щоб зберегти інформацію, необхідну для розширення файлу до вихідного розміру під час розпакування. Формат без втрат необхідний для файлів, які не можуть функціонувати або помітно скомпрометовані без всіх вихідних даних. До таких файлів належать програмні програми, документи та певні мультимедійні формати, які використовуються професіоналами, наприклад фотографами, кінематографістами та музикантами.
Програми для Windows, мобільні програми, ігри - ВСЕ БЕЗКОШТОВНО, у нашому закритому телеграм каналі - Підписуйтесь:)
із втратами
Стиснення з втратами може зменшити розміри файлів, але з деякими компромісами в деталях.Цей формат підходить для типів файлів, де ледь помітні втрачені деталі. Такі файли включають мультимедійні файли на стороні користувача, такі як завантаження музики, фільмів та зображень. Для них є деяке зниження якості відтворення, але споживач навряд це помітить.
Чому важливим є стиснення даних?
Стиснення даних зводить до мінімуму місце, яке займає файли на жорсткому диску, і скорочує час, необхідний для передачі або завантаження. Це скорочення простору та часу може призвести до значної економії коштів. Наприклад, організації, що зберігають великі обсяги даних, такі як корпорації та постачальники медичних послуг, можуть заощадити на витратах на зберігання даних, оскільки стиснення дозволяє зберігати більше файлів з меншою ємністю. Крім того, оскільки для передачі стислих файлів через Інтернет потрібно менше часу, таким організаціям менше потрібно вкладати кошти в дороге оновлення смуги пропускання.
Деякі інші організації стиснення дозволяють надавати оптимальні послуги з максимальною зручністю. Наприклад, постачальники телекомунікаційних послуг обробляють величезні обсяги аудіо- та відео. Стиснення дозволяє їм обслуговувати велику кількість клієнтів з мінімальними збитками для слухової або візуальної якості.
Методи стиснення даних
Нижче наведено деякі поширені методи стиснення даних:
Лемпель-Зів
Стиснення Лемпеля-Зіва — це алгоритм без втрат, який знаходить символи, що повторюються, в наборі даних і замінює їх токенами або вкороченими послідовностями.Наприклад, у повідомленні, яке читається як «AAABABAAABAA», алгоритм скануватиме повідомлення, зупинятиметься на кожній незнайомій послідовності букв і призначатиме токен. Першою незнайомою послідовністю буде одиночна літера "А", яка може отримати токен "1". Наступним буде "AA", що буде "2". "BA" буде третьою послідовністю, що отримала "3". Послідовності після цього були б знайомі. Алгоритм може перетворити вихідне повідомлення на «1233231» зі стиском майже 60%.
Кодування довжин серій
Кодування довжин серій — це метод без втрат, в якому використовуються рядки, що часто повторюються, або серії даних, що повторюються. Наприклад, якщо файл зображення містить рядок із 10 послідовних пікселів одного кольору, алгоритм може вставити дані, що повідомляють про наявність 10 таких пікселів, а потім видалити всі надмірні дані. Хоча алгоритм додає деякі дані, він видаляє набагато більше, зменшуючи загальний розмір файлу.
Словникове кодування
Кодування за словником - це ще один метод без втрат, який перетворює вихідні дані в скорочений числовий код з використанням бітів 0 і 1, а потім використовує "словник" як посилання для перетворення коду назад у форму, що розпізнається. Це можна порівняти з рестораном, який використовує числа для представлення різноманітних комбінацій страв у меню. Наприклад, число один може означати «смажене курча з картоплею та горошком». Опис пункту меню займає 36 символів, а числовий код лише один. Тут словник - це знання того, що певна кількість позначає конкретну страву.
Що стосується комп'ютерних файлів, уявіть собі 100-байтовий файл зображення, що складається із двох кольорів.Алгоритм може розділити байти на групи по 10 і використовувати тризначний код кожного кольору. Кожна група з 10 байтів - це пункт меню, а словник - це легенда, що пов'язує кожну з них з кодом. Таким чином, замінюючи кожні 10 байт рядком із трьох цифр, алгоритм може отримати остаточний розмір стисненого зображення розміром всього 30 біт. Після вилучення файлу він може потім перетворити біти назад у їхню початкову форму.
Перцептивне кодування
Перцептивне кодування - це метод стиснення з втратами, який відкидає частини файлу, які більшість людей не в змозі сприйняти. Залежно від типу файлу, алгоритм може визначити, які елементи файлу підходять під цей опис, і згодом зменшити або видалити його наявність. Наприклад, необроблений музичний файл може містити звукові хвилі ультразвукового діапазону, які люди не чують. Таким чином, алгоритм може повністю видалити будь-які дані, що стосуються УЗД, значно зменшивши загальний розмір файлу без помітного зниження якості звуку.
Те саме може стосуватися зображень і відео. У першому випадку алгоритм може зберігати елементи, які зазвичай добре сприймаються людським оком, наприклад, контраст між об'єктами, але зменшувати непомітні компоненти всередині об'єктів, наприклад пікселі схожого кольору. У разі алгоритм може зменшити передачу статичних пікселів між кадрами, наприклад нерухомих об'єктів.
Рекомендації щодо стиснення даних
Зверніть увагу на наступні поради щодо реалізації стиснення даних:
Виберіть відповідний тип стиснення
Для кожного файлу, який ви повинні стиснути, спочатку визначте, чи він повинен бути без втрат або втрати.Щоб вирішити, що використовувати, запитайте себе, чи прийнятний будь-який компроміс як дані. Як уже говорилося, деяка втрата деталей в аудіо-, відео- та графічних файлах навряд чи буде помітною, тому для них підходить стиск із втратами. Однак у таких файлах, як текстові документи, буде помітна втрата деталей, тому рекомендується стиск без втрат.
Використовуйте співпроцесор
Співпроцесор дозволяє вашому комп'ютеру перенаправляти обчислювальну потужність на додатковий ЦП, звільняючи ресурси основного комп'ютера для виконання звичайних дій. Це дозволяє залишатися продуктивним при стисненні файлів, що може бути ресурсомісткою функцією. Розгляньте можливість додавання програмованої користувачем вентильної матриці, або FPGA, мікрочіпа, який можна налаштувати для роботи як додатковий процесор. Це особливо корисно для стиснення великих типів даних.
Розгляньте можливість дедуплікації даних
Дедуплікація даних – це процес, який видаляє дублікати у наборі даних. Він працює, порівнюючи шаблони даних, визначаючи, які шаблони вже існують у збереженому наборі, та замінюючи надмірні екземпляри посиланням, яке вказує на вже збережений шаблон. Оскільки такі шаблони можуть повторюватися у разі передачі чи зберігання даних, дедуплікація може значно зменшити обсяг оброблюваних даних. Таким чином, це корисне доповнення до стиснення.
