Статистические методы сжатия. Лекция 2

Содержание

Слайд 2

План Коды переменной длины Декодирование Кодирование Хаффмана Арифметическое сжатие

План

Коды переменной длины
Декодирование
Кодирование Хаффмана
Арифметическое сжатие

Слайд 3

Коды переменной длины или выражайтесь ясно Дано Минимальное число бит по

Коды переменной длины или выражайтесь ясно

Дано
Минимальное число бит по теории информации 1,57
По

Code1 среднее число бит 1х0.49+2х0.25+3х0.25+3х0.01=1.77
Слайд 4

Коды переменной длины или выражайтесь ясно Закодируем строку a1a3a2a1a3a3a4a2a1a1a2a2a1a1a3a1a1a2a3a1 Код строки

Коды переменной длины или выражайтесь ясно

Закодируем строку
a1a3a2a1a3a3a4a2a1a1a2a2a1a1a3a1a1a2a3a1
Код строки
1|010|01|1|010|010|001|01|1|1|01|01|1|1|010|1|1|01|010|1
37 битов на 20

символов = 1,85 бит/символ
Декодируем
a1/a2?a3 – код двусмысленный
Слайд 5

Свойство префикса Если некоторая последовательность би­тов выбрана в качестве кода какого-то

Свойство префикса

Если некоторая последовательность би­тов выбрана в качестве кода какого-то символа,

то ни один код дру­гого символа не должен иметь в начале эту последовательность
Слайд 6

Правила назначения кодов переменной длины Следует назначать более короткие коды чаще

Правила назначения кодов переменной длины

Следует назначать более короткие коды чаще встречающимся

символам
Коды должны удовлетво­рять свойству префикса
Слайд 7

Декодирование Проблема – декодер должен знать префиксный код каждого символа Решения

Декодирование

Проблема – декодер должен знать префиксный код каждого символа
Решения
Использовать набор

стандартных префиксных кодов (факсимильная связь)
Кодер сканирует файл и передает информацию о статистических свойствах файла декодеру. Декодер подбирает префиксы
Кодер по мере работы над исходными данными улучшает исходный префиксный код. Декодер повторяет каждый шаг кодера
Слайд 8

Кодирование Хаффмана 1 0 0 0 0 1 1 Коды Хаффмана

Кодирование Хаффмана

1

0

0

0

0

1

1

Коды Хаффмана

Средняя длина кода 0.4 х 1 + 0.2x2+
+0.2x3+0.1x4+0.1X4 =

2.2 бит/символ

1

Слайд 9

Кодирование Хаффмана Средняя длина кода 0.4 х 2 + 0.2x2+ +0.2x2+0.1x3+0.1X3

Кодирование Хаффмана

Средняя длина кода 0.4 х 2 + 0.2x2+
+0.2x2+0.1x3+0.1X3 = 2.2

бит/символ

1

0

0

1

0

1

1

0

Слайд 10

Выбор кода Хаффмана Наилучший код – с минимальной дисперсией Дисперсия кода 1 Дисперсия кода 2

Выбор кода Хаффмана

Наилучший код – с минимальной дисперсией
Дисперсия кода 1
Дисперсия кода

2
Слайд 11

«признаки» оптимального дерева Объединение символов с минимальной вероятностью с символами с максимальной вероятностью

«признаки» оптимального дерева

Объединение символов с минимальной вероятностью с символами с максимальной

вероятностью
Слайд 12

Когда не применим код Хаффмана Символы равновероятны Если размер алфавита n

Когда не применим код Хаффмана

Символы равновероятны
Если размер алфавита n является степенью

2, то получаются просто коды фиксированной длины. В других случаях коды весьма близки к кодам с фиксированной длиной
Двухсимвольный алфавит
Идет потеря информации о корреляции соседних битов исходного изображения
Слайд 13

Декодирование Хаффмана 1 1 1 0 0 0 0 а1 а2

Декодирование Хаффмана

1

1

1

0

0

0

0

а1

а2

а3

а4

а5

Код 1001100111

100

110

0111

а4а2а5а1

Слайд 14

Адаптивное кодирование Хаффмана До начала работы в дереве есть корень, в

Адаптивное кодирование Хаффмана

До начала работы в дереве есть корень, в нем

символ esc
Новый символ просто добавляем в дерево без кодирования
При повторе символа модифицируем дерево по принципу – частоты символов растут снизу вверх и слева направо
Слайд 15

Добавляем новый символ Закодируем строку ABC esc esc B 1 0 esc C 1 0

Добавляем новый символ

Закодируем строку ABC

esc

esc

B

1

0

esc

C

1

0

Слайд 16

Модификация дерева E A B C D 1 2 2 2

Модификация дерева

E

A

B

C

D

1

2

2

2

9

16

3

4

7

1. A++

2

4

8

17

2. A++

A

D

3

5

9

18

Слайд 17

Модификация дерева A C D 9 E B 5 2 2 2 4 6 11 20

Модификация дерева

A

C

D

9

E

B

5

2

2

2

4

6

11

20

Слайд 18

Арифметическое сжатие Всему кодируемому объекту назначается интервал [0;1) Вычисляются частоты появления

Арифметическое сжатие

Всему кодируемому объекту назначается интервал [0;1)
Вычисляются частоты появления символов входного

алфавита в файле
Начальный интервал делится пропорционально частотам символов
По мере считывания символов из входного файла интервал переопределяется (сокращается)
Слайд 19

пример Закодируем строку SWISS_MISS. Длина строки – 10 символов. Введем 2

пример

Закодируем строку SWISS_MISS. Длина строки – 10 символов.
Введем 2 переменные Low

= 0, High = 1
Частоты и интервалы символов
Слайд 20

Процесс кодирования

Процесс кодирования

Слайд 21

Декодирование Декодер узнает символы алфавита Получает информацию о частотах и интервалах

Декодирование

Декодер узнает символы алфавита
Получает информацию о частотах и интервалах символов
Читает

по 1 цифре из конечного кода
Слайд 22

Процесс декодирования

Процесс декодирования

Слайд 23

Несимметричное кодирование Если вероятности появления символов в строке очень разные, то

Несимметричное кодирование

Если вероятности появления символов в строке очень разные, то есть

опасность наступления 0 до конца строки при декодировании
Для избежания этого добавляют специальный символ eof с очень низкой вероятностью