27
СОДЕРЖАНИЕ ВВЕДЕНИЕ 1. Компрессия (сжатие) данных, техника и типы. 1.1 Краткий обзор понятий. 1.2 Алгоритмы сжатия текстов/файлов неизвестного формата. 1.3 Сжатие данных с потерями. 1.3.1 Типы сжатия с потерями. 1.3.2 Примеры сжатия данных с потерями. 1.4 Сжатие данных без потерь. 1.4.1 Техника сжатия без потерь. 1.4.2 Методы сжатия без потерь. 2. Методы сжатия (компрессии данных). 2.1 Алгоритм Зива-Лемпеля (LZ*). 2.1.1 Принцип скользящего окна. 2.1.2 Механизм кодирования совпадений. 2.1.3 Недостатки алгоритма. 2.1.4 LZ78. 2.2 Алгоритм Лемпеля — Зива — Велча (LZW). 2.2.1 Алгоритм. 2.2.2 Применение. 2.2.3 Пример. 2.2.4 Кодирование. 2.2.5 Декодирование. 2.2.6 Патенты. 2.2.7 Unisys, GIF и PNG. 2.3 Локально адаптивный алгоритм сжатия. 2.4 Сжатие данных с использованием преобразования Барроуза-Вилера. 2.5 Метод Шеннона-Фано. 2.6 Статический алгоритм Хаффмана. 3. Методы компрессии данных для изображений. 3.1 Алгоритм фрактального сжатия. 3.2 Сжатие с использованием вейвлет. 3.3 JPEG. 4. Архиваторы. ЗАКЛЮЧЕНИЕ СПИСОК ЛИТЕРАТУРЫ

stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

Embed Size (px)

Citation preview

Page 1: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Компрессия (сжатие) данных, техника и типы.1.1 Краткий обзор понятий.1.2 Алгоритмы сжатия текстов/файлов неизвестного формата.1.3 Сжатие данных с потерями.

1.3.1 Типы сжатия с потерями. 1.3.2 Примеры сжатия данных с потерями.

1.4 Сжатие данных без потерь. 1.4.1 Техника сжатия без потерь. 1.4.2 Методы сжатия без потерь.

2. Методы сжатия (компрессии данных).2.1 Алгоритм Зива-Лемпеля (LZ*).

2.1.1 Принцип скользящего окна.2.1.2 Механизм кодирования совпадений.2.1.3 Недостатки алгоритма.2.1.4 LZ78.

2.2 Алгоритм Лемпеля — Зива — Велча (LZW).2.2.1 Алгоритм.2.2.2 Применение.2.2.3 Пример.2.2.4 Кодирование.2.2.5 Декодирование.2.2.6 Патенты.2.2.7 Unisys, GIF и PNG.

2.3 Локально адаптивный алгоритм сжатия.2.4 Сжатие данных с использованием преобразования Барроуза-Вилера.2.5 Метод Шеннона-Фано.2.6 Статический алгоритм Хаффмана.

3. Методы компрессии данных для изображений.3.1 Алгоритм фрактального сжатия.3.2 Сжатие с использованием вейвлет.3.3 JPEG.

4. Архиваторы.

ЗАКЛЮЧЕНИЕСПИСОК ЛИТЕРАТУРЫ

Page 2: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

ВВЕДЕНИЕ

Сжатие информации является одним из самых интересных и динамически развивающихся направлений современной науки - теории информации. Вопросы сжатия данных достаточно остро стоят в различных областях науки и техники, везде, где требуется хранение и передача информации. Во-первых, это связано со все еще достаточно высокой стоимостью носителей информации (магнитные и оптические диски, ПЗУ, ОЗУ и т.д.), во-вторых, с необходимостью передачи больших потоков информации по перегруженным линиям связи (радио- и оптическая связь, телефония, сети). Кроме того, сжатие данных неразрывно связано с криптографией и защитой информации от случайного и преднамеренного воздействия. Естественно, универсального алгоритма сжатия данных не существует и для каждой конкретной задачи имеется свой наиболее эффективный метод. Более того, применение нерационально выбранного алгоритма может привести к противоположному результату увеличения потока информации. Иными словами, всегда можно найти такой набор данных, для которого выбранный способ сжатия окажется неэффективным.

Проблема сжатия информации была, есть и всегда будет актуальной. При известных современных методах, чем больше эффективность сжатия - больше задержка (наилучший результат можно получить, например, используя сжатие всего фильма, чем кадра или тем более строки). В каждом конкретном случае выбирается то или иное компромиссное решение. При работе в реальном масштабе времени, где в процессе обмена участвует человек, задержки более секунды вызывают раздражение, и приходится ограничиваться сравнительно скромными коэффициентами сжатия.

В данной работе рассматриваются существующие на сегодняшний день методы компрессии данных.

1. Компрессия (сжатие) данных.

Page 3: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

1.1 Краткий обзор понятий.

Сжатие данных — процедура перекодирования данных, производимая с целью уменьшения их объёма. Применяется для более рационального использования устройств хранения и передачи данных.

Сжатие бывает без потерь (когда возможно восстановление исходных данных без искажений) или с потерями (восстановление возможно с незначительными искажениями). Сжатие без потерь используется при обработке компьютерных программ и данных. Сжатие с потерями обычно применяется для сокращения объёма звуковой, фото- и видеоинформации, оно значительно эффективнее сжатия без потерь.

Сжатие основано на устранении избыточности информации, содержащейся в исходных данных. Примером избыточности является повторение в тексте фрагментов (например, слов естественного или машинного языка). Подобная избыточность обычно устраняется заменой повторяющейся последовательности более коротким значением (кодом). Другой вид избыточности связан с тем, что некоторые значения в сжимаемых данных встречаются чаще других, при этом возможно заменять часто встречающиеся данные более короткими кодами, а редкие — более длинными (вероятностное сжатие). Сжатие данных, не обладающих свойством избыточности (например, случайный сигнал или шум), невозможно. Также, обычно невозможно сжатие зашифрованной информации.

1.2 Алгоритмы сжатия текстов/файлов неизвестного формата.Имеется 2 основных подхода к сжатию файлов неизвестного формата.На каждом шаге алгоритма сжатия либо следующий символ помещается как есть (с

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

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

1.3 Сжатие данных с потерями. Сжатие данных с потерями — это метод сжатия данных, когда распакованный файл

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

1.3.1 Типы сжатия с потерями. Существуют две основных схемы сжатия с потерями:1) В трансформирующих кодеках берутся фреймы изображений или звука, разрезаются

на небольшие сегменты, трансформируются в новое базисное пространство и производится квантизация. Результат затем сжимается энтропийными методами.

2) В предсказывающих кодеках предыдущие и/или последующие данные используются для того, чтобы предсказать текущий фрейм изображения или звука. Ошибка между предсказанными данными и реальными вместе с добавочной информацией, необходимой для производства предсказания, затем квантизуется и кодируется.

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

1.3.2 Примеры сжатия данных с потерями.1) Компрессия изображений:

● Метод главных компонент

Page 4: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

● Фрактальное сжатие ● JPEG ● Вэйвлетная компрессия

● JPEG 2000 ● DjVu

2) Компрессия видео:

● Flash (также поддерживает движущиеся изображения JPEG) ● H.261 ● H.263 ● H.264/MPEG-4 AVC ● MNG (поддерживает движущиеся изображения JPEG) ● Motion JPEG ● MPEG-1 Part 2 ● MPEG-2 Part 2 ● MPEG-4 Part 2 ● Ogg Theora (отличается отсутствием патентных ограничений) ● Sorenson video codec ● VC-1 — попытка Microsoft выпустить открытую спецификацию для формата WMV

3) Компрессия звука:

Музыка● MP3 — Определён спецификацией MPEG-1 ● Ogg Vorbis (отличается отсутствием патентных ограничений и более высоким качеством[1]) ● AAC, AAC+ — существует в нескольких вариантах, определённых спецификациями MPEG-2 и MPEG-4, используется, например, в Apple Computer ● eAAC+ — формат, предлагаемый Sony, как альтернатива AAC и AAC+ ● Musepack ● WMA — собственность Microsoft ● ADPCM ● ATRAC ● Dolby AC-3 ● DTS ● MP2 ● VQF

4) Речь

● CELP ● G.711 ● G.726 ● HILN ● Speex (отличается отсутствием патентных ограничений)

1.4 Сжатие данных без потерь. Сжатие без потерь (англ. Lossless data compression) — метод сжатия информации, при

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

Page 5: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

Сжатие данных без потерь используется во многих приложениях. Например, оно используется в популярном файловом формате ZIP и Unix-утилите Gzip. Оно также используется как компонент в сжатии с потерями.

Сжатие без потерь используется, когда важна идентичность сжатых данных оригиналу. Обычный пример — исполняемые файлы и исходный код. Некоторые графические файловые форматы, такие как PNG или GIF, используют только сжатие без потерь; тогда как другие (TIFF, MNG) могут использовать сжатие как с потерями, так и без.

1.4.1 Техника сжатия без потерь. Методы сжатия без потерь могут быть распределены по типу данных, для которых они были созданы. Три основных типа данных для алгоритма сжатия данных это текст, изображения и звук. В принципе, любой многоцелевой алгоритм сжатия данных без потерь (многоцелевой означает, что он может обрабатывать любой тип бинарных данных) может использоваться для любого типа данных, но большинство из них неэффективны для каждого основного типа. Звуковые данные, например, не могут быть хорошо сжаты алгоритмом сжатия текста.

Большинство программ сжатия без потерь использует два различных типа алгоритмов: один генерирует статистическую модель для входящих данных, другой отображает входящие данные в битовом представлении, используя модель для получения «вероятностных» (то есть часто встречаемых) данных, которые используются чаще, чем «невероятностные». Часто, только проработанные алгоритмы получают название, тогда как последние разработки только подразумевают (общее использование, стандартизацию и т. д.) или вообще не указаны.

Статистические модели алгоритмов для текста (или текстовых бинарных данных, таких как исполняемые файлы) включают:● Преобразование Барроуза — Уилера (блочно-сортирующая пре-обработка, которая делает сжатие более эффективным) ● LZ77 и LZ78 (используется DEFLATE) ● LZW Алгоритмы кодирования через генерирование битовых последовательностей:● Алгоритм Хаффмана (также используется DEFLATE) ● Арифметическое кодирование

1.4.2 Методы сжатия без потерь.

1) Многоцелевые:

● Кодирование длин серий — простая схема, дающая хорошее сжатие данных, которые содержат много повторяющихся значений ● LZW — используется в gif и во многих других ● Deflate — используется в gzip, усовершенствованной версии zip и как часть процесса сжатия PNG

2) Сжатие аудио:

● Apple Lossless — ALAC (Apple Lossless Audio Codec) ● Audio Lossless Coding — также известен как MPEG-4 ALS ● Direct Stream Transfer — DST ● Dolby TrueHD ● DTS-HD Master Audio ● Free Lossless Audio Codec — FLAC ● Meridian Lossless Packing — MLP ● Monkey's Audio — Monkey’s Audio APE ● OptimFROG ● RealPlayer — RealAudio Lossless ● Shorten — SHN ● TTA — True Audio Lossless ● WavPack — WavPack lossless ● WMA Lossless — Windows Media Lossless

3) Сжатие графики:

● ABO — Adaptive Binary Optimization ● GIF — (без потерь, но содержащий очень небольшое число цветов) ● JBIG2 — (с потерями или без Ч/Б изображений) ● JPEG-LS — (стандарт сжатия без потерь/почти без потерь)

Page 6: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

● JPEG 2000 — (включает сжатие без потерь; также, испытан Sunil Kumar, профессором университета штата Сан-Диего) ● PGF — Progressive Graphics File (сжатие с/без потерь) ● PNG — Portable Network Graphics ● Qbit Lossless Codec — фокусируется на intra-frame («одна картинка») сжатии без потерь ● TIFF ● WMPhoto — (включая метод сжатия без потерь)

4) Сжатие видео:

● Animation codec ● CamStudio Video Codec ● CorePNG ● FFV1 ● H.264/MPEG-4 AVC ● Huffyuv ● Lagarith ● LCL ● MSU Lossless Video Codec ● Qbit Lossless Codec ● SheerVideo ● TSCC — TechSmith Screen Capture Codec

Примеры алгоритмов:

● Семейство алгоритмов Лемпеля-Зива ● RLE (Run-length encoding — Кодирование длин серий)

Примеры форматов и их реализаций:

● универсальные — Zip, 7-Zip, RAR, GZip, PAQ и др. ● звук — FLAC (Free Lossless Audio Codec), Monkey’s Audio (APE), TTA (True Audio), TTE, LA (LosslessAudio), RealAudio Lossless, WavPack и др. ● изображения — BMP, GIF, PNG видео — Huffyuv.

2. Методы сжатия (компрессии данных).Целью архивации файлов является экономия места на жестком или гибком магнитном

диске. Существует большое число программ-архиваторов, имеются и специальные системные программные средства типа Stacker или Doublespace и т.д., решающие эту проблему.

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

Page 7: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

Сжатие информации без потерь осуществляется статистическим кодированием или на основе предварительно созданного словаря. Статистические алгоритмы (напр., схема кодирования Хафмана) присваивают каждому входному символу определенный код. При этом наиболее часто используемому символу присваивается наиболее короткий код, а наиболее редкому - более длинный. Таблицы кодирования создаются заранее и имеют ограниченный размер. Этот алгоритм обеспечивает наибольшее быстродействие и наименьшие задержки. Для получения высоких коэффициентов сжатия статистический метод требует больших объемов памяти.

Альтернативой статистическому алгоритму является схема сжатия, основанная на динамически изменяемом словаре (напр., алгоритмы Лембеля-Зива). Данный метод предполагает замену потока символов кодами, записанными в памяти в виде словаря (таблица перекодировки). Соотношение между символами и кодами меняется вместе с изменением данных. Таблицы кодирования периодически меняются, что делает метод более гибким. Размер небольших словарей лежит в пределах 2-32 килобайт, но более высоких коэффициентов сжатия можно достичь при заметно больших словарях до 400 килобайт.

Реализация алгоритма возможна в двух режимах: непрерывном и пакетном. Первый использует для создания и поддержки словаря непрерывный поток символов. При этом возможен многопротокольный режим (например, TCP/IP и DECnet). Словари сжатия и декомпрессии должны изменяться синхронно, а канал должен быть достаточно надежен (напр., X.25 или PPP), что гарантирует отсутствие искажения словаря при повреждении или потере пакета. При искажении одного из словарей оба ликвидируются и должны быть созданы вновь.

Пакетный режим сжатия также использует поток символов для создания и поддержания словаря, но поток здесь ограничен одним пакетом и по этой причине синхронизация словарей ограничена границами кадра. Для пакетного режима достаточно иметь словарь объемом, порядка 4 Кбайт. Непрерывный режим обеспечивает лучшие коэффициенты сжатия, но задержка получения информации (сумма времен сжатия и декомпрессии) при этом больше, чем в пакетном режиме.

При передаче пакетов иногда применяется сжатие заголовков, например, алгоритм Ван Якобсона (RFC-1144). Этот алгоритм используется при скоростях передачи менее 64 Kбит/с. При этом достижимо повышение пропускной способности на 50% для скорости передачи 4800 бит/с. Сжатие заголовков зависит от типа протокола. При передаче больших пакетов на сверх высоких скоростях по региональным сетям используются специальные канальные алгоритмы, независящие от рабочих протоколов. Канальные методы сжатия информации не могут использоваться для сетей, базирующихся на пакетной технологии, SMDS (Switched Multi-megabit Data Service), ATM, X.25 и Frame Relay. Канальные методы сжатия дают хорошие результаты при соединении по схеме точка-точка, а при использовании маршрутизаторов возникают проблемы - ведь нужно выполнять процедуры сжатия/декомпрессии в каждом маршрутизаторе, что заметно увеличивает суммарное время доставки информации. Возникает и проблема совместимости маршрутизаторов, которая может быть устранена процедурой идентификации при у становлении виртуального канала.

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

