Практическая часть
Тестовые файлы:
- enwik7
- текст на русском языке (чехов.txt)
- exe файл (SafeMain.exe)
- Черно-белое изображение (цвет.raw, размер 2048*2048, рис. 1 - а)
- Изображение в оттенках серого (piter.raw, 800*600, рис. 1 - б)
- Цветное изображение (bw.raw, 800*600 рис. 1 - в)
|
|
а) |
б) |
|
|
в) |
|
Рисунок 1 - тестовые изображения |
|
Задание 1. - Исследование зависимость энтропии от размера блоков, на которые разбивается текст, подаваемый на вход BWT+MTF, для enwik7.
Для выполнения данного задания файл enwik7 был разбит на блоки размером от 500 до 15000 байтов с шагом 1000. Для входных данных применялись алгоритмы преобразования BWT и MTF и обратные преобразования для проверки.
Рисунок 2
Полученные результаты показали, что с увеличением размера блока энтропия постепенно понижается. Происходит это из-за улучшения структуры данных (появились длинные последовательности одинаковых символов).
Задание 2. - Исследовать зависимость коэффициента сжатия от размера буфера для алгоритма LZ77.
Для исследования зависимости в функции было выставлено окно размером 1024 байта.
Другой грфик, где зависимость от окна, а не буфера
|
Задание 3. - Исследование эффективности компрессоров для тестовых данных.
Файл |
Компрессор |
Размер файла |
Коэфф. сжатия |
|
До/после компрессии |
После компрессии |
|||
Enwik7 |
HA |
10000000/ 10000000 |
6412387 |
1.559 |
RLE |
10374322 |
0.964 |
||
BWT+RLE |
9039063 |
1.106 |
||
BWT+MTF+HA |
5227796 |
1.913 |
||
BWT+MTF+RLE+HA |
5995126 |
1.668 |
||
LZ77 |
17994670 |
0.556 |
||
LZ77+HA |
7729756 |
1.294 |
||
LZ78 |
6760525 |
1.479 |
||
LZ78+HA |
5408977 |
1.849 |
||
Текст на русском |
HA |
361120/ 361120 |
187715 |
1.924 |
RLE |
364470 |
0.991 |
||
BWT+RLE |
217222 |
1.662 |
||
BWT+MTF+HA |
147188 |
2.453 |
||
BWT+MTF+RLE+HA |
142928 |
2.527 |
||
LZ77 |
371850 |
0.971 |
||
LZ77+HA |
225898 |
1.599 |
||
LZ78 |
260240 |
1.388 |
||
LZ78+HA |
174647 |
2.068 |
||
.exe |
HA |
5201376/ 5201376 |
4276239 |
1.216 |
RLE |
4965312 |
1.048 |
||
BWT+RLE |
4289708 |
1.213 |
||
BWT+MTF+HA |
3217684 |
1.616 |
||
BWT+MTF+RLE+HA |
3465474 |
1.501 |
||
LZ77 |
10423255 |
0.499 |
||
LZ77+HA |
4259389 |
1.221 |
||
LZ78 |
4790860 |
1.086 |
||
LZ78+HA |
3754424 |
1.385 |
||
Ч/б изображение |
HA |
4194304/ 4194304 |
524289 |
8.000 |
RLE |
66056 |
63.496 |
||
BWT+RLE |
66056 |
63.496 |
||
BWT+MTF+HA |
524289 |
8.000 |
||
BWT+MTF+RLE+HA |
12386 |
338.633 |
||
LZ77 |
1233670 |
3.400 |
||
LZ77+HA |
293185 |
14.306 |
||
LZ78 |
20480 |
204.800 |
||
LZ78+HA |
10309 |
406.858 |
||
Файл |
Компрессор |
Размер файла |
Коэфф. сжатия |
|
До/после компрессии |
После компрессии |
|||
Серое изображение |
HA |
1440000/ 1440000 |
1404264 |
1.025 |
RLE |
828886 |
1.737 |
||
BWT+RLE |
1021896 |
1.409 |
||
BWT+MTF+HA |
648344 |
2.221 |
||
BWT+MTF+RLE+HA |
751320 |
1.917 |
||
LZ77 |
3015125 |
0.478 |
||
LZ77+HA |
1337311 |
1.077 |
||
LZ78 |
1247465 |
1.154 |
||
LZ78+HA |
946644 |
1.521 |
||
Цветное изображение |
HA |
1440000/ 1440000 |
1385807 |
1.039 |
RLE |
1440000 |
0.988 |
||
BWT+RLE |
1199855 |
1.200 |
||
BWT+MTF+HA |
1041225 |
1.383 |
||
BWT+MTF+RLE+HA |
1062219 |
1.356 |
||
LZ77 |
4957950 |
0.290 |
||
LZ77+HA |
1720988 |
0.837 |
||
LZ78 |
1776635 |
0.811 |
||
LZ78+HA |
1365688 |
1.054 |
||
Проанализировав данные из таблицы, можно сделать вывод, что самыми эффективными компрессорами оказались BWT+MTF+HA (enwik7, exe файл, серое изображение, цветное изображение) и BWT+MTF+RLE+HA (русский текст). Однако для черно-белого изображения лучшее сжатие получилось через компрессор LZ78+HA.
Ссылка на гитхаб: https://github.com/RoKeirin/aisd_lab1
Коды алгоритмов:
