17
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ» УТВЕРЖДАЮ: Заместитель директора по учебной работе Института кибернетики ________________С.А.Гайворонский «____» __________________2014 г. «Алгоритм сжатия данных RLE» Методические указания для проведения лабораторной работы по курсу «Теория информации » для подготовки бакалавров по направлениям 230100 «Информатика и вычислительная техника» и 230400 «Информационные системы и технологии» Издательство Томского политехнического университета 2014

Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования «НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ

ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

УТВЕРЖДАЮ:

Заместитель директора по учебной

работе Института кибернетики

________________С.А.Гайворонский

«____» __________________2014 г.

«Алгоритм сжатия данных RLE»

Методические указания для проведения лабораторной работы по курсу

«Теория информации » для подготовки бакалавров по направлениям 230100

«Информатика и вычислительная техника» и 230400 «Информационные

системы и технологии»

Издательство

Томского политехнического университета

2014

Page 2: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

2

УДК 32.88-01(075.8)

ББК 32.973.26 – 04я73

О957

Алгоритм сжатия данных RLE / Методические указания для

проведения лабораторной работы по курсу «Теория информации» для

подготовки бакалавров по направлениям 230100 «Информатика и

вычислительная техника» и 230400 «Информационные системы и

технологии». Составитель: Осокин А.Н. – Томск: Изд. ТПУ, 2014 – 17 с.

Методические указания рассмотрены и рекомендованы научно-

методическим семинаром кафедры вычислительной техники ИК.

Рецензент: программист центра коллективного пользования

«Суперкомпьютерный кластер ТПУ», к.т.н. Мальчуков А.Н.

© Томский политехнический университет, 2014

© Оформление. Издательство ТПУ, 2014

© Осокин А.Н. 2014

Page 3: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

3

ЦЕЛЬ РАБОТЫ

Освоение терминологии, используемой при сжатии данных,

характеристик алгоритмов сжатия данных, принципов работы алгоритмов

сжатия без потерь, детальное освоение алгоритма сжатия без потерь,

использующего исключение повторов (RLE).

Порядок выполнения работы

1. По приведенному описанию изучить и освоить алгоритм сжатия без

потерь, использующего исключение повторов (RLE).

2. Выполнить задание, приведенное в таблице 1. Вариант студента

указывает преподаватель.

3. Составить отчет по выполненной работе.

4. Подготовиться к защите отчета по предложенному теоретическому

материалу и вопросам, имеющимся в методических указаниях.

5. Защитить отчет по лабораторной работе

Таблица 1

варианта Что необходимо выполнить

1 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:00000000000001СA352266664832BF1654194089431694043241099

0870679006469408940480DAEBF

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:CF363523C6C2C0B5D012

2 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:1010101010FFFFFFFF00FFEF0001EFEFEFCFCFF000000FF00102

547115640356401564

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:C1FFC5EFC3C2A1D0BFBEC1C6C3FF

3 Упаковать алгоритмом RLE графического формата РСХ следующие

данные: 0000000000000111111111111111111111FFFFFFA0000A12

DDDB1B1B1B1B1B1BC1C0

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:25369568C426B3A7C9EFD196

4 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:00000200000003BAC52355564832CF098324987324098093287673

73737373D0C0B0A0

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: C1C123645546A36FE1C0

5 Упаковать алгоритмом RLE графического формата РСХ следующие

данные: 02000004000001D03245674616416ADC2AD1C12424242424

24242424242424442424242424

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: ADAEBABF00C1FEC2C3E4C5C0C1E4

6 Упаковать алгоритмом RLE графического формата РСХ следующие

данные: BD2F154FDBA1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1

354321564324564534FF534534DDCFCFCFCFC0C1

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:C4000100C1FEC3FFC1CFC1FFC1CFC1FFC1CF

Page 4: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

4

7 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:02000004000001BABB22FFFFFEFEFCFC4812EFF0F0F0F0F0D0D

0D0D0D0B0B1A0A0A1

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: CF363523C6C2C0B5D012D266531312C1C1A5

8 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:BABABABABABBABABABABABBABABABB68706470189043

4836048016401AD6C4ADC6146A4DC63A4C6486

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:0112358C15D025C1C6C2FE

9 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD03

245674616416ADC2AD1C1DFBEDDFBEDFEBEFFCD

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:D266531312C1C1A5

10 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:01BD2F154FDBE01015FDE01ED1001A0A101C61EF01D0113333

333333333334

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: D0DEA0C1D0FF363523C6C1C5AA

11 Упаковать алгоритмом RLE графического формата РСХ следующие

даные:408ADF70ADF604ADF19F8D400E022222222223333333334544444

545B554555444A4DFFDFDF4A4A4

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:ADAEBABFBDC6C1C5C0123456789ABCDEFF

12 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:01BD2F154FDBE01015FDE01ED1001A0A101C61EF01D0113333

333333333334

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:011011A2B2C2D2C1FFD321

13 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:DBAEFDBAFDABFDBAEDFABEDFAEBDFEABDFABEDFFAD

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAEBDDBAEBDF

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:D1A0A1A2B2C1C2C3C4C5C6B6B715

14 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:3416970316ADBEFEFABD374A9027329634120479324051413451

0350134510435014354242424242424242

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие

данные:D0DEA0C1D0FF363523C6C1C5AAADAEBABFBDC6C1C5C012

3456789ABCDEFF

15 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:00000000000001CA352266664832BF1654194089431694694043241

0990870679006469408940480DAEBFA

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:

0112358C15D025C1C6C2FE1A0A1A2B2C1C2C3C4C5C6B6B715

16 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

00000200000003BAC52355564832CF0983249873240980932876737373737

3D0C0B0A0

Page 5: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

5

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: 25369568C426B3A7C9EFD196

17 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

02000004000001BABB22FFFFFEFEFCFC4812EFF0F0F0F0F0D0D0D0D0

D0B0B1A0A0A1

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: D1A0A1A2B2C1C2C3C4C5C6B6B715

18 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD032456746

16416ADC2AD1C1DFBEDDFBEDFEBEFFCD

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: C1FFC5EFC3C2A1D0BFBEC1C6C3FF:

19 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

DBAEFDBAFDABFDBAEDFABEDFAEBDFEABDFABEDFFADBBBBB

BBBBBBBBBBBBBBBBBBBBBBBBBBAEBDDBAEBDF

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:

61C1CAC1DBCEC1DCC1FAC1C1C1FBC624ACC4AD

20 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

3416970316ADBEFEFABD374A90273296341204793240514134510350134

510435014354242424242424242

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: C398C1C500C611C2DEA1CCCDC1DC

21 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

408ADF70ADF604ADF19F8D400E022222222223333333334544444545B55

4555444A4DFFDFDF4A4A4

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: C1F7C1C528CBC1EA13C880AA74C3C1

22 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

BABABABABABBABABABABABBABABABB687064701890434836048

016401AD6C4ADC6146A4DC63A4C6486

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:

C1C144A2C251C1EFC4FD001AC223C1C05673C1FF13C833

23 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

00373737BF20DA7070707070707070C1F2F22F72727272727272727272727

2727272

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: B5C4BF02CE3A9976C1CFC47CC1C1

24 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

B5BFBFBFBF023A3A3A3A3A3A3A3A3A3A3A3A3A3A9976CF7C7C7C7

CC1

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные:

Page 6: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

6

4D55C2DDC1CFC1FAC1FDC639C1C0C1FDBBBC1273C3C0C1FAC1CD

C4AA

25 Упаковать алгоритмом RLE графического формата РСХ следующие

данные:

C144A25151EFFDFDFDFD001A2323C05673FF133333333333333333

Распаковать сжатые алгоритмом RLE графического формата РСХ

следующие данные: 00C337BF20C1DAC8C1C1C2F22FCF72

Page 7: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

7

Сжатие данных

Основные понятия

Как хранение, так и передача данных требует затрат участников

информационного процесса. Эти затраты обычно составляют вполне

значимые величины как для корпоративных пользователей, так и для

индивидуальных. В связи с этим, регулярно возникает необходимость

уменьшать объем данных (сжимать данные) перед тем, как размещать их на

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

каналам связи. Соответственно, существует и необходимость восстановления

исходных данных из сжатых.

Сжатие данных в вычислительной технике и системах связи