Если при работе с пакетами заголовки оставлять неизмененными, а сжимать только информационные поля, ограничение на использование стандартных маршрутизаторов может быть снято. Пакеты будут доставляться конечному адресату, и только там будет выполняться процедура декомпрессии. Такая схема сжатия данных приемлема для сетей X.25, SMDS, Frame Relay и ATM. Маршрутизаторы корпорации CISCO поддерживают практически все режимы сжатия/декомпрессии информации, перечисленные выше.

Сжатие информации является актуальной задачей, как при ее хранении, так и при пересылке. Сначала рассмотрим вариант алгоритма Зива-Лемпеля.

2.1 Алгоритм Зива-Лемпеля (LZ*).В 1977 году Абрахам Лемпель и Якоб Зив предложили алгоритм сжатия данных,

названный позднее LZ77. Этот алгоритм используется в программах архивирования текстов compress , lha , pkzip и arj . Можно сказать, что алгоритмы семейства LZ* представляют собой более сложное обобщение простого и интуитивного способа сжатия данных, используемого в RLE. Для понимания данного алгоритма необходимо разобраться с двумя его составляющими: принципом скользящего окна и механизмом кодирования совпадений.

Page 8: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

2.1.1 Принцип скользящего окна.Метод кодирования согласно принципу скользящего окна учитывает уже ранее

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

Благодаря этому принципу алгоритмы LZ* иногда называются методами сжатия с использованием скользящего окна. Скользящее окно можно представить в виде буфера (или более сложной динамической структуры данных), который организован так, чтобы запоминать «сказанную» ранее информацию и предоставлять к ней доступ. Таким образом, сам процесс сжимающего кодирования согласно LZ77 напоминает написание программы, команды которой позволяют обращаться к элементам «скользящего окна», и вместо значений сжимаемой последовательности вставлять ссылки на эти значения в «скользящем окне». Размер скользящего окна может динамически изменяться и составлять 2 КБ, 4 КБ или 32 КБ. Следует также отметить, что размер окна кодировщика может быть менее или равен размеру окна декодировщика, но не наоборот.

Приведенное выше сравнение процесса кодирования с «программированием» может натолкнуть на преждевременный вывод о том, что алгоритм LZ77 относится к методам контекстного моделирования. Поэтому следует отметить, что алгоритм LZ77 принято классифицировать как метод словарного сжатия данных, когда вместо понятия «скользящего окна» используется термин «динамического словаря».

2.1.2 Механизм кодирования совпадений.Перед тем, как перейти к рассмотрению механизма кодирования, уточним понятие

совпадения (от англ. match). Рассмотрим последовательность из N элементов. Если все элементы последовательности уникальны, то такая последовательность не будет содержать ни одного повторяющегося элемента, или, иначе говоря, в последовательности не найдется хотя бы двух равных друг другу или совпадающих элементов.

В стандартном алгоритме LZ77 совпадения кодируются парой:● длина совпадения (match length) ● смещение (offset) (или дистанция (distance)) В продолжение уже приведенной аналогии с программированием отметим, что в

большинстве статей, посвященных алгоритму LZ77, кодируемая пара трактуется именно как команда копирования символов из скользящего окна с определенной позиции, или дословно как: «Вернуться в буфере символов на значение смещения и скопировать значение длины символов, начиная с текущей позиции».

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

Пример с командой копирования не совсем очевиден: «Вернуться на 1 символ назад в буфере и скопировать 7 символов, начиная с текущей позиции». Каким образом можно скопировать 7 символов из буфера, когда в настоящий момент в буфере находится только 1 символ? Однако следующая интерпретация кодирующей пары может прояснить ситуацию: каждые 7 последующих символов совпадают (эквивалентны) с 1 символом перед ними. Это означает, что каждый символ можно однозначно определить, переместившись назад в буфере — даже если данный символ еще отсутствует в буфере на момент декодирования текущей пары длина-смещение. Такая кодируемая пара будет представлять собой многократное (определяемое значением смещения) повторение последовательности (определяемой значением длины) символов, что представляет собой более общую форму RLE.

2.1.3 Недостатки алгоритма.● невозможность кодирования подстрок, отстоящих друг от друга на расстоянии,

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

2.1.4 LZ78.

В отличие от LZ77, работающего с уже полученными данными, LZ78 ориентируется на данные, которые только будут получены (LZ78 не использует "скользящее" окно, он хранит словарь из уже просмотренных фраз). Алгоритм считывает символы сообщения до тех пор, пока

Page 9: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

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

2.2 Алгоритм Лемпеля — Зива — Велча (LZW).

Алгори́тм Ле́мпеля — Зи́ва — Ве́лча (Lempel-Ziv-Welch, LZW) — это универсальный алгоритм сжатия данных без потерь, созданный Абрахамом Лемпелем (Abraham Lempel), Якобом Зивом (Jacob Ziv) и Терри Велчем (Terry Welch). Он был опубликован Велчем в 1984 году, в качестве улучшенной реализации алгоритма LZ78, опубликованного Лемпелем и Зивом в 1978 году. Алгоритм разработан так, чтобы его можно было быстро реализовать, но он не обязательно оптимален, поскольку он не проводит никакого анализа входных данных.

Акроним «LZW» указывает на фамилии изобретателей алгоритма: Лемпель, Зив и Велч, но многие утверждают, что, поскольку патент принадлежал Зиву, то метод должен называться алгоритмом Зива — Лемпеля — Велча.

Данный алгоритм при сжатии (кодировании) динамически создаёт таблицу преобразования строк: определённым последовательностям символов (словам) ставятся в соответствие группы бит фиксированной длины (обычно 12-битные). Таблица инициализируется всеми 1-символьными строками (в случае 8-битных символов — это 256 записей). По мере кодирования, алгоритм просматривает текст символ за символом, и сохраняет каждую новую, уникальную 2-символьную строку в таблицу в виде пары код/символ, где код ссылается на соответствующий первый символ. После того как новая 2-символьная строка сохранена в таблице, на выход передаётся код первого символа. Когда на входе читается очередной символ, для него по таблице находится уже встречавшаяся строка максимальной длины, после чего в таблице сохраняется код этой строки со следующим символом на входе; на выход выдаётся код этой строки, а следующий символ используется в качестве начала следующей строки.

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

2.2.1 Алгоритм.

1) Инициализация словаря всеми возможными односимвольными фразами. Инициализация входной фразы w первым символом сообщения.

2) Считать очередной символ K из кодируемого сообщения. 3) Если КОНЕЦ_СООБЩЕНИЯ, то выдать код для w, иначе КонецЕсли фраза wK уже есть в словаре, то присвоить входной фразе значение wK и перейти к

Шагу 2, иначе выдать код w, добавить wK в словарь, присвоить входной фразе значение K и перейти к Шагу 2.

2.2.2 Применение.На момент своего появления алгоритм LZW давал лучший коэффициэнт сжатия, для

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

Алгоритм был реализован в программе compress, которая стала более-менее стандартной утилитой Unix-систем приблизительно в 1986 году. Несколько других популярных утилит-архиваторов также используют этот метод или близкие к нему.

В 1987 году алгоритм стал частью стандарта на формат изображений GIF. Он также может (опционально) использоваться в формате TIFF.

В настоящее время, реализация алгоритма содержится в программе Adobe Acrobat.

2.2.3 Пример.Данный пример показывает алгоритм LZW в действии, показывая состояние выходных

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

TOBEORNOTTOBEORTOBEORNOT#

Page 10: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

