Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Зошит 3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.39 Mб
Скачать

5.4 Алгоритми стиснення даних

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

Залежно від можливої точності відновлення початкових даних, розрізнюють стиснення без втрат (дані відновлюються точно в початковому вигляді) і стиснення з втратами (відновлені дані не ідентичні початковим, але їх відмінностями в тому контексті, в якому ці дані використовуються, можна нехтувати). Стиснення з втратами застосовується, наприклад, для пакування багатоколірних фотографічних зображень (алгоритм JPEG), звуку (алгоритм MP3), відео (група алгоритмів MPEG). При цьому використовуються особливості людського сприйняття: наприклад, око людини не може розрізнити два близькі відтінки кольору, закодованих 24 бітами, тому можна без наявних спотворень зменшити розрядність представлення кольору.

Для багатьох різновидів даних – текстів, виконуваних файлів і так далі – допустиме застосування тільки алгоритмів стиснення без втрат.

Стиснення без втрат, в основному, базується на двох групах методів: словникових і статистичних.

Словникові методи використовують наявність повторюваних груп даних і, наприклад, записують перше входження повторюваної ділянки безпосередньо, а всі подальші входження замінюють на посилання на перше входження. Інші словарні методи окремо зберігають словник в явній формі і замінюють всі входження словарних термінів на їх номер в словнику.

Статистичні методи використовують той факт, що частота появи в даних різних байтів (або груп байтів) неоднакова, отже, байти, що часто зустрічаються, можна закодувати коротшою бітовою послідовністю, а що рідко зустрічаються – довшою. Часто в одному алгоритмі використовують і словарні і статистичні методи.

5.4.1 Алгоритм rle

Найпростіший із словарних методів – RLE (Run Length Encoding, кодування змінної довжини) уміє стискати дані, в яких є послідовності байтів, що повторюються. Упаковані RLE дані складаються з байтів що управляють та байтів даних.

Якщо старший біт байта, що управляє, рівний 0, то наступні байти (у кількості, записаній в семи молодших бітах байта, що управляє) при пакуванні не змінюються.

Якщо старший біт рівний 1, то наступний байт потрібно повторити стільки разів, яке число записане в решті розрядів байта, що управляє.

Наприклад, початкова послідовність 00000000 00000000 00000000 00000000 11001100 10111111 10111011 буде закодована в наступному вигляді (виділені байти, що управляють): 10000100 00000000 00000011 11001100 10111111 10111011.

А дані що складаються з сорока нульових байтів, будуть закодовані всього двома байтами: 1010 1000 00000000.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]