(используются также термины архивация данных, когда сжатие

применяется к готовым документам; программные средства, выполняющие

эти операции, называют архиваторами, например, WinZip, WinRAR, WinArj,

PKZIP.EXE, RAR.EXE, ARJ.EXE; используется и синонимы слова сжатие

упаковка, компрессия) - это процесс кодирования массивов данных

таким образом, чтобы объем занимаемый полученным кодом в

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

обратимым, т.е. должна существовать обратная процедура, называемая

декодированием (распаковкой, разархивацией), позволяющая

восстановить из сжатых данных набор данных, в той или иной мере

соответствующий исходным данным.

Такое определение под сжатием понимает следующие процедуры

преобразования данных: неискажающее сжатие цифровых данных, сжатие

цифровых данных с регулируемыми потерями, получение экономного

представления входного аналогового сигнала.

При неискажающем сжатии цифровых данных исходный массив

цифровых данных (исходное сообщение) представляется таким образом,

чтобы получить минимизированный объем закодированных данных. Сжатие

должно быть полностью обратимым, т.е. должна существовать процедура,

позволяющая восстановить из сжатых данных точную копию исходного

массива данных. Подчеркивая эту особенность, такой процесс часто

называют сжатием без потерь, обратимым сжатием. Исходные данные

представляются каким-либо двоичным кодом: коды символов текста, команд

процессора, яркости точек растрового изображения, амплитуды аналогового

сигнала, ссылки на другие фрагменты данных.

При сжатии цифровых данных с регулируемыми потерями

обеспечивается экономное представление цифровых данных, но процедура

сжатия не является полностью обратимой, т.е. распаковка не позволяет во

всех случаях восстановить исходный массив данных до отдельного бита. Как

правило, потери допускаются только в той части данных, которая не является

существенной при дальнейшем использовании распакованного сообщения.

Ясно, что в общем случае «существенность» потерь данных оценить

невозможно, поэтому сжатие с потерями допускается только для данных,

Page 8: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

8

которые допускают некоторую потерю. Обычно это аналоговые по своей

природе данные, например, оцифрованные изображения или звук: цифровые

фотографии, видеоряды, звукозаписи.

Хотя сжатие с потерями обычно обеспечивает более высокую

степень сжатия, чем сжатие без потерь, его нельзя применять к

текстовым документам, базам данных и, тем более, к программному

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

данных.

При получении экономного цифрового представления аналогового

сигнала сжатие обеспечивается оптимальным квантованием непрерывного

сигнала с обеспечением заданной точности при его восстановлении. В

данном курсе это сжатие не рассматривается.

Методы сжатия реализуются соответствующими алгоритмами. Могут

быть программные и аппаратные реализации алгоритмов.

Программой сжатия называют программный продукт, предназначенный

в первую очередь для компактного представления определенных наборов

данных.

Архиваторами называют программы, позволяющие помещать

множество файлов в единственный файл (архив).

Аппаратная реализация алгоритма сжатия и распаковки называется

кодеком. Кодек – специальное аппаратно-программное средство,

реализующее алгоритм сжатия и распаковки.

Характеристики алгоритмов сжатия данных

При сравнении различных алгоритмов сжатия и их реализаций

возникают вопросы количественной оценки эффективности. В качестве

критериев оценки программных и аппаратных реализаций алгоритмов сжатия

используют следующие численные показатели.

Коэффициент сжатия R, характеризующий отношение объема

исходных данных Lисх к объему сжатых данных Lсж:

сж

исх

L

LR

.

Степень сжатия r, характеризующая относительное уменьшение объема

данных:

%100исх

сжисх

L

LLr

.

Отметим, что и коэффициент сжатия R и степень сжатия r

характеризуют один и тот же критерий эффективности, но дают разный

порядок цифр. Например, объем исходных данных равен 100 кбайт, объем

сжатых архиватором этих данных равен 10 кбайт. В этом случае

Page 9: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

9

10кбайт 10

кбайт 100R ,

%90%100кбайт 100