Маркер # используется для обозначения конца сообщения. Тем самым, в нашем алфавите 27 символов (26 заглавных букв и #). Компьютер представляет это в виде групп бит, для представления каждого символа алфавита нам достаточно группы из 5-ти бит на символ. По мере роста словаря, размер групп должен расти, с тем чтобы учесть новые элементы. 5-битные группы дают 25 = 32 возможных комбинации бит, поэтому, когда в словаре появится 33-е слово, алгоритм должен перейти к 6-битным группам. Заметим, что, поскольку используется группа из всех нолей 00000, то 33-я группа имеет код 32. Начальный словарь будет содержать:

# = 00000A = 00001B = 00010C = 00011...Z = 11010

2.2.4 Кодирование.Без использования алгоритма LZW, при передаче сообщения как оно есть — 25 символов

по 5 бит на каждый — оно займёт 125 бит. Сравним это с тем, что получается при использовании LZW:

Символ: Битовый код: Новая запись словаря: (на выходе)

T 20 = 10100O 15 = 01111 28: TOB 2 = 00010 29: OBE 5 = 00101 30: BEO 15 = 01111 31: EOR 18 = 010010 32: OR <--- начинаем использовать 6-битные группыN 14 = 001110 33: RNO 15 = 001111 34: NOT 20 = 010100 35: OTTO 28 = 011100 36: TTBE 30 = 011110 37: TOBOR 32 = 100000 38: BEOTOB 37 = 100101 39: ORT

Page 11: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

EO 31 = 011111 40: TOBERN 33 = 100001 41: EOROT 35 = 100011 42: RNO# 0 = 000000 43: OT#

Общая длина = 5*5 + 12*6 = 97 бит.

Таким образом, используя LZW мы сократили сообщение на 28 бит из 125 — это почти 22%. Если сообщение будет длиннее, то элементы словаря будут представлять всё более и более длинные части текста, благодаря чему повторяющиеся слова будут представлены очень компактно.

2.2.5 Декодирование.Теперь представим что мы получили закодированное сообщение, приведённое выше, и

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

Данные: На выходе: Новая запись: Полная: Частичная:10100 = 20 T 28: T?01111 = 15 O 28: TO 29: O?00010 = 2 B 29: OB 30: B?00101 = 5 E 30: BE 31: E?01111 = 15 O 31: EO 32: O? <--- начинаем использовать 6-битные группы010010 = 18 R 32: OR 33: R?001110 = 14 N 33: RN 34: N?001111 = 15 O 34: NO 35: O?010100 = 20 T 35: OT 36: T?011100 = 28 TO 36: TT 37: TO? <--- для 36, добавляем только первый элемент011110 = 30 BE 37: TOB 38: BE? следующего слова словаря100000 = 32 OR 38: BEO 39: OR?100101 = 37 TOB 39: ORT 40: TOB?011111 = 31 EO 40: TOBE 41: EO?100001 = 33 RN 41: EOR 42: RN?100011 = 35 OT 42: RNO 43: OT?000000 = 0 #

Единственная небольшая трудность может возникнуть, если новое слово словаря пересылается немедленно. В приведённом выше примере декодирования, когда декодер встречает первый символ, T, он знает, что слово 28 начинается с T, но чем оно заканчивается? Проиллюстрируем проблему следующим примером.

Мы декодируем сообщение ABABA:

Данные: На выходе: Новая запись: Полная: Частичная:...011101 = 29 AB 46: (word) 47: AB?101111 = 47 AB? <--- что нам с этим делать?

На первый взгляд, для декодера это неразрешимая ситуация. Мы знаем наперёд, что словом 47 должно быть ABA, но как декодер узнает об этом? Заметим, что слово 47 состоит из слова 29 плюс символ идущий следующим. Таким образом, слово 47 заканчивается на «символ идущий следующим». Но, поскольку это слово посылается немедленно, то оно должно начинаться с «символа идущего следующим», и поэтому оно заканчивается тем же символом что и начинается, в данном случае — A. Этот трюк позволяет декодеру определить, что слово 47 это ABA.

В общем случае, такая ситуация появляется, когда кодируется последовательность вида cScSc, где c — это один символ, а S — строка, причём слово cS уже есть в словаре.

2.2.6 Патенты.

Page 12: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

На алгоритм LZW и его вариации был выдан ряд патентов, как в США, так и в других странах. На LZ78 был выдан американский патент U.S. Patent 4,464,650   (англ.), принадлежащий Sperry Corporation, позднее ставшей частью Unisys Corporation. На LZW в США были выданы два патента: U.S. Patent 4,814,746   (англ.), принадлежащий IBM, и патент Велча U.S. Patent 4,558,302   (англ.) (выдан 20 июня 1983 года), принадлежащий Sperry Corporation, позднее перешедший к Unisys Corporation. К настоящему времени, сроки всех патентов истекли.

2.2.7 Unisys, GIF и PNG.При разработке формата GIF в CompuServe не знали о существовании патента U.S. Patent

4,558,302   (англ.) . В декабре 1994 года, когда в Unisys стало известно об использовании LZW в широко используемом графическом формате, эта компания распространила информацию о своих планах по взысканию лицензионных отчислений с коммерческих программ, имеющих возможность по созданию GIF-файлов. В то время формат был уже настолько широко распространён, что большинство компаний-производителей ПО не имели другого выхода кроме как заплатить. Эта ситуация стала одной из причин разработки графического формата PNG (неофициальная расшифровка: «PNG's Not GIF»), ставшего третьим по распространённости в WWW, после GIF и JPEG. В конце августа 1999 года Unisys прервала действие безвозмездных лицензий на LZW для бесплатного и некоммерческого ПО, а также для пользователей нелицензированных программ, призвав League for Programming Freedom развернуть кампанию «сожжём все GIF'ы» и информировать публику об имеющихся альтернативах. Многие эксперты в области авторского права отмечали, что патент не распространяется на устройства, которые могут лишь расжимать LZW-данные, но не сжимать их; по этой причине, популярная утилита gzip может читать .Z-файлы, но не записывать их.

20 июня 2003 года истёк срок оригинального американского патента, что означает, что Unisys не может больше собирать по нему лицензионные отчисления. Аналогичные патенты в Европе, Японии и Канаде истекли в 2004 году.

2.3 Локально адаптивный алгоритм сжатия.

Этот алгоритм используется для кодирования (L,I), где L строка длиной N, а I – индекс. Это кодирование содержит в себе несколько этапов.

1. Сначала кодируется каждый символ L с использованием локально адаптивного алгоритма для каждого из символов индивидуально. Определяется вектор целых чисел R[0],…,R[N-1], который представляет собой коды для символов L[0],…,L[N-1]. Инициализируется список символов Y, который содержит в себе каждый символ из алфавита Х только один раз. Для каждого i = 0,…,N-1 устанавливается R[i] равным числу символов, предшествующих символу L[i] из списка Y. Взяв Y = [‘a’,’b’,’c’,’r’] в качестве исходного и L = ‘caraab’, вычисляем вектор R: (2 1 3 1 0 3).

2. Применяем алгоритм Хафмана или другой аналогичный алгоритм сжатия к элементам R, рассматривая каждый элемент в качестве объекта для сжатия. В результате получается код OUT и индекс I.

Рассмотрим процедуру декодирования полученного сжатого текста (OUT,I). Здесь на основе (OUT,I) необходимо вычислить (L,I). Предполагается, что список Y

известен.

1. Сначала вычисляется вектор R, содержащий N чисел: (2 1 3 1 0 3).2. Далее вычисляется строка L, содержащая N символов, что дает значения R[0],

…,R[N-1]. Если необходимо, инициализируется список Y, содержащий символы алфавита X (как и при процедуре кодирования). Для каждого i = 0,…,N-1 последовательно устанавливается значение L[i], равное символу в положении R[i] из списка Y (нумеруется, начиная с 0), затем символ сдвигается к началу Y. Результирующая строка L представляет собой последнюю колонку матрицы M. Результатом работы алгоритма будет (L,I). Взяв Y = [‘a’,’b’,’c’,’r’] вычисляем строку L = ‘caraab’.

Page 13: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

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

Для того чтобы сжать строку S, сначала сформируем строку S’, которая является объединением S c EOF, новым символом, который не встречается в S. После этого используется стандартный алгоритм к строке S’. Так как EOF отличается от прочих символов в S, суффиксы S’ сортируются в том же порядке, как и вращения S’. Это может быть сделано путем построения дерева суффиксов, которое может быть затем обойдено в лексикографическом порядке для сортировки суффиксов. Для этой цели может быть использован алгоритм формирования дерева суффиксов Мак-Крейгта. Его быстродействие составляет 40% от наиболее быстрой методики в случае работы с текстами. Алгоритм работы с деревом суффиксов требует более четырех слов на каждый исходный символ. Манбер и Майерс предложили простой алгоритм сортировки суффиксов строки. Этот алгоритм требует только двух слов на каждый входной символ. Алгоритм работает сначала с первыми i символами суффикса а за тем, используя положения суффиксов в сортируемом массиве, производит сортировку для первых 2i символов. К сожалению этот алгоритм работает заметно медленнее.

В работе [1] предложен несколько лучший алгоритм сортировки суффиксов. В этом алгоритме сортируются суффиксы строки S, которая содержит N символов S[0,…,N-1].

1. Пусть k число символов, соответствующих машинному слову. Образуем строку S’ из S путем добавления k символов EOF в строку S. Предполагается, что EOF не встречается в строке S.

2. Инициализируем массив W из N слов W[0,…,N-1] так, что W[i] содержат символы S’[i,…,i+k-1] упорядоченные таким образом, что целочисленное сравнение слов согласуется с лексикографическим сравнением для k-символьных строк. Упаковка символов в слова имеет два преимущества: это позволяет для двух префиксов сравнить сразу k байт и отбросить многие случаи, описанные ниже.

3. Инициализируется массив V из N целых чисел. Если элемент V содержит j, он представляет собой суффикс S’, чей первый символ равен S’[j]. Когда выполнение алгоритма завершено, суффикс V[i] будет i-ым суффиксом в лексикографическом порядке.

4. Инициализируем целочисленный массив V так, что для каждого i = 0,…,N-1 : V[i]=i.5. Сортируем элементы V, используя первые два символа каждого суффикса в

качестве ключа сортировки. Далее для каждого символа ch из алфавита выполняем шаги 6 и 7. Когда эти итерации завершены, V представляет собой отсортированные суффиксы S и работа алгоритма завершается.

6. Для каждого символа ch’ в алфавите выполняем сортировку элементов V, начинающихся с ch, за которым следует ch’. В процессе выполнения сортировки сравниваем элементы V путем сопоставления суффиксов, которые они представляют при индексировании массива W. На каждом шаге рекурсии следует отслеживать число символов, которые оказались равными в группе, чтобы не сравнивать их снова. Все суффиксы, начинающиеся с ch, отсортированы в рамках V.

7. Для каждого элемента V[i], соответствующего суффиксу, начинающемуся с ch (то есть, для которого S[V[i]] = ch), установить W[V[i]] значение с ch в старших битах и i в младших битах. Новое значение W[V[i]] сортируется в те же позиции, что и старые значения.

Данный алгоритм может быть улучшен различными способами. Одним из самоочевидных методов является выбор символа ch на этапе 5, начиная с наименьшего общего символа в S и предшествующий наиболее общему.

2.4 Сжатие данных с использованием преобразования Барроуза-Вилера.

Майкл Барроуз и Давид Вилер (Burrows-Wheeler) в 1994 году предложили свой алгоритм преобразования (BWT). Этот алгоритм работает с блоками данных и обеспечивает эффективное сжатие без потери информации. В результате преобразования блок данных имеет ту же длину, но другой порядок расположения символов. Алгоритм тем эффективнее, чем больший блок данных преобразуется (например, 256-512 Кбайт).

Последовательность S, содержащая N символов ({S(0),… S(N-1)}), подвергается N циклическим сдвигам (вращениям), лексикографической сортировке, а последний символ при каждом вращении извлекается. Из этих символов формируется строка L, где i-ый символ является последним символом i-го вращения. Кроме строки L создается индекс I исходной строки S в упорядоченном списке вращений. Существует эффективный алгоритм восстановления исходной последовательности символов S на основе строки L и индекса I. Процедура сортировки объединяет результаты вращений с идентичными начальными

Page 14: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

символами. Предполагается, что символы в S соответствуют алфавиту, содержащему K символов.

Для пояснения работы алгоритма возьмем последовательность S= “abraca” (N=6), алфавит X = {‘a','b','c','r'}.

1. Формируем матрицу из N*N элементов, чьи строки представляют собой результаты циклического сдвига (вращений) исходной последовательности S, отсортированных лексикографически. По крайней мере одна из строк M содержит исходную последовательность S. Пусть I является индексом строки S. В приведенном примере индекс I=1, а матрица M имеет вид:

Номер строки 0 aabrac 1 abraca 2 acaabr 3 bracaa 4 caabra 5 racaab

2. Пусть строка L представляет собой последнюю колонку матрицы M с символами L[0],…,L[N-1] (соответствуют M[0,N-1],…,M[N-1,N-1]). Формируем строку последних символов вращений. Окончательный результат характеризуется (L,I). В данном примере L='caraab', I =1.

Процедура декомпрессии использует L и I. Целью этой процедуры является получение исходной последовательности из N символов (S).

1. Сначала вычисляем первую колонку матрицы M (F). Это делается путем сортировки символов строки L. Каждая колонка исходной матрицы M представляет собой перестановки исходной последовательности S. Таким образом, первая колонка F и L являются перестановками S. Так как строки в M упорядочены, размещение символов в F также упорядочено. F='aaabcr'.

2. Рассматриваем ряды матрицы M, которые начинаются с заданного символа ch. Строки матрицы М упорядочены лексикографически, поэтому строки, начинающиеся с ch упорядочены аналогичным образом. Определим матрицу M', которая получается из строк матрицы M путем циклического сдвига на один символ вправо. Для каждого i=0,…, N-1 и каждого j=0,…,N-1,

M'[i,j] = m[i,(j-1) mod N] В рассмотренном примере M и M' имеют вид:

Строка M M' 0 aabrac caabra

1 abraca aabraс 2 acaabr racaab 3 bracaa abraca 4 caabra acaabr 5 racaab bracaa

Подобно M каждая строка M' является вращением S, и для каждой строки M существует соответствующая строка M'. M' получена из M так, что строки M' упорядочены лексикографически, начиная со второго символа. Таким образом, если мы рассмотрим только те строки M', которые начинаются с заданного символа ch, они должны следовать упорядоченным образом с учетом второго символа. Следовательно, для любого заданного символа ch, строки M, которые начинаются с ch, появляются в том же порядке что и в M', начинающиеся с ch. В нашем примере это видно на примере строк, начинающихся с ‘a'. Строки ‘aabrac', ‘abraca' и ‘acaabr' имеют номера 0, 1 и 2 в M и 1, 3, 4 в M'.

Используя F и L, первые колонки M и M' мы вычислим вектор Т, который указывает на соответствие между строками двух матриц, с учетом того, что для каждого j = 0,…,N-1 строки j M' соответствуют строкам T[j] M.

Page 15: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

Если L[j] является к-ым появлением ch в L, тогда T[j]=1, где F[i] является к-ым появлением ch в F. Заметьте, что Т представляет соответствие один в один между элементами F и элементами L, а F[T[j]] = L[j]. В нашем примере T равно: (4 0 5 1 2 3).

3. Теперь для каждого i = 0,…, N-1 символы L[i] и F[i] являются соответственно последними и первыми символами строки i матрицы M. Так как каждая строка является вращением S, символ L[i] является циклическим предшественником символа F[i] в S. Из Т мы имеем F[T[j]] = L[j]. Подставляя i =T[j], мы получаем символ L[T(j)], который циклически предшествует символу L[j] в S.

Индекс I указывает на строку М, где записана строка S. Таким образом, последний символ S равен L[I]. Мы используем вектор T для получения предшественников каждого символа: для каждого i = 0,…,N-1 S[N-1-i] = L[T i [I]], где T 0 [x] =x, а T i+1 [x] = T[T i [x]. Эта процедура позволяет восстановить первоначальную последовательность символов S (‘abraca').

Последовательность T i [I] для i =0,…,N-1 не обязательно является перестановкой чисел 0,…,N-1. Если исходная последовательность S является формой Z p для некоторой подстановки Z и для некоторого p>1, тогда последовательность T i [I] для i = 0,…,N-1 будет также формой Z 'p для некоторой субпоследовательности Z'. Таким образом, если S = ‘cancan', Z = ‘can' и p=2, последовательность T i [I] для i = 0,…,N-1 будет [2,4,0,2,4,0].

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

Возьмем в качестве примера букву “t” в слове ‘the' и предположим, что исходная последовательность содержит много таких слов. Когда список вращений упорядочен, все вращения, начинающиеся с ‘he', будут взаимно упорядочены. Один отрезок строки L будет содержать непропорционально большое число ‘t', перемешанных с другими символами, которые могут предшествовать ‘he', такими как пробел, ‘s', ‘T' и ‘S'.

Аналогичные аргументы могут быть использованы для всех символов всех слов, таким образом, любая область строки L будет содержать большое число некоторых символов. В результате вероятность того, что символ ‘ch' встретится в данной точке L, весьма велика, если ch встречается вблизи этой точки L, и мала в противоположном случае. Это свойство способствует эффективной работе локально адаптивных алгоритмов сжатия, где кодируется относительное положение идентичных символов. В случае применения к строке L, такой кодировщик будет выдавать малые числа, которые могут способствовать эффективной работе последующего кодирования, например, посредством алгоритма Хафмана.

2.5 Метод Шеннона-Фано.Данный метод выделяется своей простотой. Берутся исходные сообщения m(i) и их

вероятности появления P(m(i)). Этот список делится на две группы с примерно равной интегральной вероятностью. Каждому сообщению из группы 1 присваивается 0 в качестве первой цифры кода. Сообщениям из второй группы ставятся в соответствие коды, начинающиеся с 1. Каждая из этих групп делится на две аналогичным образом и добавляется еще одна цифра кода. Процесс продолжается до тех пор, пока не будут получены группы, содержащие лишь одно сообщение. Каждому сообщению в результате будет присвоен код x c длиной –lg(P(x)). Это справедливо, если возможно деление на подгруппы с совершенно равной суммарной вероятностью. Если же это невозможно, некоторые коды будут иметь длину –lg(P(x))+1. Алгоритм Шеннона-Фано не гарантирует оптимального кодирования.

2.6 Статический алгоритм Хаффмана.Статический алгоритм Хаффмана можно считать классическим. Определение

статический в данном случае относится к используемым словарям. Пусть сообщения m(1),…,m(n) имеют вероятности P(m(1)),… P(m(n)) и пусть для

определенности они упорядочены так, что P(m(1)) і P(m(2)) і … і P(m(N)). Пусть x1,…, xn – совокупность двоичных кодов и пусть l1, l2,…, lN – длины этих кодов. Задачей алгоритма является установление соответствия между m(i) и xj. Можно показать, что для любого ансамбля сообщений с полным числом более 2 существует двоичный код, в котором два наименее вероятных кода xN и xN-1 имеют одну и ту же длину и отличаются лишь последним символом: xN имеет последний бит 1, а xN-1 – 0. Редуцированный ансамбль будет иметь свои два наименее вероятные сообщения сгруппированными вместе. После этого можно получить новый редуцированный ансамбль и так далее. Процедура может быть продолжена до тех пор, пока в

Page 16: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

очередном ансамбле не останется только два сообщения. Процедура реализации алгоритма сводится к следующему (см. рис. 1). Сначала группируются два наименее вероятные сообщения, предпоследнему сообщению ставится в соответствие код с младшим битом, равным нулю, а последнему – код с единичным младшим битом (на рисунке m(4) и m(5)). Вероятности этих двух сообщений складываются, после чего ищутся два наименее вероятные сообщения во вновь полученном ансамбле (m(3) и m`(4); p(m`(4)) = p(m(4)) + P(m(5))).

Рис. 1 Пример реализации алгоритма Хаффмана.

На следующем шаге наименее вероятными сообщениями окажутся m(1) и m(2). Кодовые слова на полученном дереве считываются справа налево. Алгоритм выдает оптимальный код (минимальная избыточность).

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

Возможно применение стандартных алфавитов (кодовых таблиц) для пересылки английского, русского, французского и т.д. текстов, программных текстов на С++, Паскале и т.д. Кодирование при этом не будет оптимальным, но исключается статистическая обработка пересылаемых фрагментов и отпадает необходимость пересылки кодовых таблиц.

3. Методы компрессии данных для изображений.

Растровые изображения представляют собой двумерный массив чисел - пикселей, а изображения можно подразделить на две группы: с палитрой и без нее. У первых в пикселе хранится число - индекс в некотором одномерном векторе цветов, называемом палитрой (из 16 и 256 цветов). 

Изображения без палитры бывают в какой-либо системе цветопредставления и в градациях серого. При использовании некой системы цветопредставления каждый пиксель является структурой, полями которой являются компоненты цвета (например, RGB и CMYK). 

На заре компьютерной эры для сжатия графики применялись традиционные алгоритмы, рассмотренные выше. С появлением новых типов изображений эти алгоритмы утратили эффективность. Многие изображения практически не сжимались, хотя обладали явной избыточностью. Тогда и появились алгоритмы с потерей информации. Как правило, в них можно задавать коэффициент сжатия (т. е. степень потерь качества). 

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

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

3.1 Алгоритм фрактального сжатия.Фрактальное сжатие изображений - это алгоритм сжатия изображений c потерями,

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

Page 17: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

объектов, что недоступно для других алгоритмов сжатия изображений в принципе. Из-за сложной ситуации с патентованием широкого распространения алгоритм не получил.

Суть фрактального сжатия.Основа метода фрактального кодирования — это обнаружение самоподобных участков в

изображении. Впервые возможность применения теории систем итерируемых функций (IFS) к проблеме сжатия изображения была исследована Майклом Барнсли (Michael Barnsley) и Аланом Слоуном (Alan Sloan). Они запатентовали свою идею в 1990 и 1991 гг (патент США номер 5,065,447). Джеквин (Jacquin) представил метод фрактального кодирования, в котором используются системы доменных и ранговых блоков изображения (domain and range subimage blocks), блоков квадратной формы, покрывающих все изображение. Этот подход стал основой для большинства методов фрактального кодирования, применяемых сегодня. Он был усовершенствован Ювалом Фишером (Yuval Fisher) и рядом других исследователей.

В соответствии с данным методом изображение разбивается на множество неперекрывающихся ранговых подизображений (range subimages) и определяется множество перекрывающихся доменных подизображений (domain subimages). Для каждого рангового блока алгоритм кодирования находит наиболее подходящий доменный блок и аффинное преобразование, которое переводит этот доменный блок в данный ранговый блок. Структура изображения отображается в систему ранговых блоков, доменных блоков и преобразований.

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

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

На данный момент известно достаточно большое количество алгоритмов оптимизации перебора, возникающего при фрактальном сжатии, поскольку большинство статей, исследовавших алгоритм были посвящены этой проблеме, и во время активных исследований (1992-1996 года) выходило до 300 статей в год. Наиболее эффективными оказались два направления исследований: метод выделения особенностей (feature extraction) и метод классификации доменов (classification of domains).

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

США и других. Например, U.S. Patents 4,941,193, 5,065,447, 5,384,867, 5,416,856 и 5,430,812. Эти патенты покрывают широкий спектр возможных изменений фрактального сжатия и серьёзно сдерживают его развитие.

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

3.2 Сжатие с использованием вейвлет.Вейвлетное сжатие — общее название класса методов кодирования изображений,

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

Существенную роль в алгоритмах вейвлетной компрессии играет концепция представления результатов вейвлет-разложения в виде нуль-дерева (zero-tree).

Упорядоченные в нуль-дереве битовые плоскости коэффициентов вейвлет-разложения огрубляются и кодируются далее с использованием алгоритмов сжатия без потерь.

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

значительно (до двух раз) повысить степень сжатия чёрно-белых и цветных изображений при сравнимом визуальном качестве по отношению к алгоритмам предыдущего поколения, основанным на дискретном косинусном преобразовании, таких, например, как JPEG.

Для работы с дискретными изображениями используется вариант вейвлет-преобразования, известный как алгоритм Малла, названный в честь его изобретателя Стефана Малла (фр. Stephane Mallat). Исходное изображение раскладывается на две составляющие — высокочастотные детали (состоящие в основном из резких перепадов яркости), и сглаженную уменьшенную версию оригинала. Это достигается применением пары фильтров, причём каждая из полученных составляющих вдвое меньше исходного изображения. Как правило, используются фильтры с конечным импульсным откликом, в которых пикселы, попавшие в небольшое «окно», умножаются на заданный набор коэффициентов, полученные значения

Page 18: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

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

Поскольку изображения двумерны, фильтрация производится и по вертикали, и по горизонтали. Этот процесс повторяется многократно, причём каждый раз в качестве входа используется сглаженная версия с предыдущего шага. Так как изображения «деталей» состоят обычно из набора резких границ, и содержат обширные участки где интенсивность близка к нулю. Если допустимо пренебречь некоторым количеством мелких деталей, то все эти значения можно просто обнулить. В результате получается версия исходного изображения, хорошо поддающаяся сжатию. Для восстановления оригинала снова применяется алгоритм Малла, но с парой фильтров, обратной к исходным.

Алгоритмы JPEG и MPEG, в отличие от вейвлетного, сжимают по отдельности каждый блок исходного изображения размером 8 на 8 пикселов. В результате, за счёт потери данных при сжатии, на восстановленном изображении может быть заметна блочная структура. При вейвлетном сжатии такой проблемы не возникает, но могут появляться искажения другого типа, имеющие вид «призрачной» ряби вблизи резких границ. Считается, что такие артефакты в среднем меньше бросаются в глаза наблюдателю, чем "квадратики", создаваемые JPEG.

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

ФБР ввело стандарт на вейвлетное сжатие изображений отпечатков пальцев. Впрочем, свобода выбора фильтров может оказаться очень полезной в задаче сжатия: алгоритмы, основанные на принципе «наилучшего базиса», подбирают оптимальный фильтр для отдельных участков изображения, а алгоритмы, использующие вейвлет — пакеты, достигают эффективного представления деталей, варьируя глубину фильтрации на разных участках.

Сжатие видеопоследовательностей.Ещё одна проблема состоит в том, как эффективно использовать схожесть

последовательных кадров при сжатии видео. В ранних алгоритмах, таких как Motion JPEG, этот фактор игнорировался, и кадры сжимались индивидуально. MPEG использует алгоритм сравнения блоков, который старается выделить участки, изменившиеся при смене кадра. Блоки же, которые не изменились, можно не сохранять. При третьем подходе, удобном для вейвлетного сжатия, время рассматривается как третье измерение массива данных, к которому применяется алгоритм Малла. Отсутствие перемещений проявляется в обнулении соответствующих деталей по временному направлению. Эксперименты показывают, что этот метод даёт хорошие результаты, хотя и требует больших вычислений.

Наконец, надо заметить, что вейвлет-преобразование само по себе ничего не сжимает. Оно лишь осуществляет препроцессинг изображения, после которого эффективность обычных методов сжатия резко возрастает, причём даже при использовании универсальных алгоритмов и программ (таких, как LZW и pkzip), не адаптированных к конкретной задаче. Впрочем, использование методов кодирования, учитывающих структуру вейвлет — преобразования, может существенно повысить степень сжатия. Один из широко используемых методов такого типа — метод нуль-дерева (англ. zero-tree compression). Он основан на предположении, что если некоторая область изображения не содержит нетривиальной информации на некотором уровне разрешения, то с большой вероятностью она не будет информативной и на более тонком уровне разрешения. Вейвлет — преобразование изображения можно хранить в виде дерева, корнем которого является сильно сглаженная версия оригинала, а ветви, представляющие отдельные блоки, обрываются на том уровне, где дальнейшая обработка не даёт заметного уточнения. Такое дерево можно с успехом сжать обычными методами типа хаффмановского или арифметического кодирования, которые используются почти во всех алгоритмах сжатия.

Реализации.Наиболее известный алгоритм вейвлетной компрессии - JPEG-2000. Вейвлетная

компрессия используется также при кодировании в формат DjVu. Существует также множество нестандартизированных алгоритмов кодирования изображений и видео-последовательностей основанных на вейвлетной компрессии и предназначенных для специализированного применения.

Примеры вейвлетной компрессии:● JPEG 2000 ● Windows Media Photo ● Tarkin ● SPIHT ● MrSID ● Dirac ● Snow ● Pixlet ● ECW

Page 19: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

● StreamLogic

3.3 JPEG.

JPEG (англ. Joint Photographic Experts Group — русск. Объединенная группа экспертов в области фотографии) — является широкоиспользуемым методом сжатия фотоизображений. Формат файла, который содержит сжатые данные обычно также называют именем JPEG; наиболее распространённые расширения для таких файлов .jpeg, .jfif, .jpg, .JPG, или .JPE. Однако из них .jpg самое популярное расширение на всех платформах.

Алгоритм JPEG является алгоритмом сжатия с потерей качества.Область применения.Формат является форматом сжатия с потерями, поэтому некорректно считать что JPEG

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

При сохранении JPEG-файла можно указать степень сжатия, которую обычно задают в некоторых условных единицах, например, от 1 до 100 или от 1 до 10. Меньшее число соответствует лучшему качеству, но при этом увеличивается размер файла. Обыкновенно, разница в качестве между 90 и 100 на глаз уже практически не воспринимается. Следует помнить, что побитно восстановленное изображение всегда отличается от оригинала.

Сжатие.При сжатии изображение переводится в цветовую систему YCbCr. Далее каналы

изображения Cb и Cr, отвечающие за цвет, уменьшаются в 2 раза (по линейному масштабу). Уже на этом этапе необходимо хранить только четверть информации о цвете изображения.

Реже используется уменьшение цветовой информации в 4 раза или сохранение размеров цветовых каналов как есть. Количество программ, которые поддерживают сохранение в таком виде, относительно невелико.

Далее цветовые каналы изображения, включая черно-белый канал Y, разбиваются на блоки 8 на 8 пикселей. Каждый блок подвергается дискретному косинусному преобразованию. Полученные коэффициенты подвергаются квантованию и упаковываются с помощью кодов Хаффмана (см. Алгоритм Хаффмана).

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

Варианты хранения.Progressive JPEG — такой способ записи сжатого изображения в файл, при котором

старшие (низкочастотные) коэффициенты находятся в начале файла. Это позволяет получить уменьшенное изображение при загрузке лишь небольшой части файла и повышать детализацию изображения по мере загрузки оставшейся части. Поэтому Progressive JPEG получил широкое распространение в Internet. В целом алгоритм основан на дискретном косинусоидальном преобразовании (ДКП), которое является разновидностью дискретного преобразования Фурье, применяемом к матрице изображения для получения некоторой новой матрицы коэффициентов. Для получения исходного изображения применяется обратное преобразование. ДКП раскладывает изображение по амплитудам некоторых частот. Таким образом, при преобразовании мы получаем матрицу, в которой многие коэффициенты либо близки, либо равны нулю. Кроме того, благодаря несовершенству человеческого зрения, можно аппроксимировать коэффициенты более грубо без заметной потери качества изображения. Для этого используется квантование коэффициентов. В самом простом случае – это арифметический побитовый сдвиг вправо. При этом преобразовании теряется часть информации, но могут достигаться большие коэффициенты сжатия.

Процесс сжатия по схеме JPEG включает ряд этапов: – преобразование изображения в оптимальное цветовое пространство; – субдискретизация компонентов цветности усреднением групп пикселей; – применение дискретных косинусных преобразований для уменьшения избыточности данных изображения; – квантование каждого блока коэффициентов ДКП с применением весовых функций, оптимизированных с учетом визуального восприятия человеком; – кодирование результирующих коэффициентов (данных изображения) с применением алгоритма группового кодирования и алгоритма Хаффмана для удаления избыточности информации.

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

о себе блочная структура данных, изображение «дробится на квадратики». Этот эффект

Page 20: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

особенно заметен на областях с низкой пространственной частотой (плавные переходы изображения, например, чистое небо). В областях с высокой пространственной частотой (например, контрастные границы изображения), возникают характерные «артефакты» — иррегулярная структура пикселей искаженного цвета и/или яркости. Кроме того, из изображения пропадают мелкие цветные детали.

Однако, несмотря на недостатки, JPEG получил очень широкое распространение из-за высокой степени сжатия, относительно существующих во время его появления альтернатив.

Существует также еще один метод компрессии - Метод Главных Компонент (англ. Principal Components Analysis, PCA) - один из основных способов уменьшить размерность данных, потеряв наименьшее количество информации. Изобретен К. Пирсоном (англ. Karl Pearson) в 1901 г. Применяется во многих областях, таких как распознавание образов, компьютерное зрение, сжатие данных и т. п. Вычисление главных компонент сводится к вычислению собственных векторов и собственных значений ковариационной матрицы исходных данных. Иногда метод главных компонент называют преобразованием Кархунена-Лоэва (англ. Karhunen-Loeve) или преобразованием Хотеллинга (англ. Hotelling transform). Другие способы уменьшения размерности данных — это метод независимых компонент, многомерное шкалирование, а также многочисленные нелинейные обобщения: метод главных кривых и многообразий, нейросетевые методы «узкого горла», самоорганизующиеся карты Кохонена и др.

4. Архиваторы.

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

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

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

Многие популярные архивные форматы (ZIP, LZH, ARJ, ARC, ICE) появились во времена DOS. Сегодня же, в эпоху Windows, из этих старожилов остались только ZIP, ARJ и LZH. В то же время появился новый кроссплатформенный формат JAR (Java ARchive), который был создан для пересылки многокомпонентных Java-апплетов. Еще один формат - CAB от Microsoft применяется для архивирования дистрибутивов ПО. 

Во многих случаях удачным решением проблемы совместимости является создание архивов в виде самораспаковывающихся программ (EXE-файлов). Правда, многие программы-архиваторы способны создавать EXE-архивы лишь на базе своего "родного" формата, что не всегда удобно (невозможно без специальных инструментов выборочно извлекать файлы из архива). 

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

1) WinZip 8

Page 21: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

Условно-бесплатная программа от Nico Mak Computing, содержащая все необходимые инструменты для работы с архивами.

Утилита WinZip 8 содержит встроенные средства для манипулирования архивами и упакованными файлами популярных архивных форматов. Кроме того, WinZip 8 поддерживает распространенные в Internet форматы сжатия: TAR, GZIP, UUencode, XXencode, BinHex и MIME, а ARJ-, LZH- и ARC-файлы обрабатываются посредством внешних программ. Имеется функция парольной защиты и создания многотомных архивов. Бесплатная утилита WinZip Internet Browser Support позволяет просматривать архивы в Microsoft Internet Explorer и Netscape Navigator. 

В WinZip 8 включена интеграция с Windows: можно перетаскивать файлы в/из Проводника, архивировать и распаковывать файлы, не выходя из него. 

WinZip Wizard упрощает архивацию и разархивацию программ, распространяемых в виде Zip-файлов. Режим WinZip Wizard рассчитан на начинающих. 

Для создания самораспаковывающихся файлов можно воспользоваться WinZip Self-Extractor Personal Edition, входящей теперь в состав WinZip 8. 

2) UltimateZip 2.0

Бесплатный архиватор с множеством удобно реализованных функций для работы с архивами. 

Хотя архиватор UltimateZip 2.0 можно отнести к "середнякам" по времени сжатия/распаковки, тем не менее, достаточно развитые дополнительные функции (сильно напоминающие WinZip) позволили ему занять второе месте в тесте. 

Так же, как и WinZip 8, эта программа поддерживает распространенные в Internet форматы сжатия UUencode и XXencode, а также популярные UNIX-форматы архивирования каталогов и сжатия файлов (GZ, Z, TAR). 

UltimateZip 2.0 интегрируется в Windows 9x/Me/NT/2000 и поддерживает механизм перетаскивания, что позволяет работать с архивами без открытия ее окна. 

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

UltimateZip 2.0 поддерживает шифрование архивов, создание многотомных и самораспаковывающихся архивов, обеспечивает их комментирование, тестирование и восстановление. 

3) WinRAR 2.8

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

