Донецкий техникум промышленной автоматики

Стиснення без втрат

  1. багатоцільові [ правити | правити код ]
  2. Стиснення аудіо [ правити | правити код ]
  3. Стиснення відео [ правити | правити код ]

Цей термін має також інші значення див. стиснення .

Стиснення даних без втрат ( англ. lossless data compression) - клас алгоритмів стиснення даних (Відео, аудіо, графіки, документів, представлених в цифровому вигляді), при використанні яких закодовані дані однозначно можуть бути відновлені з точністю до біта , пікселя , вокселя і т.д. При цьому оригінальні дані повністю відновлюються з стисненого стану. Цей тип стиснення принципово відрізняється від стиснення даних з втратами . Для кожного з типів цифрової інформації, як правило, існують свої оптимальні алгоритми стиснення без втрат.

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

Стиснення без втрат використовується, коли важлива ідентичність стислих даних оригіналу. Типовий приклад - виконувані файли і вихідний код. Деякі графічні файлові формати (наприклад PNG ) Використовують тільки стиснення без втрат, тоді як інші ( TIFF , FLIF або GIF ) Можуть використовувати стиснення як з втратами, так і без втрат.

Легко доводиться теорема.

Для будь-якого N> 0 немає алгоритму стиснення без втрат, який:

  1. Будь-який файл довжиною не більше N байт або залишає тієї ж довжини, або зменшує.
  2. Зменшує деякий файл довжиною не більше N хоча б на один байт.

Доведення. Без обмеження спільності, можна припустити, що зменшився файл A довжини рівно N. Позначимо алфавіт як Σ {\ displaystyle \ Sigma} Доведення . Розглянемо безліч Σ 0 ∪ Σ 1 ∪ ... ∪ Σ N - 1 ∪ {A} {\ displaystyle \ Sigma ^ {0} \ cup \ Sigma ^ {1} \ cup \ ldots \ cup \ Sigma ^ {N-1} \ cup \ {A \}} . У цій множині 256 0 + 256 1 + ... + 256 N - 1 + 1 {\ displaystyle 256 ^ {0} + 256 ^ {1} + \ ldots + 256 ^ {N-1} +1} вихідних файлів, в той час як стислих не більше ніж 256 0 + 256 1 + ... + 256 N - 1 {\ displaystyle 256 ^ {0} + 256 ^ {1} + \ ldots + 256 ^ {N-1}} . Тому функція декомпресії неоднозначна , Протиріччя. Теорема доведена.

Втім, дана теорема анітрохи не кидає тінь на стиск без втрат. Справа в тому, що будь-який алгоритм стиснення можна модифікувати так, щоб він збільшував розмір не більше ніж на 1 біт: якщо алгоритм зменшив файл, пишемо «1», потім стислу послідовність, якщо збільшив - пишемо «0», потім вихідну.

Так що нестискувані фрагменти не приведуть до безконтрольного «роздування» архіву. «Реальних» ж файлів довжини N набагато менше, ніж 256 N {\ displaystyle 256 ^ {N}} Так що нестискувані фрагменти не приведуть до безконтрольного «роздування» архіву (Кажуть, що дані мають низьку інформаційну ентропію ) - наприклад, малоймовірно, щоб буквосполучення «щи» зустрілося в осмисленому тексті, а в оцифрованному звуці рівень не може за один семпл стрибнути від 0 до 100%. До того ж за рахунок спеціалізації алгоритмів на певний тип даних (текст, графіку, звук і т. Д.) Вдається домогтися високого ступеня стиснення: так, що застосовуються в архіваторах універсальні алгоритми стискають звук приблизно на третину (в 1,5 рази), в той час як FLAC - в 2,5 рази. Більшість спеціалізованих алгоритмів малопридатні для файлів «чужих» типів: наприклад, звукові дані погано стискаються алгоритмом, розрахованим на тексти.

У загальних рисах зміст стиснення без втрат такий: у вихідних даних знаходять якусь закономірність і з урахуванням цієї закономірності генерують другу послідовність, яка повністю описує вихідну. Наприклад, для кодування двійкових послідовностей, в яких багато нулів і мало одиниць, ми можемо використовувати таку заміну:

00 → 0 01 → 10 10 → 110 11 → 111

В такому випадку шістнадцять бітів

00 01 00 00 11 10 00 00

будуть перетворені в тринадцять бітів

0 10 0 0 111 110 0 0

Така підстановка є префіксним кодом , Тобто має таку особливість: якщо ми запишемо стислу рядок без пробілів, ми все одно зможемо розставити в ній прогалини - а значить, відновити вихідну послідовність. Найбільш відомим префіксним кодом є код Хаффмана .

Більшість алгоритмів стиснення без втрат працюють в дві стадії: на першій генерується статистична модель для вхідних даних, друга відображає вхідні дані в бітовому поданні, використовуючи модель для отримання «імовірнісних» (тобто часто зустрічаються) даних, які використовуються частіше, ніж «невероятностной» .

Статистичні моделі алгоритмів для тексту (або текстових бінарних даних, таких як виконувані файли) включають:

Алгоритми кодування через генерування бітових послідовностей:

Повний список дивіться в Категорія: Стиснення даних

багатоцільові [ правити | правити код ]

  • Кодування довжин серій - проста схема, що дає гарне стиснення даних, які містять багато значень, що повторюються
  • LZW - використовується в gif і в багатьох інших.
  • Deflate - використовується в gzip, вдосконаленої версії zip і як частина процесу стиснення PNG .
  • LZMA - використовується у 7-zip .

Стиснення аудіо [ правити | правити код ]

Стиснення графіки [ правити | правити код ]

  • ABO - Adaptive Binary Optimization
  • BTPC
  • CALIC
  • CREW
  • CTW
  • DPCM
  • GIF - (без втрат лише для зображень, що містять не більше 256 кольорів)
  • JBIG2 - (з втратами або без ч / б зображень)
  • Lossless JPEG - (розширення стандарту стиснення JPEG, що забезпечує стиснення без втрат)
  • JPEG-LS - (стандарт стиснення без втрат / майже без втрат)
  • JPEG 2000 - (в режимі стиснення без втрат)
  • LOCO-I
  • MRP
  • PGF - Progressive Graphics File (стиснення с / без втрат)
  • PNG - Portable Network Graphics
  • PWC
  • TIFF - (виключаючи режими стиснення з втратами [1] )
  • TMW
  • Truevision TGA
  • HD Photo - (включаючи метод стиснення без втрат)
  • FLIF - Free Lossless Image Format

Стиснення відео [ правити | правити код ]

Стиснення текстів [ правити | правити код ]

  • PPM - архіватор HA (Автор Harry Hirvola), який використовує алгоритм PPM, відомий високим ступенем стиснення на текстових файлах; за цим параметром він перевершував перші версії з'явився кілька років по тому RAR . Тому популярні в кінці 90-х років компакт-диски на зразок « Бібліотека в кишені »Використовували саме HA.
  • сімейство алгоритмів Лемпеля-Зива
  • RLE (Run-length encoding - Кодування довжин серій)
  • універсальні - Zip , 7-Zip , RAR , GZip , PAQ та ін.
  • звук - FLAC (Free Lossless Audio Codec), Monkey's Audio (APE), TTA (True Audio), TTE , LA (LosslessAudio), RealAudio Lossless , WavPack та ін.
  • зображення - BMP , PNG
  • відео - Huffyuv .