Download сравнеие сжатий

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
УДК 355.358.1
В.И. Филатов, кандидат технических наук (ктн), доцент кафедры МГТУ им. Н.Э.
Баумана факультета «Информатика и системы управления», кафедры ИУ-10,
[email protected], г.Москва, Россия
И. Грачева, студент, МГТУ им. Н.Э. Баумана факультета «Информатика и
системы управления», кафедры ИУ-10, г.Москва, Россия
Е. Чаркина, студент, МГТУ им. Н.Э. Баумана факультета «Информатика и
системы управления», кафедры ИУ-10, г.Москва, Россия
Сравнение алгоритмов сжатия информации
В современном информационном мире в условиях растущих требований к скорости
передачи данных одной из наиболее актуальных задач является задача кодирования источника
или сжатия информации.
Так, например, космические аппараты, осуществляющие сьемку поверхности Земли в
разных частотных диапазонах, передает информацию, на которая помещается в хранилище
изображений, где используются геоинформационными системами для самых разных целей.
При этом, объем этой графической информации настолько велик, что при ее сжатии
приходится бороться буквально за каждый байт, поскольку даже сжатие не позволяет сильно
снизить требования к объемам хранилищ. В тоже время встает необходимость повысить
пропускную способность радиоканалов, поскольку ее не хватает, чтобы в полной мере
удовлетворить потребности пользователей.
На сегодняшний день наибольшее распространение получили два типа методов сжатия
без потерь –статистические и словарные.
Статистические методы заключаются в том, что если некоторый символ в
последовательности встречается относительно часто, то ему ставится в соответствие короткий
код, а если символ встречается реже – то присваивается более длинный. В результате такого
распределения
неравномерного
кодирования,
средняя
длина
информационной
последовательности становится короче.
В словарных методах, находятся похожие цепочки символов, которым присваиваются
соответствующие более короткие коды. Эти методы независимы друг от друга и потому могут
использоваться совместно для достижения более лучшего сжатия.
Рассмотрим более подробно статистический тип на примере кодирования по методу
Хаффмана, который заключается в оптимальном префиксном кодировании алфавита с
минимальной избыточностью. Этот метод кодирования состоит из двух основных этапов:
1.
Построение оптимального кодового дерева.
2.
Построение отображения код-символ на основе построенного дерева.
Работа алгоритма начинается с составления списка символов (чисел) алфавита в
порядке убывания их частоты (вероятности).
Пример: Пусть имеется пять символов: a1, a2, ..., a5 с известными вероятностями:
p1=0.4, p2=0.2, p3=0.2, p4=0.1 и p5=0.1. Для построения кодов, выбираем сначала пару
символов с наименьшими вероятностями – это символы a4 и a5. Наименее вероятному
символу ставим в соответствие битовый ноль, а более вероятному – битовую единицу:
a4 →1, a5 → 0. Символы a4 и a5 условно объединяются в единый символ a45 с вероятностью
появления 0,2. Затем берется третий символ из упорядоченного списка – это символ a3 с
вероятностью 0,2. Поэтому код символа a3 будет начинаться с битовой 1, а к кодам символов
a4 и a5 дописывается битовый ноль:
a3 →1, a4 →10, a5 → 00
Далее, условно объединяем все три символа, в символ a345 с вероятностью появления 0,4 и
рассматриваем его со следующим символом списка - a2, вероятность которого 0,2. Так как
вероятность появления символа a2 меньше вероятности появления условного символа a345,
то код символа a2 будет начинаться с нуля, а кодам символов a3, a4 и a5 приписывается
битовая единица:
a2 → 0, a3 →11, a4 →101, a5 → 001
Аналогично, получаем для последнего символа 𝑎1 :
a1 → 0, a2 → 01, a3 →111, a4 →1011, a5 → 0011
Обычное двоичное кодирование потребовало бы 3 бита для представления одного символа,
т.е. в этом случае последовательность можно было бы сжать в 3/2,8=1,07 раза.
Однако, чтобы произвести декодирование данных необходимо знать построенные кодовые
последовательности, передачу которых осуществляют за счет передачи декодеру частот
появления символов в потоке, т.е. в данном случае встает необходимость дополнительно пять
чисел. На основе этих частот декодер строит коды, а затем применяет их для декодирования
последовательности. Как следствие, чем длиннее кодированная последовательность, тем
меньше удельный вес служебной информации переданной декодеру.
В качестве меры определения степени статистической избыточности в заданной
цифровой последовательности приемлемо использовать энтропию, которая определяет
минимальное число бит, необходимое для представления заданной последовательности чисел
с последующей возможностью полного восстановления информации. Зная значение энтропии
можно определять максимально возможную степень сжатия последовательности и сравнивать
конкретный алгоритм с нижней границей.
Минимальное число бит, которое необходимо затратить для представления одного
символа той или иной информации можно найти с помощью формулы Шеннона [1]:
𝐻(𝑥) = − ∑𝑁
𝑖=1 𝑝𝑖 log 2 𝑝𝑖
𝐻(𝑋)
𝜂=
𝑛̅
(1)
𝑁
𝑛̅ = ∑ 𝑛𝑖 𝑝𝑖
𝑖=1
где 𝑝𝑖 - частота (вероятность) появления i -го числа в последовательности;
N – число уникальных чисел в последовательности.
Например, применяя данную формулу к представленному примеру получим:
Число уникальных символов равно 5 – это a1, a2, a3, a4 и a5. Частота появления
цифровых значений равна 𝑝1=0,4, 𝑝2 =0,2, 𝑝3 =0,2, 𝑝4 =0,1 и 𝑝5 =0,1. В результате, минимальное
число бит для представления одного символа в такой последовательности равно:
H = −0,4 log 2 0,4 − 2 ∗ 0,2 log 2 0,2 − 2 ∗ 0,1 log 2 0,1 ≈ 2,1 бит/символ.
Из рассмотренного примера видно, что чем больше разница между вероятностями букв
исходного алфавита, тем больше выигрыш кода Хаффмана по сравнению с простым блоковым
кодированием. Декодирование блока Хаффмана легко представить, используя кодовое дерево.
Принятая кодовая комбинация анализируется посимвольно, в результате чего, начиная с корня
дерева, мы попадаем в оконечный узел, соответствующий принятой букве исходного
алфавита. В качестве недостатков при этом могут быть:
1.Различные длины кодовых слов приводят к неравномерным задержкам кодирования.
2.Сжатие снижает избыточность, что соответственно повышает предрасположенность к
распространению ошибок, т.е. один ошибочно принятый бит может привести к тому, что все
последующие символы будут декодироваться неверно.
3.Предполагаются априорные знания вероятности букв, которые на практике не известны, а
их оценки часто бывают затруднительны.
Тип
кодиров
ания
Хафмана
LZW
Длинна
текста
(байт)
Номер попытки
Рассмотрим алгоритмы универсального кодирования, которые можно рассмотреть в
частности в разновидности методов кодирования Лемпела-Зива:
Алгоритм «LZ77» - относится к классу универсальных поскольку не требует априорных
знаний о статистике символов. Такой метод носит менее математически обоснованный
характер, но при этом обладает большей практичностью.
Алгоритм «LZW» - длина кода уменьшается, так как не используется буфер, а
кодирование проводится только по словарю. Следовательно, кодовая группа определяется
только длиной словаря, а декодирование словарного кода происходит в обратном порядке и
упрощается тем, что не требует поиска совпадений в словаре. При этом сжатие будет иметь
место, если длина полученной кодовой комбинации будет меньше кода того же сообщения
при непосредственном кодировании. Данный алгоритм учитывает следующие особенности:
1.Часто повторяющиеся цепочки сообщений кодируются очень эффективно.
2.Редко повторяющиеся символы и их последовательности с течением времени
удаляются из словаря.
3.Словарное кодирование асимптотически оптимально, т.е. что длина кодового слова
стремится к энтропии этого текста.
4.Практически достижимая степень сжатия для этих алгоритмов 50-60 %.
В таблице 1 приведены результаты моделирования сжатий различных сообщений и
представлены полученные результаты.
Таблица 1
Сравнительная таблица анализированных кодов:
1024
1
1024
2
1024
3
46649
1
46649
2
46649
3
1232967
1
1232967
2
1232967
3
1024
1
1024
2
1024
3
46649
1
46649
2
46649
3
1232967
1
1232967
2
1232967
3
Затр
ачен
ая
памя
ть
(бай
т)
1638
4
1638
4
2048
0
2457
60
2949
12
2498
56
5402
624
5278
048
5373
952
5324
8
4915
2
5734
4
9830
40
4956
16
4915
20
1474
9696
1494
2208
1447
9360
Затраченное
время (с)
Степен
ь
сжатия
(во
скольк
о раз
меньш
е)
Коэффицие
нт сжатия
(размер
относительн
о старого
файла)
0,005502
1,884
0,469
0,00099
1,884
0,469
0,001026
1,885
0,469
0,015961
1,873
0,466
0,013962
1,873
0,466
0,011968
1,873
0,466
0,6774
1,873
0,466
0,600334
1,873
0,466
0,651679
1,873
0,466
0,015481
1,665
0,400
0,005467
1,665
0,400
0,001986
1,664
0,399
0,031914
3,320
0,699
0,025896
3,320
0,699
0,028924
3,320
0,699
4,086556
4,328
0,769
2,273184
4,328
0,769
2,2513674
4,328
0,769
Средняя
затраченая
память
(байт)
Средн
ее
затрач
еное
время
(с)
Средняя
степень
сжатия
Средний
коэффицие
нт сжатия
17749
0,0025
06
1,884
0,469
263509
0,0139
6367
1,873
0,466
5351541
0,6431
3767
1,873
0,466
53248
0,0076
4467
1,665
0,399
656725
0,0289
1133
3,320
0,699
14723755
2,8703
6913
4,328
0,769
LZ77
1024
1
1024
2
1024
3
46649
1
46649
2
46649
3
7577
60
1089
536
8888
32
1314
816
1293
726
1301
273
207,03937
2,334
0,571
216,547574
2,334
0,571
764,0467
2,332
0,571
1910,912556
2,372
0,578
2691,785757
2,372
0,578
2689,552198
2,372
0,578
912043
395,87
7881
2,333
0,571
1303272
2430,7
5017
2,372
0,578
По полученным результатам можно сделать вывод, что:
1. Статистические методы сжатия обладают более высоким быстродействием, но
уступают по средним показателям коэффициента сжатия.
2. При увеличении размеров передаваемого объема данных преимущества
статистических методов асимптотически теряются, по сравнению со словарными.