Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по компьютерной графике.doc
Скачиваний:
154
Добавлен:
02.05.2014
Размер:
455.17 Кб
Скачать

RlEсхемы с использованием флага

При этом способе для представления группы используется не 2, а 3 байта.

1-ый байт – флаговое значение, указывает на то, что следующие 2 байта являются частью закодированного пакета

2-ой байт – счетчик группы

3-ий байт – значение группы

Если в процессе кодирования встречаются группы, состоящие из 1, 2х или 3х символов, то эти данные не кодируются, а непосредственно записываются в поток сжатых данных.

флаг

счетчик

значение

255

0

2

Для значения флага выбирают значение, которое редко встречается.

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

Если прочитанный символ не является флаговым значением, то он записывается в выходной поток напрямую.

Минимальный размер группы, пригодный для кодирования таким способом возрастает с 3 до 4 одинаковых символов.

Если поток незакодированных данных содержит значение символов, равное флаговому значению, то этот символ должен быть закодирован в 3-х байтовый пакет. Алгоритмы RLEиспользуют такие флаговые значения, которые в потоке несжатых данных встречаются крайне редко.

RlEпакеты вертикального повторения

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

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

Т.е. одним пакетом, состоящим из счетчика группы + значением, можно описать количество повторяющихся строк.

100 строк развертки белых пикселей, в строке – 12380 пикселей

1 строка – 5 пакетов по 256 пикселей

1 пакет

2 пакет

3 пакет

4 пакет

5 пакет

пакет вертик.повт-ия

счетчик

зн-ие

сч-к

Кол-во повт-ий

255

255

*

0

98

В данном примере:

10 байт – описывается сама строка

1 байт – маркер конца строки

2 байта – пакет вертикального повторения (всего 13 байт)

//30.11.04 Лекция 9// 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, а в таблицу добавляется следующее значение, равное строка + символ. Этот процесс продолжается до тех пор пока не запишутся все входящие данные и не записаны все коды.//

Соседние файлы в предмете Компьютерная Графика