Разработанная российским программистом Евгением Рошалем программа WinRAR 2.8 позволяет работать с ZIP-архивами, но основным форматом для нее является формат RAR. В ней можно создавать самораспаковывающиеся EXE-архивы, а также использовать внешние программы для работы с архивами типа ARJ, LZH и CAB. Многотомные архивы доступны лишь в формате RAR. 

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

В режиме мультимедиа-сжатия WinRar пытается использовать дополнительный алгоритм для улучшения сжатия оцифрованного звука или полноцветных изображений в формате BMP. В этом случае может быть достигнута на 30 % более высокая степень сжатия, чем при обычном методе упаковки. 

Использование метода непрерывного архивирования может на 10-50 % увеличить степень сжатия, особенно если упаковывается значительное количество небольших файлов однотипного содержания. 

Все современные Windows-архиваторы обеспечивают практически одинаковое качество сжатия. В этом нет ничего удивительного - все они построены на одних математических алгоритмах. Поэтому основная "борьба" развернулась за лучшее время сжатия и распаковки, а также дополнительные возможности, облегчающие работу пользователя с архивами.  

Наилучшие общие результаты показала программа WinZip 8, подтвердив звание самого популярного архиватора. Она обеспечивает наименьшее время сжатия и предоставляет широкий спектр дополнительных функций. 

