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

1 / Salmon_sjatie_dannyh_izobrajeniy_i_zvuka[torrents.ru]

.pdf
Скачиваний:
24
Добавлен:
05.06.2015
Размер:
7.92 Mб
Скачать

Предисловие автора

в 1829 году Луи Брайль (Louis Braille), молодой органист одного парижского собора, который потерял зрение в раннем детстве в возрасте трех лет, изобрел знаменитый шрифт для слепых. Этот шрифт, названный его именем, широко распространился по всему миру, позволяя слепым людям читать и писать. Брайль слегка усо­ вершенствовал свои коды в 1834 году. Было eni;e несколько незначи­ тельных изменений, однако осталось неизменным основное начер­ тание символов или букв, каждая из которых представлена в виде блока точек 3 x 2 . Эти точки выдавливаются на листе плотной бу­ маги, причем каждая может быть поднята вверх или опуп];ена, что означает, она присутствует или отсутствует. Таким образом, ка­ ждая точка эквивалентна одному биту информации. В результате, шрифт Брайля (см. рис.1) представляет собой шестибитовый код, с помощью которого можно представить ровно 64 символа (блок, в котором все точки опуш;ены, обозначает пустой символ или пробел).

A B C D E F G H I

J K L M

. . ф . . . . « . • • • • • • • • •

• • • •

• •

 

••

••

••

N O P Q R S T U V W X Y Z

•• •• •• •• •• •• •• •• •• •• •• •• ••

•• •• •• •• •• •• •• •• •• •• •• •• ••

•• •• •• •• •• •• •• •• •• •• •• •• ••

Рис. 1. Алфавит Брайля.

Последователи Брайля расширили возможности его шрифта не­ сколькими путями. Прежде всего они ввели сокращения. Некото­ рые отдельно стоящие буквы стали обозначать целые слова. Напри­ мер, отдельно стоящая буква «Ь» (или со знаком препинания) обо­ значает слово «but» (мы будем вести речь об английском вариан­ те шрифта Брайля). Одиночная буква «е» означает «every», а буква «р» - «people».

Другим полезным правилом стало использование сокращенных форм некоторых часто используемых слов, то есть, комбинации двух и более символов стали обозначать целые слова. Например, «аЬ» означает «about», «rev» - «receive», а буквосочетание «(the)nivs» - это

Предисловие автора

«themselves». (Символы «the» в круглых скобках тоже имеют свой специальный код, в котором подняты точки 2-3-4-6.) На рис. 2 по­ казаны некоторые специальные коды и соответствующие им слова или части слов.

ING

not

and

for

of

the

with

ch

gh

sh

th

• •

••

••

••

••

••

••

••

•.

••

••

 

••

••

••

•'

••

 

•.

••

••

Рис. 2. Некоторые сокращения и короткие слова.

Луи Брайль родился 4 января 1809 года в городе Купврэ недалеко от Пари­

Немного о Луи Браиле

жа. Несчастный случай лишил его зрения в возрасте 3 лет и сделал слепым на всю жизнь. Когда Луи исполнилось 10 лет, родители послали его в парижскую школу для слепых, где он учился читать с помош?>ю специального рельефно-точечного шрифта. Этот шрифт был изобретен Шарлем Барбье для использования в ар­ мии. Он назывался «ночное письмо». С его помощью офицеры и солдаты могли обмениваться сообщениями в темноте. В основе шрифта ночного письма лежали блоки из 12 точек, две точки в длину и шесть точек в высоту. Каждая точка или комбинация выпуклых точек в одном блоке обозначала букву или фонетический звук. В таком представлении, однако, имелось одно существенное неудобство, замедлявшее чтение сообщений: было невозможно прощупать весь блок точек за одно быстрое касание пальцем.

Брайль, потратив 9 лет (а ведь он был слепым!) на развитие и усовершен­ ствование ночного письма, разработал свою систему выпуклых точек, которая теперь носит его имя. Главное усовершенствование кода заключалось в уменьше­ нии блока символа. Вместо матрицы б х 2 он предложил использовать матрицу 3 x 2 точек. Прежде всего это делалось для того, чтобы читающий мог легко распознать символы за одно легкое касание, быстро перемещая палец по строчке символов.

Шрифт Брайля начал вводиться в Соединенных Штатах Америки в 1860 го­ ду. С его помопц>ю стали учить незрячих детей в школе святого Луи для слепых. В 1868 году была основана британская ассоциация слепых. Позже стали образо­ вываться объединения незрячих людей в других странах. Шрифт Брайля стал применяться в Англии и в других странах. Начало развиваться книгопечатание на брайле, стали распространяться книги для слепых.