кбайт 10)-(100r .

Из-за рекламных соображений чаще используют степень сжатия, иногда

даже не указывая, что степень сжатия измеряется в %.

Скорость сжатия Vс определяется по формуле

сж

исхc

t

LV

,

где tcж – время сжатия исходных данных.

Скорость распаковки Vр определяется по формуле

р

исхр

t

LV

,

где tр – время распаковки исходных данных.

Очевидно, что время сжатия и распаковки существенно зависит от

производительности используемых аппаратных средств. Поэтому при

сравнении скорости работы реализаций алгоритмов должно указываться

оборудование, использованное для тестирования.

Важной характеристикой алгоритма сжатия является симметричность

во времени С – отношение времени сжатия исходных данных ко времени

распаковки:

p

сж

t

tC

.

Некоторые алгоритмы (например, фрактальный алгоритм сжатия

изображений) обеспечивают весьма большой коэффициент сжатия, но

затрачивают очень много времени на сжатие изображения. Однако

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

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

для архивации изображений, т. к. в этом случае сжатие осуществляется один

раз, а при многократном использовании будет производиться достаточно

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

алгоритма.

Для использования в Internet важной характеристикой алгоритмов

сжатия является масштабируемость изображения. Масштабирование

изображений подразумевает легкость изменения размеров изображения до

размеров окна активного приложения, возможность показать огрубленное

(низкого разрешения), используя только начало файла. Данная возможность

актуальна для различного рода сетевых приложений, где перекачивание

Page 10: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

10

изображений может занять достаточно большое время и желательно, получив

начало файла, корректно показать preview.

Алгоритмы сжатия без потерь

Для сжатия без потерь доказаны следующие теоремы.

1. Для любой последовательности данных существует

теоретический предел сжатия, который не может быть превышен без потери

части информации.

2. Для любого алгоритма сжатия можно найти такую

последовательность данных, для которой он обеспечит лучшую степень

сжатия, чем другие алгоритмы.

3. Для любого алгоритма сжатия можно найти такую

последовательность данных, для которой данный алгоритм вообще не

позволит получить сжатия.

Из сформулированных теорем следует, что наивысшую эффективность

алгоритмы сжатия демонстрируют для разных типов данных и разных

объемов данных. Поэтому разработано в настоящее время достаточно

большое количество алгоритмов сжатия без потерь. Наиболее

распространенные алгоритмы сжатия без потерь приведены на рис. 1.

Рис.1 Алгоритмы сжатия без потерь

Статистические алгоритмы сжатия

Теоретическую основу данных алгоритмов заложил американский

ученый Клод Элвуд Шеннон своей теоремой о кодировании для дискретного

канала без помех. Статистические алгоритмы сжимают данные с

использованием того факта, что частоты встречаемости (в теоретических

исследованиях используется понятие вероятности появления) различных

символов в сжимаемых данных не одинаковы, следовательно можно

сокращать объем данных присвоением часто встречающимся символам

коротких кодов, а редко встречающимся – длинных. Важная особенность

Page 11: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

11

статистических алгоритмов сжатия состоит в том, что они не учитывают

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

зависимости от других. Можно как угодно менять порядок символов в

сообщении – степень сжатия от этого никак не изменится.

Первым статистическим алгоритмом сжатия был алгоритм Шеннона -

Фэно. Алгоритм рассмотрен в большом количестве учебников и учебных

пособий, но в практике сжатия не используется, т.к. алгоритм не гарантирует

однозначного построения для предложенного набора данных кода, который

позволит сжать эти данные наилучшим образом. При кодировании

необходимо перебрать все варианты построения кода, чтобы получить

наименьший объем сжатых данных.

Широко применяются в практике сжатия данных алгоритм Хаффмена и

алгоритм арифметического кодирования.

Алгоритмы KWE

В основу алгоритмов кодирования по ключевым словам (KWE =

Keyword Encoding) положено кодирование лексических единиц исходного

документа группами байтов фиксированной длины. Примером лексической

единицы может служить слово (последовательность символов, справа и слева

ограниченная пробелами или символами конца абзаца). Результат

кодирования сводится в таблицу, которая прикладывается к сжатому коду и

представляет собой словарь. Обычно для англоязычных текстов принято

использовать двухбайтную кодировку слов. Образующиеся при этом пары

байтов называют токенами.

Эффективность данной группы алгоритмов существенно зависит от

длины документа, поскольку из-за необходимости добавлять к архиву

словарь длина кратких документов не только не уменьшается, а даже

возрастает.

Алгоритм наиболее эффективен для англоязычных текстовых

документов и файлов баз данных. Для русскоязычных документов,

отличающихся увеличенной длиной слов и большим количеством приставок,

суффиксов и окончаний, не всегда удается ограничиться двухбайтными

токенами, и эффективность алгоритма заметно снижается.

Алгоритм арифметического кодирования

Алгоритм арифметического кодирования, также как и алгоритм сжатия

Хаффмена, использует для уменьшения объема исходных данных разность в

частоте встречаемости символов. В результате сжатия этим алгоритмом

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

сравнению с более короткими кодами для часто встречающихся символов.

Однако, в отличие от алгоритма Хаффмена, символы кодируются не

обязательно целым числом битов, т.е. один бит сжатых данных может

относиться к нескольким символам сжимаемых данных.

Для данных, в которых частоты встречаемости для разных символов не

сильно отличаются, алгоритм арифметического кодирования дает

Page 12: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

12

результаты, сходные с результатами, получаемыми при сжатии алгоритмом

Хаффмена. Но там, где частоты встречаемости разных символов при

небольшом их числе резко отличаются, арифметическое кодирование дает

лучший результат по сравнению с алгоритмом Хаффмена. В большинстве

реальных случаев арифметическое кодирование дает

несколько больший коэффициент сжатия.

До недавнего времени распространение данного алгоритма

сдерживалось наличием на него патентов. В настоящее время срок действия

патентов закончился и его используют.

Словарные и словарно-статистические алгоритмы сжатия

В 1977 году израильские ученые А.Лемпел и Я.Зив опубликовали

работу, в которой привели разработанный ими алгоритм сжатия данных,

названный позже LZ. На основе этого алгоритма в дальнейшем было

разработано множество алгоритмов, учитывающих технические возможности

компьютеров. В алгоритмах LZ учитываются корреляционные связи между

символами, что позволяет значительно увеличить коэффициент сжатия.

Сущность алгоритма сжатия данных LZ состоит в том, что

повторяющиеся последовательности символов заменяются указателями на

позиции, где они в тексте уже ранее появлялись. Одной из форм такого

указателя может быть пара (n, m), которая ссылается на последовательность

символов длиной m символов, начинающуюся с позиции n. В большинстве

реализаций алгоритма Лепеля – Зива позиция в паре кодируется как

смещение (разность) между позициями кодируемой строки и строки, на

которую произведена ссылка.

Из-за ограниченного объема оперативной памяти компьютера обычно

используется вариант алгоритма Лемпеля – Зива со скользящим окном, когда

максимальное значение смещения ограничено некоторым значением.

Сжатие данных происходит следующим образом. В сжатые данные

выдаются либо символы сжимаемых данных, либо ссылки на уже

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

символы некоторым количеством m совпадают с теми, что уже были

прочитаны, начиная с позиции n. Распаковка начинается с начала сообщения.

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

Алгоритмы сжатия, использующие исключение повторов (RLE = Run-

Length Encoding) чрезвычайно просты и ориентированы на быстрое сжатие

данных, содержащих много идущих подряд одинаковых символов.

В основу алгоритмов RLE положен принцип выявления групп подряд

идущих одинаковых символов и замены их структурой, в которой

указывается код символа и число повторов, т.е. группа идущих подряд

одинаковых символов заменяется на пару кодов вида <код символа; число

Page 13: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

13

повторов>. Максимальное число одинаковых символов, которое можно

закодировать одной такой парой, определяется длиной кода числа повторов.

Проблему при сжатии алгоритмами RLE представляют данные,

содержащие незначительное количество повторяющихся символов. К

одиночным символам также приходится добавлять счетчик повторов, что

вместо сжатия дает увеличение объема данных. Поэтому в практических

реализациях алгоритмы RLE несколько усложняются, чтобы уменьшить

увеличение объема сжатых данных в случае не очень подходящих данных.

В качестве примера рассмотрим реализацию RLE а графическом

формате PCX. Группа повторяющихся байтов заменяется на байт-счетчик и

байт данных. В байте-счетчике старшие два бита содержат единицы, в

младших шести битах хранится число повторов. Неповторяющиеся значения,

меньшие 0C0h = 0C016 = 110000002, записываются в сжатые данные без

изменений. Для неповторяющихся значений, больших 0C016 = 110000002,

(т.е. с двумя единицами в старших разрядах) такой подход недопустим, так

как при распаковке такой байт будет восприниматься как байт-счетчик

повторов. Поэтому такие байты при записи в сжатый поток предваряются

байтом-счетчиком с числом повторов, равным единице (11000001 = С116).

Рассмотрим пример.

Исходные данные: 00000000100FEFFFFFF.

Сжатые данные: С4000100С1FEC3FF.

В приведенном примере из строки длиной 10 байтов получена

упакованная строка длиной 8 байтов. Видно, что один байт FE кодируется

двумя байтами С1FE, поэтому некоторые данные при таком сжатии могут

вырасти в объеме до двух раз. Например:

Исходные данные: CFFFCFFFCFFF.

Сжатые данные: C1CFC1FFC1CFCFFC1CFC1FF.

Распаковка производится следующим образом. Из входного потока

читается байт и проверяются его старшие два бита. Если они равны единице,

то из этого байта выделяются шесть младших битов, которые используются

как счетчик. Далее из входного потока считывается байт и его значение

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

Если же в старших битах не две единицы, то этот байт непосредственно

копируется в выходной поток. Рассмотрим пример.

Сжатые данные: C510C4FF0001C1CFC1EF.

Распакованные данные: 1010101010FFFFFFFF0001CFEF.

Рассмотрим ещё пример на СЖАТИЕ.

Исходные данные: 01BD2F154FDBE01015FDEO1ED1001A0A 10 1C 61

EF 01 D0 11 33 33 33 33 33 33 33 34

Последовательно проверяем каждый байт, и формируем сжатый поток

согласно алгоритму RLE.

01 – первый байт исходных данных. Следующий за ним байт BD, это

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

Page 14: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

14

Старшие два бита байта 01 не равны единицам. Следовательно, первый байт

исходных данных переписываем в сжатый поток без изменений.

BD 2F 15 4F – следующие за первым байты, аналогично первому,

переписываем в сжатый поток без изменения.

Два следующих байта DB16=110110112 и E016=111000002 – это байты,

старшие два бита которых содержат единицы. Поэтому, эти байты, при

записи в сжатый поток, предваряем байтами-счетчиками, с числом повторов

равным единице (C116=110000012).

10 15 – эти байты не содержат единицы в старших битах и не входят в

цепочку повторяющихся байтов. Переписываем их в сжатый поток без

изменения.

Два следующих бита FD16=111111012 E016=111000002 – это байты,

старшие два бита которых содержат единицы. Поэтому, эти байты, при

записи в сжатый поток, предваряем байтами-счетчиками, с числом повторов

равным единице (C116=110000012).

1E – этот байт не содержит единиц в старших битах и не входит

в цепочку повторяющихся байтов. Переписываем его в сжатый поток без

изменения.

Следующий байт D116=110100012 – это байт, старшие два бита которого

содержат единицы. Поэтому, этот байт, при записи в сжатый поток,

предваряем байтом-счетчиком, с числом повторов равным единице

(C116=110000012).

00 1A 0A 10 1C 61 – эти байты не содержат единицы в старших битах и

не входят в цепочку повторяющихся байтов. Переписываем их в сжатый

поток без изменения.

Следующий байт EF16=111011112 – это байт, старшие два бита которого

содержат единицы. Поэтому, этот байт, при записи в сжатый поток,

предваряем байтом-счетчиком, с числом повторов равным единице

(C116=110000012).

01 – этот байт не содержит единиц в старших битах и не входит

в цепочку повторяющихся байтов. Переписываем его в сжатый поток без

изменения.

Следующий байт D016=110100002 – это байт, старшие два бита которого

содержат единицы. Поэтому, этот байт, при записи в сжатый поток,

предваряем байтом-счетчиком, с числом повторов равным единице

(C116=110000012).

11 – этот байт не содержит единиц в старших битах и не входит

в цепочку повторяющихся байтов. Переписываем его в сжатый поток без

изменения.

Далее идёт группа повторяющихся байтов 33 33 33 33 33 33 33, её

заменяем на байт-счетчик и байт данных C7 33.

Последний байт 34 не содержит единицы в старших битах,

переписываем его в сжатые данные без изменения.

Page 15: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

15

Сжатые данные: 01 BD 2F 15 4F C1 DB C1 E0 10 15 C1 FD C1 EO 1E

C1 D1 00 1A 0A 10 1C 61 C1 EF 01 C1 D0 11 C7 33 34

Пример выполнения РАСПАКОВКА

Сжатые данные: 01 10 11 A2 B2 C2 D2 C1 FF D3 21

Последовательно проверяем каждый байт.

01 10 11 А2 B2 – не являются байтами-счетчиками, их записываем в

распакованные данные без изменения.

Следующий байт С216=110000102 – это байт-счетчик (с числом

повторов равным двум), байт значения которого D2. В распакованные

данные записываем D2 D2.

Затем идет С1 – это байт-счетчик (с числом повторов равным единице),

байт значения которого FF. В распакованные данные записываем FF.

D3 – это байт-счетчик (т.к. D316=110100112, с числом повторов равным

0100112=1910), байт, значение которого 21. В распакованные данные

записываем девятнадцать раз байт 21.

Распакованные данные: 01 10 11 A2 B2 D2 D2 FF 21 21 21 21 21 21 21

21 21 21 21 21 21 21 21 21 21 21 21

Вопросы для защиты отчета по лабораторной работе

1. Приведите определение процесса сжатия данных.

2. Приведите определение неискажающего сжатия цифровых данных

(сжатие без потерь).

3. Приведите определение сжатия цифровых данных с регулируемыми

потерями.

4. Приведите определение архиватора. Приведите примеры

распространенных архиваторов.

5. Приведите формулы подсчета коэффициента сжатия, степени сжатия.

6. Приведите формулу подсчета симметричности по времени алгоритма

сжатия. В каких случаях оправдано применение несимметричных по времени

алгоритмов сжатия данных?

7. Поясните смысл термина «масштабирование изображений» при

использовании архиваторов.

8. В рекламе на архиватор А указано, что он имеет коэффициент сжатия

20, в рекламе на архиватор В указано, что он обеспечивает степень сжатия

80. Какой из архиваторов формирует более компактный файл сжатых

данных?

9. Какие алгоритмы сжатия без потерь Вам известны?

10. Сформулируйте теоремы для сжатия без потерь.

11. Сформулируйте идею сжатия данных статистическими алгоритмами.

12. Какой принцип положен в основу алгоритмов RLE?

13. Сжать алгоритмом RLE следующие данные: (предлагает

преподаватель, ведущий занятие)

Page 16: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

16

14. Распаковать сжатые алгоритмом RLE данные: (предлагает

преподаватель, ведущий занятие)

15. Какие файлы являются наилучшими объектами для сжатия

алгоритмом RLE?

16. Сформулируйте идею алгоритма кодирования по ключевым словам.

Для каких данных этот алгоритм наиболее эффективен?

17. Сформулируйте сущность алгоритма LZ.

18. Почему используется вариант алгоритма Лемпеля-Зива со

скользящим окном?

19. Опишите процесс сжатия данных алгоритмом Лемпеля-Зива.

20. Чем отличается алгоритм арифметического кодирования от

алгоритма Хаффмена?

Page 17: Федеральное государственное бюджетное …metod.vt.tpu.ru/edu/df/ti/RLE.pdf9 Упаковать алгоритмомrle графического формата

17

Учебное издание

ОСОКИН Александр Николаевич

Алгоритм сжатия данных RLE

Методические указания к выполнению лабораторной работы по курсу «Теория информации»

для студентов, обучающихся по направлениям 230100 «Информатика и вычислительная техника» и 230400 «Информационные системы и технологии»

Отпечатано в Издательстве ТПУ в полном соответствии с качеством предоставленного оригинал-макета

Подписано к печати 30.08.2011. Формат 60х84/16. Бумага «Снегурочка». Печать XEROX. Усл.печ.л. 9,01. Уч.-изд.л. 8,16.

Заказ . Тираж 100 экз.

Национальный исследовательский Томский политехнический университет

Система менеджмента качества Томского политехнического университета сертифицирована

NATIONAL QUALITY ASSURANCE по стандарту ISO 9001:2008

. 634050, г. Томск, пр. Ленина, 30 Тел./факс: 8(3822)56-35-35, www.tpu.ru