
- •Тема 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.4. Четвертий варіант алгоритму rle
Цей варіант алгоритму використовується для стиснення двійкового зображення. Ідея цього алгоритму на основі кодування довжин повторень та одного із статистичних алгоритмів полягає у тому, що виявляються послідовності (ланцюжки) даних, які складаються з однакових елементів та кодуються за допомогою одного із статистичних алгоритмів лише довжини цих ланцюжків.
Оскільки ланцюжки складаються з одних нулів та одних одиниць, то у результуючій послідовності довжин цих ланцюжків вони (довжини) будуть строго перемежовуватися. Отже, відпадає необхідність вказувати код даних для кожного ланцюжка як у перших двох алгоритмів, а лише на початку кодового слова вказати, з якого символу 0 чи 1 починається закодована послідовність.
Отже, кодове слово складається з префіксного символу (1 біт) та послідовності довжин ланцюжків, які строго чергуються між собою.
Приклад
15.4.
Нехай потрібно закодувати двійкове
(двоколірне – наприклад, чорно-біле)
зображення розміром
елементів, яке наведено на рис.7.1
[Шульг.].
Чому взяли зображення розміром
буде зрозуміло далі.
Рис.15.1.
Проскануємо це зображення по стрічках (двом кольорам на зображенні, наприклад, чорному та білому, будуть відповідати двійкові символи 0 та 1). У результаті отримаємо двійковий вектор даних
X= 01110000111100000001000000010000000100000001111000
11110111101111
довжиною 64 біт (швидкість коду – 1 біт/елемент зображення).
Виділимо
у векторі
послідовності (ланцюжки) з однаковими
даними (це будуть ланцюжки з одних нулів
та одних одиниць) та визначимо їх довжини.
Результуюча послідовність довжин
ланцюжків (додатних цілих чисел), яка
відповідає вектору
буде мати вигляд
=
1 3 4 4 7 1 7 1 7 1 7 4 3 4 1 4 1 4
Тепер цю послідовність можна закодувати одним із статистичних алгоритмів, наприклад, класичним алгоритмом Хафмена, який для даного прикладу має таблицю кодування (табл. 15.1.)
Таблиця 15.1
Довжина ланцюжка |
|
Код
|
|
|
4 |
1/3 |
0 |
1 |
1/3 |
1 |
1/3 |
10 |
2 |
2/3 |
7 |
2/9 |
110 |
3 |
2/3 |
3 |
1/9 |
111 |
3 |
1/3 |
|
|
Для того, щоб вказати, що закодована послідовність починається з 0, записують на початку кодового слова префіксний символ 0. У результаті отримуємо кодове слово
=
0101110011010110101101011001110100100
довжиною
у 36 біт, тобто швидкість коду
біт/елем. зображення. Відповідно
ефективність (коефіцієнт) стиснення
.
При стисканні зображень великого розміру, яке містить багато елементів, що повторюються, ефективність стиснення суттєво зростає.