- •Тема 8. Основні алгоритми стискання інформації з втратами. Стискання відео та аудіо інформації. Алгоритм стискування зображень jpeg. Архівація даних у комп’ютерних системах. Лекція 15.
- •15.1. Алгоритми rle
- •Аааааббббббббббвваддддкк5
- •5А10бвва4дкк5
- •15.1.1. Перший варіант алгоритму rle
- •Нна5нб10вванд4кк5.
- •11 6 Біт Символ
- •15.1.2. Другий варіант алгоритму rle
- •1 7 Біт Символ
- •15.1.3. Третій варіант алгоритму rle
- •15.1.4. Четвертий варіант алгоритму rle
- •15.2. Алгоритм диференціального кодування
- •Лекція 16.
- •16.1. Кольорові простори
15.1.2. Другий варіант алгоритму rle
Ідея другого варіанту алгоритму полягає у тому, щоб не кодувати кожний одиничний символ двома байтами типу ''довжина''+''символ'', а вказувати на кількість символів, які не перекодовуються при стисненні у байті ''довжина'', тобто кількість символів, які кодер пропускає.
Отже, префіксом повторюваності як і у попередньому алгоритмі служить одна одиниця у старшому біті байту ''довжини'', а префікс 0 (0 у старшому біті байту ''довжини'') означає, що за байтом ''довжина'' йде відповідна кількість (вказується у байті ''довжина'') неповторюваних символів, тобто
1 7 Біт Символ
…
0
7
біт
Символ
Символ
Отже,
у цьому варіанті алгоритму на довжину
також накладається обмеження – 7 біт,
тобто можуть кодуватися ланцюжки
довжиною не більшою за 127 символів, а
також стільки ж символів пропускатися,
тобто декодер, зустрівши префікс 0
зрозуміє, що наступні
символів не стискалися кодером.
Таким чином, такий варіант алгоритму має більший максимальний ступінь стиснення ніж перший варіант алгоритму за рахунок того, що послідовність уже з 127 байт стискається у 2 байти, тобто у 64 рази і, крім того, якщо зустрічається послідовність неповторюваних символів, то не кодується кожний символ двома байтами, а двома байтами кодується вся послідовність неповторюваних символів.
Такий варіант алгоритму реалізований у форматах TIFF та TGA
15.1.3. Третій варіант алгоритму rle
Цей варіант алгоритму кодування довжин повторень використовується для стиснення таких цифрових даних, у яких є ділянки з великою кількістю нульових даних.
Ідея алгоритму полягає у тому, що кожного разу, коли серед цифрових даних зустрічається «0», то він кодується двома числами. Перше – число 0, яке є признаком початку кодування довжини ланцюжка нулів, друге – кількість нулів у ланцюжку. Якщо середня кількість нулів у всіх ланцюжках, включаючи ланцюжки з одного нуля (поодинокі нулі), є більше двох, то стиснення інформації відбудеться. Якщо ж у даних присутня велика кількість поодиноких нулів, то цей варіант алгоритму є не ефективним і може привести навіть до збільшення розміру файлу.
Приклад 15.2. Нехай потрібно закодувати такі цифрові дані
5 7 55 8 71 0 0 0 0 99 5 13 0 31 23 0 0 0 0 0 3 67 0 0 7 …
довжиною 25 байт. У результаті роботи алгоритму отримуємо кодове слово
5 7 55 8 71 0 4 99 5 13 0 1 31 23 0 5 3 67 0 2 7
довжиною
21 байт. Ефективність (коефіцієнт)
стиснення
,
тобто стиснення даних у цьому випадку
відбувається, оскільки середня кількість
нулів у всіх ланцюжках дорівнює 3 (
).
Для наглядності (і тільки) усі ланцюжки
з нулів у вхідній послідовності виділено
жирним шрифтом. У кодовому слові знову
ж таки тільки для наглядності виділено
ту пару чисел, якою кодується кожний
ланцюжок.
Приклад 15.3. Нехай потрібно закодувати цифрові дані, серед яких є поодинокі нулі, наприклад:
5 7 0 0 55 0 8 71 0 99 5 13 0 31 23 0 3 67 0 0 7 0 45 0 9…
довжиною 25 байт. У результаті роботи алгоритму отримуємо кодове слово
5 7 0 2 55 0 1 8 71 0 1 99 5 13 0 1 31 23 0 1 3 67 0 2 7 0 1 45 0 1 9
довжиною
31 байт. Ефективність (коефіцієнт)
стиснення
,
тобто не тільки не відбувається стиснення
даних, але й кодування за цим варіантом
алгоритму приводить до збільшення
розміру файлу.
