Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции / Лекция 14

.doc
Скачиваний:
11
Добавлен:
18.02.2016
Размер:
55.3 Кб
Скачать

//Лекция 14// Методы сжатия графических данных. LWZ сжатие.

LWZ сжатие

Этот метод сжатия данных без потерь применяется в различных форматах файловых изображений, в частности gif, tif, //включен в стандартное сжатие для модемов.// Был разработан в 1977г. в Израиле Абрахамом Лемпелом и Джеком Зивом, и назывался он LZ-77.

Алгоритм сжатия LZ-77 стал основой архивирующих программ, таких как compress, zip,// jpg.//

В 1978 алгоритм был модифицирован и стал применяться для сжатия двоичных данных.

В 1984 алгоритм был доработан Терри Велчем, и он стал называться LZW

LZW позволяет работать с любым типом данных, //так как обеспечивает быструю распаковку и сжатие данных.//

Алгоритм LZW основан на поиске шаблонов в заданной структуре изображения и сохранении этих шаблонов.

Программа считывает значение символа или пикселя и строит таблицу кодов, которая представляет повторяющиеся символьные комбинации или пиксельные узоры, найденные программой.

Степень сжатия 3:1 или 4:1. Хорошо сжимаются сильно насыщенные узорами изображения, содержащие большие блоки однотипной окраски или повторяющиеся цветные узоры.

Метод LZW, как и RLE, не является форматом, но включается в различные форматы файлов.

Алгоритм LZW относится к методу адаптивного кодирования. Этот алгоритм из данных входного потока строит словарь. Образцы данных, поступающих для кодирования идентифицируются и сопоставляются с записями словаря. Если подстрока не представлена в словаре, то создается и записывается в словарь кодовая фраза. Затем эта фраза записывается в выходной поток сжатых данных.

Для LZW необязательно сохранять словарь для последующего декодирования входных потоков данных. Декодирование данных осуществляется в порядке, обратном кодированию. Декомпрессор читает из потока закодированных данных код. Если его еще нет в словаре, добавляет его туда. Затем этот код переводится в строку и записывается в выходной поток несжатых данных.

При сжатии текстовых файлов LZW инициализирует первые 256 записей словаря 8-ибитовых символов ASCII. Эти фразы представляют все возможные значения, которые могут встретиться в потоке данных. Из этих же данных строятся все подстроки.

Т.к. LZW кодировщик и декодер начинают с инициализации словаря, то декодеру не нужен оригинальный словарь, он строит словарь-дубликат в процессе кодирования.

Пример:

/WED/WE/WEE/WEB/WET

Алгоритм сжатия Алгоритм распаковки

Входной поток

Код

/

/W – 256

W

WE – 257

E

ED – 258

D

D/ – 259

256

/WE – 260

E

E/ – 261

260

/WEE – 262

261

E/W – 263

257

WEB – 264

B

B/ – 265

260

/WET – 266

T

Выходной поток

Код

/

/W – 256

W

WE – 257

E

ED – 258

D

D/ – 259

256

/WE – 260

E

E/ – 261

260

/WEE – 262

261

E/W – 263

257

WEB – 264

B

B/ – 265

260

/WET – 266

T

Каждому алгоритму сжатия соответствует алгоритм распаковки. Алгоритм распаковки добавляет новую строку в таблицу строк каждый раз как читает.

//Алгоритм распаковки аналогичен сжатию с точностью до наоборот.

Работа алгоритмов начинается с проверки наличия строки (очередного символа из входящего потока в библиотеку, так как первые 255 символов уже определены, то если не находится строка в таблице символов, в выходном потоке пишется значение по таблице ASCII, а в таблицу добавляется следующее значение, равное строка + символ. Этот процесс продолжается до тех пор пока не запишутся все входящие данные и не записаны все коды.//

Кодирование по алгоритму Хаффмана

Международный консультативный комитет по телефонии и телеграфии (CCITT) разработал серию протоколов для факсимильной передачи изображений. Эти протоколы основываются на алгоритме, предложенном Д. Хаффманом в 1952г., и используются для обработки черно-белых изображений.

Метод Хаффмена строит таблицы кодов, базирующихся на частоте повторения элементов. Чем чаще встречается тот или иной элемент, тем короче будет заменяющий его код.

Степень сжатия 2:1 и 3:1.

По алгоритму Хаффмена для сжатия файла необходимо прочитать его полностью и подсчитать сколько раз встречается каждый элемент, подлежащий кодированию.

//Этот алгоритм разрабатывался для факсовых передач черно-белых изображений передачи данных. Также называется кодирование по алгоритму Хаффмана.

Он является неадаптивным, то есть не настраивается для кодирования каждого реестра оптимальным образом , используется фиксирование таблицы кодовых значений , которые были выбраны заранее для представления данных в степень сжатия по этим алгоритмам 5:1-8:1.

Кодирование:

Кодировщик определяет длину пиксельных групп в строке развертке и выводит двоичное кодовое слово, представляющее длину и цвет группы . Кодированное слова берутся из таблицы значений представляемых группами белых и черных пикселей. Двоичное кодовое слово по этому алгоритму бывает переменной длины. Размер каждого слова определяется на основе статистически усредненной частоты черно-белых групп, появляется в течение печатных документов. Длины групп, встречающиеся наиболее часто, присваивается наименьшее кодированное слово , чем длины групп, которые появляются менее часто.//

Алгоритм Хаффмена для символьных групп

Подсчитаем вхождение каждого символа в файл и получим следующие характеристики

Файл длиной 100 байт, имеет различные символы, длина каждого 1 байт.

Символ

A

B

C

D

E

F

Число вхожд-ий

10

20

30

5

25

10


на 100 символов

Сначала рассматриваются те символы, которые имеют самую низкую частоту вхождений.

Например D и F или D и A. Для них формируется узел, частота вхождения которого равна сумме частот вхождений этих символов.

A B C D E F

10 20 30 5 25 10

| | | | | |

| | | |______|______|

| | | 15 |

|_____|_____|_________| |

| 25 |___________|

|___| 55

45 |

|__________|

100

Если из вершины дерева идти по левой ветке, то присваиваем значение 0, по правой – 1.

C 10 E 11 B 00 A 010 F 0111 D 0110

Базируется на частоте повторений величин: чем чаще встречается величина, тем короче будет её код.

Существует целая группа протоколов, разработанных с использованием алгоритма Хаффмена. За счет модификации этого алгоритма достигается степень сжатия 4:1 и 5:1.

Соседние файлы в папке Лекции