В США существует Североамериканское Общество Брайля (Braille Authori­ ty of North America, BANA) с сгдатом http://www.brailleauthority.org/index.html. Целью этой организации является продвижение шрифта Брайля, содействие в его использовании при обучении. Общество регулярно публикует стандарты и правила языка брайля и следит за правильностью его употребления.

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

Предисловие автора

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

та же идея: чем чаще встречаются

объекты в массиве сэюимаемых

данныХу тем короче сопоставляемый

им код.

Предшественницей этой книги послужила монография «Сжатие данных: полное руководство» («Data Compression: The Complete Ref­ erence»), опубликованная в 1977 году и переизданная в конце 2000 года. Быстрые и весьма благожелательные читательские отклики на это издание побудили меня к написанию этой небольшой книги. В первой книге я стремился самым подробным образом осветить как основные принципы сжатия данных, так и все детали множе­ ства специфических методов. Поэтому она вышла такой объемной. При написании новой книги я был менее амбициозен. В ней я за­ дался целью провести неискушенного читателя по полям сжатия, чтобы он ошутил чудесный аромат этих полей. Это будет сделано с помощью представления основных приемов сжатия информации, а также с помощью описания ключевых алгоритмов. В книге совсем немного математики, нет упражнений, но зато имеется множество примеров, которые помогут проиллюстрировать основные методы.

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

В главе 1 обсуждаются статистические методы сжатия (ком­ прессии) информации. В основе этих методов лежит оценка веро­ ятностей появления элементарных символов в сжимаемом массиве информации, которая определяет коды переменной длины сопостав­ ляемые этим символам. Элементарными символами могут быть би­ ты, АЗСП-коды, байты, пикселы, аудио-фрагменты или другие ком­ поненты. Главной идеей этой главы является использование кодов переменной длины, так называемых, префикс-кодов. Среди описы­ ваемых методов: кодирование Хаффмана, факсимильное сжатие и арифмети^геское кодирование.

Популярная техника словарного сжатия является предметом гла­ вы 2. Метод словарного сжатия основан на сохранении байтов и фрагментов сжимаемого файла в виде специальной структуры, на­ зываемой словарем. Для каждого нового фрагмента данных делает­ ся поиск в словаре. Если этот фрагмент находится в словаре, то в сжатый файл записывается ссылка на этот фрагмент. В этой гла-

Предисловие автора

ве описываются следующие известные алгоритмы компрессии этого типа: LZ77, LZSS, LZ78 и LZW.

Чрезвычайно важными объектами сжатия в компьютерных при­ ложениях являются всевозможные оцифрованные изображения (гра­ фики, рисунки, картинки или фотографии), которые обычно имеют большой объем. Глава 3 посвящена сжатию изображений. В основ­ ном в этой главе обсуждаются различные подходы к решению этой проблемы, такие как кодирование длинных серий, вероятность кон­ текста, предсказание пикселов и преобразование изображений. Из конкретных алгоритмов обсуждаются JPEG и JPEG-LS.

В главе 4 рассматривается преобразование вейвлетов. Этот ме­ тод становится все более важным в сжатии изображений и в ком­ прессии аудио-видео информации. Для чтения этой главы необхо­ димы некоторые математические сведения, которые для удобства читателя здесь же и излагаются. Глава начинается описанием инту­ итивной техники, основанной на вычислении среднего и разностей, которая имеет прямое отношение к вейвлетному преобразованию Хаара. Затем вводится понятие банка фильтров, которое рассмат­ ривается после дискретного преобразования вейвлетов. В конце гла­ вы излагается алгоритм компрессии SPIHT, основанный на пре­ образовании вейвлетов.

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

В последней главе, главе 6, рассматривается аудиокомпрессия. Звук является одним из «медиа» в компьютерных мультимедиа при­ ложениях. Он очень популярен среди компьютерных пользователей. Перед сохранением и использованием на компьютере звук необходи­ мо оцифровать. В результате получается исходный аудиофайл очень большого объема. В этой главе описаны основные операции, исполь­ зуемые в знаменитом методе аудиосжатия МРЗ, который, на самом деле, является звуковой частью алгоритма MPEG-1. В главе имеет-

Предисловие автора

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

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

Я зарегистрировал домен BooksByDavidSalomon.com, на кото­ ром всегда будут находиться свежие ссылки по тематике сжатия информации. Мне можно писать по адресу: david.salomon@csun.edu, также читатели могут использовать более удобный переадресуемый адрес < an2/name>@BooksByDavidSalomon.com.

Читатели, которые заинтересовались сжатием информации, мо­ гут обратиться к небольшому разделу «Сообщество сжатия данных» в конце этой книги, а также посетить сайты в интернете со следую­ щими адресами: http:/www.internz.com/compression-pointers.html и http:/www.hn.is.uec.ac.jp/~arimura/compression Jinks.html.

Northridge, California

David Salomon

Математика эт,о т,рудно.

 

Барби

Non mi legga chi поп e m.atematico.

(Пусть не читает

меня не математик.)

 

Леонардо да Винчи

Введение

Всем, кто использует компьютерные программы сжатия информа­ ции, хорошо знакомы такие слова, как «zip», «implode», «stuffit», «diet» и «squeeze». Всё это имена программ или названия методов для ком­ прессии компьютерной информации. Перевод этих слов в той или иной степени означает застегивание, уплотнение, набивку или сжа­ тие. Однако обычный, языковый смысл этих слов или их перевод не в полной мере отражают истинную природу того, что происходит с информацией в результате компрессии. На самом деле, при ком­ прессии компьютерной информации ничего не набивается и не ужи­ мается, но лишь удаляется некоторый избыток информации, при­ сутствующий в исходных данных. Избыточность - вот центральное понятие в теории сжатия информации. Любые данные с избыточной информацией можно сжать. Данные, в которых нет избыточности, сжать нельзя, точка.

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

Первый тип информации - это текст. Текст представляет со­ бой важнейший вид компьютерных данных. Огромное количество компьютерных программ и приложений являются по своей приро­ де нечисловыми; они работают с данными, у которые основными элементарными компонентами служат символы текста. Компьютер способен сохранять и обрабатывать лишь двоичную информацию, состоящую из нулей и единиц. Поэтому каждому символу текста не­ обходимо сопоставить двоичный код. Современные компьютеры ис­ пользуют так называемые коды ASCH (произносится «аски», а само

Введение

слово ASCII является сокращением от «American Standard Code for Information Interchange»), хотя все больше компьютеров и приложе­ ний используют новые коды Unicode. ASCII представляет код фик­ сированной длины, где каждому символу присваивается 8-битовая последовательность (сам код занимает семь битов, а восьмой - про­ верочный, который изначально был задуман для повышения надеж­ ности кода). Код фиксированной длины представляется наилучшим выбором, поскольку позволяет компьютерным программам легко оперировать с символами различных текстов. С другой стороны, код фиксированной длины является по суш;еству избыточным.

В случайном текстовом файле мы ожидаем, что каждый сим­ вол встречается приблизительно равное число раз. Однако файлы, используемые на практике, навряд ли являются случайными. Они содержат осмысленные тексты, и по опыту известно, что, напри­ мер, в типичном английском тексте некоторые буквы, такие, как «Е», «Т» и «А», встречаются гораздо чаще, чем «Z» и «Q». Это объяс­ няет, почему код ASCII является избыточным, а также указывает на пути устранения избыточности. ASCII избыточен прежде все­ го потому, что независимо присваивает каждому символу, часто или редко используемому, одно и то же число бит (восемь). Чтобы удалить такую избыточность, можно воспользоваться кодами пе­ ременной длины, в котором короткие коды присваиваются буквам, встречающимся чаще, а редко встречающимся буквам достаются более длинные коды. Точно так работает кодирование Хаффмана (см. § 1.4).

Представим себе два текстовых файла А и В^ содержащие один и тот же текст, причем файл А использует коды ASCII, а В запи­ сан с помощью некоторых кодов переменной длины. Мы ожидаем, что размер файла В меньше размера А. Тогда можно сказать, что файл А сэюат в файл В. Понятно, что степень сжатия зависит от избыточности взятого текста, а также от используемых кодов пере­ менной длины. Текст, в котором одни символы встречаются очень часто, а другие - очень редко, имеет большую избыточность; он бу­ дет сжиматься хорошо, если коды переменной длины выбраны под­ ходящим образом. В соответствующем файле В коды часто встреча­ ющихся символов будут короткими, а коды редких символов - длин­ ными. Длинные коды не смогут понизить степень сжатия, так как они будут встречаться в файле В достаточно редко. Большая часть В будет состоять из коротких кодов. С другой стороны, случай­ ный текстовый файл не получает преимущество при замене кодов

Введение

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

Из новостей FIDO, 23 апреля 1990

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

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

Теперь есть программа TRASH (в мусор).

TRASH сжимает файл до наименьшего возможного размера: О байт! Ничто не сожмет файл лучше, чем TRASH. Атрибуты дата/время не затрагиваются, и поскольку файл имеет нулевую длину, он совсем не займет место на вашем винчестере!

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

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