Page 22: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

ЗАКЛЮЧЕНИЕ

Первые теоретические разработки в области сжатия информации относятся к концу 40-х годов. В конце семидесятых появились работы Шеннона, Фано и Хафмана. К этому времени относится и создание алгоритма FGK (Faller, Gallager, Knuth), где используется идея "сродства", а получатель и отправитель динамически меняют дерево кодов.

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

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

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

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

Page 23: stk.ucoz.orgstk.ucoz.org/_fr/0/8778348.docx  · Web viewСОДЕРЖАНИЕ. ВВЕДЕНИЕ. 1. Компрессия (сжатие) данных, техника и типы. 1.1

СПИСОК ЛИТЕРАТУРЫ

1. Р. Галлагер. Теория информации и надежная связь. Советское радио, Москва, 1974.

2. Д. Ватолин, А. Ратушняк, М. Смирнов, В. Юкин. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. Диалог-МИФИ, 2002 г., 384 стр.

3. Васильев А. Сжатие изображений: вчера, сегодня, завтра // Hard‘n’Soft, № 4/2001.

4. Семёнов Ю.А. Телекоммуникационные технологии (ГНЦ ИТЭФ, book.itep.ru).

Internet:

1. http://www.citforum.ru/2. http://www.compression.ru/3. http://www.maximumcompression.com/4. http://ru.wikipedia.org/