Следующая версия TRASH будет иметь графический интерфейс и прини­ мать кредитные карты.

TRASH C:\PAYROOL\*.*

... и работать с целыми дисками TRUSH D:

... и быть первой, чтобы заблокировать сбрасывание в мусор вашей системы НАРОЧНО!

TRUSH ALL

Мы даже надеемся научить нашу программу восстанавливать 3aTRASHeHные файлы!

Второй тип компьютерных данных - это оцифрованные изобра­ жения: фотографии, рисунки, картинки, графики и т.п. Цифровое изображение - это прямоугольная матрица окрашенных точек, на­ зываемых пикселами. Каждый пиксел представляется в компьюте­ ре с помощью цветового кода. (До конца этого параграфа термин «пиксел» используется только для цветового кода.) Для упрощения цифровой обработки изображений предполагается, что все пиксе­ лы имеют один и тот же размер. Размер пиксела зависит от числа цветов в изображении, которое, обычно, является степенью 2. Ес­ ли в нем содержится 2^ разных цветов, то каждый пиксел - это А;-битовое число.

Введение

Имеется два вида избыточности в цифровых изображениях. Пер­ вый вид похож на избыточность в текстовом файле. В каждом не­ случайном изображении некоторые цвета могут преобладать, а дру­ гие встречаться редко. Такая избыточность может быть удалена с помощью кодов переменной длины, присваиваемых разным пиксе­ лам, точно также как и при сжатии текстовых файлов. Другой вид избыточности гораздо более важен, он является результатом кор­ реляции пикселов. Когда наш взгляд перемещается по картинке, он обнаруживает в большинстве случаев, что соседние пикселы окра­ шены в близкие цвета. Представим себе фотографию, на которой изображено голубое небо, белые облака, коричневые горы и зеле­ ные деревья. Пока мы смотрим на горы, близкие пикселы имеют похожий цвет; все или почти все из них имеют разные оттенки ко­ ричневого цвета. Про близкие пикселы неба можно сказать, что они носят различные оттенки голубого цвета. И только на горизонте, там, где горы встречаются с небом, соседние пикселы могут иметь совершенно разные цвета. Таким образом, отдельные пикселы не являются совершенно независимыми. Можно сказать, что ближай­ шие пикселы изображения коррелируют между собой. С этим видом избыточности можно бороться разными способами. Об этом будет рассказано в главе 3.

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

Следующее простое наблюдение поясняет существо утвержде­ ния: «Сжатие данных достигается сокращением и удалением из них избыточности». Оно также дает понять, что большинство файлов невозможно сжать никакими методами. Это может показаться стран­ ным, так как мы постоянно сжимаем свои файлы. Причина заключа-

Введение

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

Пусть два разных файла А и В сжаты в файлы С и D, соответ­ ственно. Ясно, что С и D должны также отличаться друг от друга. В противном случае было бы невозможно по ним восстановить ис­ ходные файлы А и В.

Предположим, что файл состоит из п бит, и мы хотим его сжать эффективным образом. Будем приветствовать любой алгоритм, ко­ торый сожмет этот файл, скажем, в 10 бит. Компрессия в 11 или 12 бит тоже была бы замечательна. Сжатие файла до половины его раз­ мера будет для нас вполне удовлетворительным. Всего существует 2" различных файлов размера п. Их надо бы сжать в 2^ различных файлов размера не больше п/2. Однако, общее число таких файлов

равно

 

7V = 1 + 2 + 4 H

+ 2''/^ = 2^"^"/^ - 1 « 2^+''/^,

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

Для п = 100 (файл всего в 100 бит) общее число файлов рав­ но 2^^^, а число файлов, эффективно сжимаемых, равно 2^^ А их частное просто до смешного малая дробь 2~^^ 5=:^ 1.78 • 10~^^.

Для п = 1000 (файл из 1000 бит, т.е., около 125 байт) число всех файлов равно 2^^^^, а число сжимаемых всего 2^^^. Их доля просто катастрофически мала, она равна 2~'*^^ « 9.82 • 10~^^

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

Из этих примеров становится ясно, что не существует методов и алгоритмов, способных эффективно сжимать ЛЮБЫЕ файлы, или даже существенную часть их. Для того, чтобы сжать файл, алго­ ритм компрессии должен сначала изучить его, найти в нем избы­ точность, а потом попытаться удалить ее. Поскольку избыточность зависит от типа данных (текст, графика, звук и т.д.), методы ком­ прессии должны разрабатываться с учетом этого типа. Алгоритм

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