Аналого-цифровое преобразование
Преобразование информации из аналоговой формы в цифровую называют аналогово-цифровым преобразованием (АЦП).
Примеры аналоговой информации известны нам из школьного курса математики. Графики непрерывных функций выражают аналоговую информацию.
1. На рисунке показан график функции Y=X2. Это график непрерывной функции.
2. Тот же самый график после преобразования в цифровую форму выглядит иначе -- намного грубее.
3. Погрешность, которая возникает при таком преобразовании, называется погрешностью оцифровки.
4. Преобразование можно сделать менее грубым, если столбики диаграммы поставить почаще (так уменьшается дискретность).
5. Чем меньше дискретность, тем ближе цифровая информация к аналоговой и меньше погрешность оцифровки.
Вы видите, что при уменьшении дискретности на диаграмме становится больше столбиков. Если дискретность сделать очень маленькой, то точность представления непрерывной аналоговой информации в виде последовательности чисел можно сделать очень высокой, но и столбиков в диаграмме будет больше. Поэтому чем ближе цифровая информация приближается по качеству к аналоговой, тем больше вычислений приходится выполнять компьютеру, а значит, тем больше информации ему надо хранить и обрабатывать.
Чем мощнее компьютер, тем больше информации он может обработать в единицу времени. Чем быстрее компьютер обрабатывает информацию, тем выше качество изображения, лучше звук и точнее результаты расчетов, но тем дороже обходится людям прием, передача и обработка информации.
Устройства аналоговые и цифровые
Органы чувств человека так устроены, что он способен принимать, хранить и обрабатывать аналоговую информацию. Многие устройства, созданные человеком, тоже работают с аналоговой информацией.
1. Телевизор -- это аналоговое устройство. Внутри телевизора есть кинескоп. Луч кинескопа непрерывно перемещается по экрану. Чем сильнее луч, тем ярче светится точка, в которую он попадает. Изменение свечения точек происходит плавно и непрерывно.
2. Монитор компьютера тоже похож на телевизор, но это устройство цифровое. В нем яркость луча изменяется не плавно, а скачком (дискретно). Луч либо есть, либо его нет. Если он есть, мы видим яркую точку (белую или цветную). Если луча нет, мы видим черную точку. Поэтому изображения на экране монитора получаются более четкими, чем на экране телевизора.
3. Проигрыватель грампластинок -- аналоговое устройство. Чем больше высота неровностей на звуковой дорожке, тем громче звучит звук.
4. Телефон -- тоже аналоговое устройство. Чем громче мы говорим в трубку, тем выше сила тока, проходящего по проводам, тем громче звук, который слышит наш собеседник.
К цифровым устройствам относятся персональные компьютеры -- они работают с информацией, представленной в цифровой форме. Цифровыми также являются музыкальные проигрыватели лазерных компакт-дисков, поэтому музыкальные компакт-диски можно воспроизводить на компьютере.
Уже создана цифровая телефонная связь, цифровые видеокамеры, фотоаппараты, цифровое телевидение.. После того как телевидение столо цифровым, качество изображения на экране телевизора намного улучшилось -- оно стало ближе к качеству изображения на экране компьютерного монитора.
Свойства информации
Основные свойства информации:
Объективность – не зависит от чего-либо мнения
Достоверность – отражает истинное положение дел
Полнота – достаточна для понимания и принятия решения
Актуальность – важна и существенна для настоящего времени
Ценность (полезность, значимость)- обеспечивает решение поставленной задачи, нужна для того чтобы принимать правильные решения
Понятность (ясность)– выражена на языке, доступном получателю
Кроме этого информация обладает еще следующими свойствами:
1) Атрибутивные свойства (атрибут – неотъемлемая часть чего-либо). Важнейшими среди них являются:- дискретность (информация состоит из отдельных частей, знаков) и непрерывность (возможность накапливать информацию)
2) Динамические свойства связаны с изменением информации во времени:
- копирование – размножение информации
- передача от источника к потребителю
- перевод с одного языка на другой
- перенос на другой носитель
- старение (физическое – носителя, моральное – ценностное)
3) Практические свойства - информационный объем и плотность
Информация храниться, передается и обрабатывается в символьной (знаковой) форме. Одна и та же информация может быть представлена в различной форме:1) Знаковой письменной, состоящей из различных знаков среди которых выделяют символьную в виде текста, чисел, спец. символов; графическую; табличную и тд.; 2) В виде жестов или сигналов; 3) В устной словесной форме (разговор). Представление информации осуществляется с помощью языков, как знаковых систем, которые строятся на основе определенного алфавита и имеют правила для выполнения операций над знаками.
Емкость канала связи
Скорость передачи информации, а ее предельно допустимое значение для данного канала называют емкостью канала, относится к фундаментальным понятиям теории связи, она служит одной из главных характеристик канала передачи информации. Оценка скорости передачи информации и предельных возможностей канала связи представляет большой практический и теоретический интерес. Рассматривая процесс передачи информации в общих чертах, можно предположить, что основными факторами, ограничивающими скорость передачи информации, являются полоса пропускания F и уровень помех. Существует фундаментальная теорема о выборках, которая доказывает, что сигнал, не содержащий в своем спектре частот выше значения F, может представляться 2F независимыми значениями в секунду, а совокупность значений, отстоящих друг от друга на Т секунд, определяет непрерывный сигнал полностью. Заметим, что выборкой является отсчет амплитуды сигнала в определенный момент (на рис. 6.12, а можно увидеть эти выборки, проводимые через интервал 1/2 F). *S(t)
ii)i j і і і і *.
Рис. 6.12. Представление непрерывного сигнала в виде дискретных отсчетов (выборок), взятых через интервал 1/2F (а) и квантованных по амплитуде (б)
+І г* 1/2F t б а о Термин выборки происходит от английского слова sample (в переводе — образец, модель, проба), теорему о выборках называют также теоремой отсчетов. Эта теорема позволяет на интервале Т заменить непрерывный сигнал с ограниченным спектром последовательностью его дискретных значений, причем их нужно не бесконечное число, а вполне определенное, равное 2FT. Уровень шумов (помех) не позволяет точно определить амплитуду сигнала и в этом смысле вносит некоторую неопределенность в значение отсчетов сигнала. Максимально возможная скорость передачи информации по каналу связи при фиксированный ограничениях называется емкостью канала, обозначается буквой С и имеет размерность бит/с. Рассмотрим соотношение для емкости канала связи, являющееся фундаментальным соотношением в теории связи. Оно позволяет понять некоторые принципиальные зависимости при передаче информации вообще. Напомним, что количество информации /, снимающее неопределенность о состоянии объекта с L равновероятными состояниями, рассчитывается по формуле J = log/. Основание логарифма здесь не имеет значения. Если основание равно 2, то единицей измерения количества информации оказывается бит. Определим количество различных сообщений, которое можно составить из п элементов, принимающих любые из т различных фиксированных состояний. Из ансамбля п элементов, каждый из которых может находиться в одном из т фиксированных состояний, можно составить т " различных комбинаций, т. е. L = тп. Тогда: I = log тп = п log т. При полосе F наибольшее число отсчетов сигнала равно 2F в единицу времени или 2/Т за время Т, т. е. п = 2FT. Если бы шума не существовало, то число дискретных уровней сигнала было бы бесконечным. В случае наличия шума последний определяет степень различимости отдельных уровней амплитуды сигнала. Так как мощность является усредненной характеристикой амплитуды, число различимых уровней сигнала по мощности равно (Рс + Рш)/ Рш, а по амплитуде соответственно т- ¦\J( PC +рш )! рт gt; ще Рс — мощность сигнала; Ли— мощность шума. Тогда емкость канала рассчитывается по формуле
Итак, емкость канала ограничивается двумя величинами: шириной полосы канала и шумом. Приведенное соотношение известно как формула Хартли — Шеннона и считается основной в теории информации. Полоса частот и мощность сигнала входят в формулу таким образом, что да я С — const при сужении полосы необходимо увеличивать мощность сигнала, и наоборот. Емкость канала является максимальной величиной скорости. Чтобы достигнуть такой скорости передачи, информация должна быть закодирована наиболее эффективным образом. Утверждение, что такое кодирование возможно, является важнейшим результатом созданной К.Э. Шенноном теории информации. Шеннон доказал принципиальную возможность существования такого эффективного кодирования, не определив, однако, конкретный путей его реализации. (Отметим, что на практике инженеры часто говорят о емкости канала, подразумевая под этим реальную, а не потенциальную скорость передачи.) Эффективность систем связи характеризуется параметром, равным скорости передачи информации R на единицу ширины полосы F, т. е. R/F. Для иллюстрации существующих возможностей по созданию эффективных систем связи на рис. 6.13 приведе -
Рис. 6.13. Кривые зависимости эффективности цифровых систем связи при различных модуляциях:
1 — граница Шеннона; 2 — М-ичная фазовая модуляция; 3 — М-ичная амплитудная модуляция; 4 — М-ичная частотная модуляция ны графики зависимости эффективности передачи информации при различных видах М-ичной дискретной амплитудной модуляции (AM), частотной (ЧМ) и фазовой (ФМ) (кроме бинарной модуляции используется также модуляция с 4, 8, 16 и даже с 32 положениями модулируемого параметра) от отношения энергии одного бита к спектральной плотности мощности шума (Ео / No). Для сравнения показана также граница Шеннона. Сравнение кривых показывает, в частности, что при неизменном отношении "сигнал — шум" наиболее популярный вид модуляции 4ФМ в три раза хуже потенциально достижимого. Из сравнения кривых можно сделать более общие выводы: наиболее эффективной оказывается передача с фазовой дискретной модуляцией; современные методы кодирования и модуляции еще весьма далеки от совершенства.
Способы измерения информации
На сегодняшний день известны следующие способы измерения информации: объемный, энтропийный, алгоритмический.
Объемный. Самый простой. Объем информации в сообщении – это количество символов в сообщении. Этот способ зависит от формы записи сообщения, например, число 21 можно записать следующим образом:
“двадцать один” – количество символов мах и равно12;
21 – количество символов мин и равно 2;
10101 – количество символов равно 5;
ХХi – количество символов равно 3.
Но в вычислительной технике вся хранимая и обрабатываемая информация представлена в двоичной форме (алфавит состоит из символов 0 и 1). Такая стандартизация позволила ввести две стандартные единицы измерения информации: бит и байт(8бит). И производные от них: 210 – Кбайт(Кило), 220 – Мбайт(Мега), 230 – Гбайт(Гиго), 240 – Тбайт(Тера).
Энтропийный. Принят в теории информации и кодирования. В этом способе количество информации определяется как мера устраненной неопределенности после получения сообщения. Способ исходит из следующей модели: получатель информации (сообщения) имеет определенные представления о возможных наступлениях некоторых событий. Эти представления недостоверны и выражаются вероятностями, с которыми он ожидает то или иное событие. Общая мера неопределенности (энтропия) характеризуется некоторой математической зависимостью от совокупности этих вероятностей. Количество информации в сообщении определяется тем, насколько уменьшится эта мера после получения сообщения.
Пример.
Пусть имеется колода карт, содержащая
32 различные карты. Вероятность выбора
какой-либо карты равна 1/32. Для каждой
из карт колоды эта вероятность одинакова.
Сумма равновероятных выборов равна
32 и является мерой неопределенности.
Если теперь определить количество
информации как меру устраненной
неопределенности, то и полученную в
результате выбора информацию можно
охарактеризовать числом 32. Однако
в теории информации получила использование
другая количественная оценка:
,
где m – сумма
равновероятностных выборов (для нашего
примера m = 32). Количество
информации, получаемое в результате
выбора карты из колоды, равно
Это количество характеризует число двоичных вопросов (ответы на которые имеют значения «да», «нет»). Для выбора дамы «пик» такими вопросами будут:
Вопрос |
Ответ |
1.Карта красной масти? |
Нет (0) |
2. Трефы? |
Нет(0) |
3. Одна из 4-х старших? |
Да(1) |
4. Одна из 2-х старших? |
Нет(0) |
5. Дама пик? |
Да(1) |
После пяти вопросов неопределенность устранена. Потребовалось количество информации, равное 5.
Пример2. m = 4. Пусть есть колода из 4-х карт(например, 4 туза). Выбрать карту из этой колоды. Сумма равновероятностных выборов = 4. Количество информации при выборе карты
равно
.
Это количество характеризует два
двоичных вопроса. Например, для выбора
туза буби:
Вопрос |
Ответ |
1.Карта красной масти? |
Да (1) |
2. Черви? |
Нет(0) |
Пример3.
m = 2.
.
Один вопрос уже устраняет неопределенность.
Достаточно количества информации,
равного 1. Черное – белое? Кислое –
сладкое? И т.д.
Алгоритмический метод оценки информации в сообщении. В данном методе количественная характеристика сообщения (информации) определяется сложностью программы, воспроизводящей это сообщение: компьютерная программа, воспроизводящая сообщение из одних нулей крайне проста: печатать один и тот же символ; для получения сообщения 0101…01 нужна чуть более сложная программа, печатающая символ, противоположный только что напечатанному; случайная, не обладающая никакими закономерностями, последовательность не может быть воспроизведена никакой короткой программой (длина программы близка к длине этой последовательности). Т.е. количество информации в сообщении можно определить сложностью программы, воспроизводящей это сообщение.
Т.к. имеется много разных вычислительных машин и разных языков программирования, то для определенности задаются некоторой вычислительной машиной, например, машиной Тьюринга, а количество информации в сообщении определяется как минимальное число внутренних состояний машины Тьюринга, необходимое для воспроизведения этого сообщения.
Семантическая информация
Семантическая информация - характеристика содержания, которая передаётся в некотором сообщении. При измерении семантической информации, сообщение понимается как высказывание и измеряется числом состоянии универсуума, при которых эта формула ложна. Это реализация идеи Г. В. Лейбница о том, что логически истинные предложения, верные во всех возможных мирах, не могут нести фактической информации. Ценность информации можно измерять через изменение вероятности достижения определённой цели, возникающее под воздействием данного сообщения. Семантическую информацию сообщения любой природы можно оценивать как степень изменения системы знаний адресата в результате восприятия данного сообщения. Эта мера одновременно оценивает новизну и доступность сообщения относительно данного адресата, тем самым такая трактовка семантической информации является в прагматической. Отправитель сообщения тоже получает семантическую информацию, которая характеризуется возникшим у него новым знанием о состояниях тезаурусов адресатов.
Семантическая информация - информация, содержащаяся в высказывании и передаваемая через значения единиц речи
Различные по синтаксису сигналы могут иметь одинаковую семантику. Например, сигналы «ЭВМ» и «компьютер» означают электронное устройство для преобразования информации. В этом случае обычно говорят о синонимии сигналов. С другой стороны, один сигнал (т.е., информация с одним синтаксическим свойством) может иметь разную прагматику для потребителей и разную семантику. Так, дорожный знак, известный под названием « кирпич» и имеющий вполне определенную семантику («въезд запрещен»), означает для автомобилиста запрет на въезд, а на пешехода никак не влияет. В то же время, сигнал “ключ” может иметь разную семантику: скрипичный ключ, родниковый ключ, ключ для открытия замка, ключ, используемый в информатике для кодирования сигнала с целью его защиты от несанкционированного доступа ( в этом случае говорят об омонимии сигнала). Есть сигналы - антонимы, имеющие противоположную семантику. Например, «холодный» и «горячий», «быстрый» и «медленный» и т.д.
В семантической теории информации под информацией принято понимать сведения, обладающие новизной. Возможны две ситуации. Ситуация первая - когда вам сообщают что-либо уже известное, например, что дважды два - четыре, или что после ночи наступает день. Ситуация вторая - когда вам сообщают что-либо на неизвестном вам языке, когда вы видите совершенно незнакомую математическую формулу, пусть даже имеющую богатый смысл, т.е. нечто совершенно вам непонятное. Обе ситуации можно описать при помощи выражений « известно всё» или неизвестно « ничего». Эти выражения говорят о противоположности двух описанных ситуаций. Однако у них есть и нечто общее. Этим общим является наличие всех компонентов коммуникации: источника и приёмника информации, потока информации от источника к приемнику. Однако, как в первой, так и во второй ситуации знания последнего остались без изменений, т.е. информация была передана, приёмник её получил, но обнаружить это невозможно! Если мозг приёмника не отразил никаких изменений о внешнем мире после получения сообщения, а это случилось как впервой, так и во второй ситуациях, следовательно, передачи, точнее говоря, получения информации не произошло. Таким образом, суть семантической теории информации состоит в том, что количество информации, извлекаемое человеком из сообщения, можно определить степенью изменения его знаний. Действительно, если о получении информации судить только по изменениям в знаниях, то чем больше изменений произошло в знаниях, тем больше информации было получено. Получение информации (её увеличение) одновременно означает увеличение знания, что, в свою очередь, означает уменьшение незнания или информационной неопределенности.
Неопределенность знаний о некотором событии - количество возможных результатов события.
Пылкий влюбленный, находясь в разлуке с объектом своей любви, посылает телеграмму: «Любишь?». В ответ приходит не менее лаконичная телеграмма: «Да!». Сколько информации несет ответная телеграмма? Альтернатив здесь две- либо Да, либо Нет. Их можно обозначить символами двоичного кода 1 и 0. Таким образом, ответную телеграмму можно было бы закодировать всего одним двоичным символом. Можно ли сказать, что ответная телеграмма несет одну единицу информации? Если влюбленный уверен в положительном ответе, то ответ «да» почти не даст ему никакой новой информации. То же самое относится и к безнадежно влюбленному, уже привыкшему получать отказы. Ответ “ нет” также принесет ему очень мало информации. Но внезапный отказ уверенному влюбленному ( неожиданное огорчение) или ответ « да» безнадежному влюбленному ( нечаянная радость) несет сравнительно много информации, настолько много, что радикально изменяется все дальнейшее поведение влюбленного, а, может быть, его судьба!
Таким образом, с точки зрения на информацию как на снятую неопределенность количество информации зависит от вероятности получения данного сообщения. Причём, чем больше вероятность события, тем меньше количество информации в сообщении о таком событии. Иными словами, количество информации в сообщении о каком-то событии зависит от вероятности свершения данного события.
Любая информация может рассматриваться как уменьшение неопределенности наших знаний об окружающем мире (в теории информации принято говорить именно об уменьшении неопределенности, а не об увеличении объема знаний). Математически это высказывание эквивалентно простой формуле I=H1-Н2, где I - это количество информации, a H1 и Н2 - начальная и конечная неопределенность соответственно (очевидно, что H1 Н2). Здесь, как ранее Н - энтропия. Важным частным случаем является ситуация, когда некоторое событие с несколькими возможными исходами уже произошло, а, значит, неопределенность его результата исчезла. Тогда Н2=0 и формула для информации упрощается: I=Н. Энтропия опыта равна той информации, которую мы получаем в результате его осуществления. И наоборот: информация, получаемая из опыта, может быть вычислена через его энтропию. Очевидно, что единицы измерения информации и энтропии совпадают.
Сжатие информации. Методы необратимого сжатия
Сжатие информации, компрессия, англ. data compression — алгоритмическое преобразование данных (кодирование), при котором за счет уменьшения их избыточности уменьшается их обьём.
Принципы сжатия информации
В основе любого способа сжатия информации лежит модель источника информации, или, более конкретно, модель избыточности. Иными словами для сжатия информации используются некоторые сведения о том, какого рода информация сжимается — не обладая никакими сведениями об информации нельзя сделать ровным счётом никаких предположений, какое преобразование позволит уменьшить объём сообщения. Эта информация используется в процессе сжатия и разжатия. Модель избыточности может также строиться или параметризоваться на этапе сжатия. Методы, позволяющие на основе входных данных изменять модель избыточности информации, называются адаптивными. Неадаптивными являются обычно узкоспецифичные алгоритмы, применяемые для работы с хорошо определёнными и неизменными характеристиками. Подавляющая часть же достаточно универсальных алгоритмов являются в той или иной мере адаптивными.
Любой метод сжатия информации включает в себя два преобразования обратных друг другу:
преобразование сжатия;
преобразование расжатия.
Преобразование сжатия обеспечивает получение сжатого сообщения из исходного. Разжатие же обеспечивает получение исходного сообщения (или его приближения) из сжатого.
Все методы сжатия делятся на два основных класса
без потерь,
с потерями.
Кардинальное различие между ними в том, что сжатие без потерь обеспечивает возможность точного восстановления исходного сообщения. Сжатие с потерями же позволяет получить только некоторое приближение исходного сообщения, то есть отличающееся от исходного, но в пределах некоторых заранее определённых погрешностей. Эти погрешности должны определяться другой моделью — моделью приёмника, определяющей, какие данные и с какой точностью представленные важны для получателя, а какие допустимо выбросить.
Характеристики алгоритмов сжатия и применимость
Коэффициент сжатия
Коэффициент сжатия — основная характеристика алгоритма сжатия, выражающая основное прикладное качество. Она определяется как отношение размера несжатых данных к сжатым, то есть:
k = So/Sc,
где k — коэффициент сжатия, So — размер несжатых данных, а Sc — размер сжатых. Таким образом, чем выше коэффициент сжатия, тем алгоритм лучше. Следует отметить:
если k = 1, то алгоритм не производит сжатия, то есть получает выходное сообщение размером, равным входному;
если k < 1, то алгоритм порождает при сжатии сообщение большего размера, нежели несжатое, то есть, совершает „вредную“ работу.
Ситуация с k < 1 вполне возможна при сжатии. Невозможно получить алгоритм сжатия без потерь, который при любых данных образовывал бы на выходе данные меньшей или равной длины. Обоснование этого факта заключается в том, что количество различных сообщений длиной n Шаблон:Е:бит составляет ровно 2n. Тогда количество различных сообщений с длиной меньшей или равной n (при наличии хотя бы одного сообщения меньшей длины) будет меньше 2n. Это значит, что невозможно однозначно сопоставить все исходные сообщения сжатым: либо некоторые исходные сообщения не будут иметь сжатого представления, либо нескольким исходным сообщениям будет соответствовать одно и то же сжатое, а значит их нельзя отличить.
Коэффициент сжатия может быть как постоянным коэффициентом (некоторые алгоритмы сжатия звука, изображения и т. п., например А-закон, μ-закон, ADPCM), так и переменным. Во втором случае он может быть определён либо для какого либо конкретного сообщения, либо оценён по некоторым критериям:
среднее (обычно по некоторому тестовому набора данных);
максимальное (случай наилучшего сжатия);
минимальное (случай наихудшего сжатия);
или каким либо другим. Коэффициент сжатия с потерями при этом сильно зависит от допустимой погрешности сжатия или его качества, которое обычно выступает как параметр алгоритма.
Допустимость потерь
Основным критерием различия между алгоритмами сжатия является описанное выше наличие или отсутствие потерь. В общем случае алгоритмы сжатия без потерь универсальны в том смысле, что их можно применять на данных любого типа, в то время как применение сжатия потерь должно быть обосновано. Некоторые виды данных не приемлят каких бы то ни было потерь:
символические данные, изменение которых неминуемо приводит к изменению их семантики: программы и их исходные тексты, двоичные массивы и т. п.;
жизненно важные данные, изменения в которых могут привести к критическим ошибкам: например, получаемые с медицинской измерительной техники или контрольных приборов летательных, космических аппаратов и т. п.
данные, многократно подвергаемые сжатию и расжатию: рабочие графические, звуковые, видеофайлы.
Однако сжатие с потерями позволяет добиться гораздо больших коэффициентов сжатия за счёт отбрасывания незначащей информации, которая плохо сжимается. Так, например алгоритм сжатия звука без потерь FLAC, позволяет в большинстве случаев сжать звук в 1,5—2,5 раза, в то время как алгоритм с потерями Vorbis, в зависимости от установленного параметра качетсва может сжать до 15 раз с сохранением приемлемого качества звучания.
Системные требования алгоритмов
Различные алгоритмы могут требовать различного количества ресурсов вычислительной системы, на которых исполняются:
оперативной памяти (под промежуточные данные);
постоянной памяти (под код программы и константы);
процессорного времени.
В целом, эти требования зависят от сложности и „интеллектуальности“ алгоритма. По общей тенденции, чем лучше и универсальнее алгоритм, тем большие требования с машине он предъявляет. Однако в специфических случаях простые и компактные алгоритмы могут работать лучше. Системные требования определяют их потребительские качества: чем менее требователен алгоритм, тем на более простой, а следовательно, компактной, надёжной и дешёвой системе он может работать.
Так как алгоритмы сжатия и разжатия работают в паре, то имеет значение также соотношение системных требований к ним. Нередко можно усложнив один алгоритм можно значительно упростить другой. Таким образом мы можем иметь три варианта:
Алгоритм сжатия гораздо требовательнее к ресурсам, нежели алгоритм расжатия.
Это наиболее распространённое соотношение, и оно применимо в основном в случаях, когда однократно сжатые данные будут использоваться многократно. В качетсве примера можно привести цифровые аудио и видеопроигрыватели.
Алгоритмы сжатия и расжатия имеют примерно равные требования.
Наиболее приемлемый вариант для линии связи, когда сжатие и расжатие происходит однократно на двух её концах. Например, это могут быть телефония.
Алгоритм сжатия существенно менее требователен, чем алгоритм разжатия.
Довольно экзотический случай. Может применяться в случаях, когда передатчиком является ультрапортативное устройство, где объём доступных ресурсов весьма критичен, например, космический аппарат или большая распределённая сеть датчиков, или это могут быть данные распаковка которых требуется в очень малом проценте случаев, например запись камер видеонаблюдения.
Сжатие информации с потерями — вид сжатия, в сжатом виде сохраняется не вся исходная информация, а только её приближение. Таким образом невозможно воостановить исходные данные полностью, а только «похожие» данные, отличающиеся от исходных на некоторую незначительную величину.
Сжатие с потерями применяется для информации, имеющей аналоговую природу, то есть являющейся результатом измерения некоторых реальных объектов или процессов. Чаще всего это изображение и звук.
Оглавление [Скрыть]
|
[редактировать]
Обоснование сжатия с потерями
Результаты измерений как правило несут некоторое количество несущественной для получателя информации. Это с одной стороны различные шумы, помехи, ошибки измерений. С другой стороны, это информация, которая невостребована получателем: нюансы ниже порога чувствительности получателя, данные, которые не повлияют на анализ полученной информации.
Задача сжатия с потерями &mash; отличить важную информацию от неважной, и отбросить неважную из потока. Основой для сжатия с потерями всегда является некоторая метрика отличия сжатых данных от исходных, в совокупности с порогом отсекания. Отличие от исходных данных меньше порога считаются несущественным и не кодируется.
Если приёмником информации является человек (когда это изображение или звук), то метрику определяют возможности человека по восприятию и переработке её, начиная от чувствительности органов чувств, заканчивая психическими факторами (например, наиболее тщательно рассматриваемыми объектами на изображении являются лица и надписи).
В аудио форматах файлов (например, в MP3) в качестве метрики (критерия "похожести") выступает психоакустическая модель.
[редактировать]
Технологии сжатия с потерями
[редактировать]
Спектральное преобразование
Спектральное преобразование применятеся в тех случаях, когда метрика является наиболее просто вычислимой в некотором спектральном пространстве, отличном от исходных данных. Так, например, несжатый звук, как правило, представлен в виде импульсно кодовой модуляции, психоакустическая модель же оперирует частотным спектром. Таким образом кодировать звук удобнее всего в виде спектра, который получают преобразованием Фурье, или иными подобными преобразованиями.
[редактировать]
Квантование
На этапе квантования происходит отбрасывание лишней информации из данных. Кватование начинается с разбиения всей шкалы сигналов на ограниченное количество интервалов, покрывающих всю область возможных значений, и сопоставлению каждому интервалу отдельного кода. Также каждому интервалу ставится в соответствие некоторое усреднённое значение сигнала в пределах этого интервала. Интервалы выбираются так, чтобы разница усреднённого и дествительного значения не превышала порога отсекания. Информация преобразовывается заменой действительных данных на коды интевалов.
[редактировать]
Кодирование
Квантованная информация далее, как правило подвергается энтропийному сжатию посредством тех-же алгоритмов, что применяются при сжатии информации без потерь (правда, адаптированных к характеру информации) для уменьшения избыточности квантованных данных.
Чаще всего в роли "дожимателя" выступает совершенный двоичный код переменной длины (код Хаффмана, код Голея, и др.) В наиболее сильных компрессорах используется арифметическое сжатие.
Обратимое сжатие
Если при сжатии данных происходит только изменениеструктуры данных, то метод сжатия называется обратимым. В этом случае, из архива можно восстановить информацию полностью. Обратимые методы сжатия можно применять к любым типам данных, но они дают меньшую степень сжатия по сравнению с необратимыми методами сжатия. Примеры форматов сжатия без потери информации:
· GIF, TIFF - для графических данных;
· AVI - для видеоданных;
· ZIP, ARJ, RAR, CAB, LH - для произвольных типов данных.
Существует много разных практических методов сжатия без потери информации, которые, как правило, имеют разную эффективность для разных типов данных и разных объемов. Однако, в основе этих методов лежат три теоретических алгоритма:
· алгоритм RLE (Run Length Encoding);
· алгоритмы группы KWE(KeyWord Encoding);
· алгоритм Хаффмана.
Сжатие информации без потерь - способ сжатия информации, при котором описывающий ее исходный код может быть восстановлен без искажений.
С.и.б.п. возможно, если исходный код обладает информационной избыточностью, превосходящей длину описания необходимых для его восстановления показателей сжатия. В общем случае любая конкретная кодовая комбинация обладает избыточностью. Действительно, пусть имеем двоичный код длиной N с равномерным случайным распределением нулей и единиц ("белый шум"). Очевидно, что при любом конкретном соотношении числа нулей и единиц в коде число возможных сочетаний менее информационной емкости кода, которая складывается из всех случаев распределения нулей и единиц. Т.е. при конкретном распределении код всегда избыточен. Следовательно, для определения возможности сжатия необходимо сопоставить избыточность конкретной комбинации кода с длиной показателей сжатия, среди которых в данном случае необходим показатель соотношения числа единиц и нулей в исходном коде. Предполагается, что в качестве сжатого кода в этом случае используется номер сочетания бит.
При изложенном подходе не будут выявлены и использованы случаи благоприятных для сжатия групп бит в кодах с примерно равным числом нулей и единиц (например, код начинается с нулей и заканчивается единицами). Для этих случаев приведенные рассуждения также справедливы с той поправкой, что оперировать необходимо такими понятиями, как перестановки групп бит (вместо сочетаний бит), спектр групп бит (в качестве показателей сжатия) и распределение групп бит (вместо распределения нулей и единиц). Предполагается, что в качестве сжатого кода в этом случае используется номер перестановки (с повторениями) групп бит.
Например, сжатие информации без потерь и ее восстановление в исходном виде реализуется на практике программами - архиваторами. При недостаточной информационной избыточности исходного кода программа - архиватор в лучшем случае сообщает об этом факте, не преобразуя исходный код, а в худшем - формирует код большей длины, чем исходный. Обычно программы-архиваторы оперируют байтами, что объясняется принятой в современных компьютерах системой кодирования, преобразования и передачи данных. При этом в названных программах используются алгоритмы сжатия худшие описанных выше предельных по компактности сжатого кода, но более быстродействующие, а в случае применения "на пролете" - однопроходные.
Смысл энтропии Шеннона
Энтропия д. с. в. — это минимум среднего количества бит, которое нужно передавать по каналу связи о текущем значении данной д. с. в.
Рассмотрим пример (скачки). В заезде участвуют 4 лошади с равными шансами на победу, т.е. вероятность победы каждой лошади равна 1/4. Введем д. с. в. X, равную номеру победившей лошади. Здесь НХ = 2. После каждого заезда по каналам связи достаточно будет передавать два бита информации о номере победившей лошади. Кодируем номер лошади следующим образом: 1—00, 2—01, 3—10, 4—11. Если ввести функцию L(X), которая возвращает длину сообщения, кодирующего заданное значение X, то м.о. ML(X) — это средняя длина сообщения, кодирующего X. Можно формально определить L через две функции L(X) = len(code(X)), где code(X) каждому значению X ставит в соответствие некоторый битовый код, причем, взаимно однозначно, а len возвращает длину в битах для любого конкретного кода. В этом примере ML(X) = НХ.
Пусть теперь д. с. в. X имеет следующее распределение
т.е. лошадь с номером 1 — это фаворит. Тогда
Закодируем номера лошадей: 1—0, 2—10, 3—110, 4—111, — т.е. так, чтобы каждой код не был префиксом другого кода (подобное кодирование называют префиксным). В среднем в 16 заездах 1-я лошадь должна победить в 12 из них, 2-я — в 2-х, 3-я — в 1-м и 4-я — в 1-м. Таким образом, средняя длина сообщения о победителе равна (1*12 + 2*2 + 3*1+3*1)/16 = 1.375 бит/сим или м.о. L(X). Действительно, L(X) сейчас задается следующим распределением вероятностей
Следовательно,
Итак, ML(X) > НХ.
Можно доказать, что более эффективного кодирования для двух рассмотренных случаев не существует.
То,
что энтропия Шеннона соответствует
интуитивному представлению о мере
информации, может быть продемонстрировано
в опыте по определению среднего времени
психических реакций. Опыт заключается
в том, что перед испытуемым человеком
зажигается одна из N
лампочек,
которую он должен указать. Проводится
большая серия испытаний, в которых
каждая лампочка зажигается с определенной
вероятностью
,
где i
—
это номер лампочки. Оказывается, среднее
время, необходимое для правильного
ответа испытуемого, пропорционально
величине энтропии —
,
а не числу лампочек N,
как
можно было бы подумать. В этом опыте
предполагается, что чем больше информации
будет получено человеком, тем дольше
будет время ее обработки и, соответственно,
реакции на нее.
Основная теорема кодирования. Метод блокирования
основная
теорема о кодировании при отсутствии
помех,
а именно то, что с ростом длины
сообщения,
при кодировании методом Шеннона-Фэно
всего сообщения целиком среднее
количество бит на единицу сообщения
будет сколь угодно мало отличаться от
энтропии единицы сообщения. Подобное
кодирование практически не реализуемо
из-за того, что с ростом длины сообщения
трудоемкость построения этого кода
становится недопустимо большой. Кроме
того, такое кодирование делает невозможным
отправку сообщения по частям, что
необходимо для непрерывных процессов
передачи данных. Дополнительным
недостатком этого способа кодирования
является необходимость отправки или
хранения собственно полученного кода
вместе с его исходной длиной, что снижает
эффект от сжатия. На практике для
повышения степени сжатия используют
метод
блокирования.
По
выбранному значению
можно
выбрать такое
,
что если разбить все сообщение на блоки
длиной
(всего
будет
блоков),
то кодированием Шеннона-Фэно таких
блоков, рассматриваемых как единицы
сообщения, можно сделать среднее
количество бит на единицу сообщения
большим энтропии менее, чем на
.
Действительно, пусть
,
,
и
т.д., т.е.
.
Тогда
и
,
следовательно,
т.е.
достаточно брать
.
Минимум
по
заданному
может
быть гораздо меньшим
.
Пример.
Пусть д.с.в.
независимы,
одинаково распределены и могут принимать
только два значения
и
при
от
1 до
.
Тогда
Минимальное
кодирование здесь - это коды 0 и 1 с длиной
1 бит каждый. При таком кодировании
количество бит в среднем на единицу
сообщения равно 1. Разобьем сообщение
на блоки длины 2. Закон распределения
вероятностей и кодирование для 2-мерной
д.с.в.
-
Тогда при таком минимальном кодировании количество бит в среднем на единицу сообщения будет уже
т.е.
меньше, чем для неблочного кодирования.
Для блоков длины 3 количество бит в
среднем на единицу сообщения можно
сделать
,
для блоков длины 4 -
и
т.д.
Все
изложенное ранее подразумевало, что
рассматриваемые д.с.в. кодируются только
двумя значениями (обычно 0 и 1). Пусть
д.с.в. кодируются
значениями.
Тогда для д.с.в.
и
любого ее кодирования верно, что
и
.
Кроме того, существует кодирование
такое, что
и
,
где
.
Формулы теоретических пределов уровня сжатия, рассмотренные ранее, задают предел для средней длины кода на единицу сообщений, передаваемых много раз, т.е. они ничего не говорят о нижней границе уровня сжатия, которая может достигаться на некоторых сообщениях и быть меньшей энтропии д.с.в., реализующей сообщение.
Алгоритм Хаффмана
Арифметическое кодирование
Сейчас существует множество алгоритмов
сжатия информации. Большинство из них
широко известны, но есть и некоторые
весьма эффективные, но, тем не менее,
малоизвестные алгоритмы. Эта статья
рассказывает о методе арифметического
кодирования, который является лучшим
из энтропийных, но тем не менее мало кто
о нём знает.
Прежде чем рассказывать
об арифметическом кодировании, надо
сказать пару слов об алгоритме Хаффмана.
Этот метод эффективен, когда частоты
появления символов пропорциональны
1/2n (где n – натуральное положительное
число). Это утверждение становится
очевидным, если вспомнить, что коды
Хаффмана для каждого символа всегда
состоят из целого числа бит. Рассмотрим
ситуацию, когда частота появление
символа равна 0,2, тогда оптимальный код
для кодирования это символа должен
иметь длину –log2(0,2)=2,3 бита. Понятно,
что префиксный код Хаффмана не может
иметь такую длину, т.е. в конечном итоге
это приводит к ухудшению сжатия
данных.
Арифметическое кодирование
предназначено для того, чтобы решить
эту проблему. Основная идея заключается
в том, чтобы присваивать коды не отдельным
символам, а их последовательностям.
Вначале
рассмотрим идею, лежащую в основе
алгоритма, затем рассмотрим небольшой
практический пример.
Как и во всех
энтропийных алгоритмах мы обладаем
информацией о частоте использования
каждого символа алфавита. Эта информация
является исходной для рассматриваемого
метода. Теперь введём понятие рабочего
отрезка. Рабочим называется полуинтервал
[a;b) с расположенными на нём точками.
Причём точки расположены т.о., что длины
образованных ими отрезков равны частоте
использования символов. При инициализации
алгоритма a=0 b=1.
Один шаг кодирования
заключается в простой операции: берётся
кодируемый символ, для него ищется
соответствующий участок на рабочем
отрезке. Найденный участок становится
новым рабочим отрезком (т.е. его тоже
необходимо разбить с помощью точек).
Эта
операция выполняется для некоторого
количества символов исходного потока.
Результатом кодирования цепочки символов
является любое число (а также длина его
битовой записи) с итогового рабочего
отрезка (чаще всего берётся левая граница
отрезка).
Звучит это довольно сложно.
Давайте попробуем разобраться с помощью
небольшого примера. Закодируем сообщение
«ЭТОТ_МЕТОД_ЛУЧШЕ_ХАФФМАНА» с помощью
описанного метода.
Составив
таблицу частоты появления символов, мы
можем приступать к кодированию. На
первом этапе составим рабочий отрезок.
Выглядеть он будет так:
Берём
первый символ из потока, это символ «Э».
Соответствующий ему отрезок – отрезок
[0,96;1). Если бы мы хотели закодировать
один символ, то результатом кодирования
было бы любое число из этого отрезка.
Но мы не остановимся на одном символе,
а добавим ещё один. Символ «Т». Для этого
составим новый рабочий отрезок с a=0,96 и
b=1. Разбиваем этот отрезок точками точно
так же как мы сделали это для исходного
отрезка и считываем новый символ «Т».
Символу «Т» соответствует диапазон
[0,24;0,36), но наш рабочий отрезок уже
сократился до отрезка [0,96;1). Т.е. границы
нам необходимо пересчитать. Сделать
это можно с помощью двух следующих
формул: High=Lowold+(Highold-Lowold)*RangeHigh(x),
Low=Lowold+(Highold-Lowold)*RangeLow(x),
где Lowold – нижняя граница интервала,
Highold – верхняя граница интервала
RangeHigh и RangeLow – верхняя и
нижняя границы кодируемого символа.
Пользуясь
этими формулами, закодируем первое
слово сообщения целиком:
Результатом
кодирования будет любое число из
полуинтервала [0,97218816; 0,97223424).
Предположим,
что результатом кодирования была выбрана
левая граница полуинтервала, т.е. число
0,97218816.
Рассмотрим процесс декодирования.
Код лежит в полуинтервале [0,96;1). Т.е.
первый символ сообщения «Э». Чтобы
декодировать второй символ (который
кодировался в полуинтервале [0,96;1))
полуинтервал нужно нормализовать, т.е.
привести к виду [0;1). Это делается с
помощью следующей формулы:
code=(code-RangeLow(x))/(RangeHigh(x)-RangeLow(x)),
где code – текущее значение кода.
Применяя
эту формулу, получаем новое значение
code=(0,97218816-0,96)/(1-0,96)= 0,304704. Т.е. второй символ
последовательности «Т».
Снова применим
формулу: code=(0,304704-0,24)/(0,36-0,24)= 0,5392. Третий
символ последовательности – «О».
Продолжая
декодирование, по описанной схеме мы
можем полностью восстановить исходный
текст.
Т.о. мы с вами рассмотрели
алгоритм кодирования и декодирования
с помощью самого эффективного из всех
энтропийных алгоритмов. Надеюсь, из
этой статьи вы узнали что-то новое и
поняли основные идеи, лежащие в алгоритме
арифметического кодирования.
Методы Лемпела-Зива
Методы Шеннона-Фэно, Хаффмена и арифметическое кодирование обобщающе называются статистическими методами. Словарные алгоритмы носят более практичный характер. Их частое преимущество перед статистическими теоретически объясняется тем, что они позволяют кодировать последовательности символов разной длины. Неадаптивные статистические алгоритмы тоже можно использовать для таких последовательностей, но в этом случае их реализация становится весьма ресурсоемкой.
Алгоритм LZ77 был опубликован в 1977 г. Разработан израильскими математиками Якобом Зивом (Ziv) и Авраамом Лемпелом (Lempel). Многие программы сжатия информации используют ту или иную модификацию LZ77. Одной из причин популярности алгоритмов LZ является их исключительная простота при высокой эффективности сжатия.
Основная идея LZ77 состоит в том, что второе и последующие вхождения некоторой строки символов в сообщении заменяются ссылками на ее первое вхождение.
LZ77 использует уже просмотренную часть сообщения как словарь. Чтобы добиться сжатия, он пытается заменить очередной фрагмент сообщения на указатель в содержимое словаря.
LZ77 использует "скользящее" по сообщению окно, разделенное на две неравные части. Первая, большая по размеру, включает уже просмотренную часть сообщения. Вторая, намного меньшая, является буфером, содержащим еще незакодированные символы входного потока. Обычно размер окна составляет несколько килобайт, а размер буфера - не более ста байт. Алгоритм пытается найти в словаре (большей части окна) фрагмент, совпадающий с содержимым буфера.
Алгоритм LZ77 выдает коды, состоящие из трех элементов:
смещение в словаре относительно его начала подстроки, совпадающей с началом содержимого буфера;
длина этой подстроки;
первый символ буфера, следующий за подстрокой.
Пример.
Размер окна - 20 символ, словаря - 12
символов, а буфера - 8. Кодируется сообщение
"ПРОГРАММНЫЕ ПРОДУКТЫ ФИРМЫ MICROSOFT".
Пусть словарь уже заполнен. Тогда он
содержит строку "ПРОГРАММНЫЕ ", а
буфер - строку "ПРОДУКТЫ". Просматривая
словарь, алгоритм обнаружит, что
совпадающей подстрокой будет "ПРО",
в словаре она расположена со смещением
0 и имеет длину 3 символа, а следующим
символом в буфере является "Д".
Таким образом, выходным кодом будет
тройка <0,3,'Д'>. После этого алгоритм
сдвигает влево все содержимое окна на
длину совпадающей подстроки
и
одновременно считывает столько же
символов из входного потока в буфер.
Получаем в словаре строку "РАММНЫЕ
ПРОД", в буфере - "УКТЫ ФИР". В
данной ситуации совпадающей подстроки
обнаружить не удаться и алгоритм выдаст
код <0,0,'У'>, после чего сдвинет окно
на один символ. Затем словарь будет
содержать "АММНЫЕ ПРОДУ", а буфер
- "КТЫ ФИРМ". И т.д.
Декодирование кодов LZ77 проще их получения, т.к. не нужно осуществлять поиск в словаре.
Недостатки LZ77:
с ростом размеров словаря скорость работы алгоритма-кодера пропорционально замедляется;
кодирование одиночных символов очень неэффективно.
Кодирование одиночных символов можно сделать эффективным, отказавшись от ненужной ссылки на словарь для них. Кроме того, в некоторые модификации LZ77 для повышения степени сжатия добавляется возможность для кодирования идущих подряд одинаковых символов.
Пример. Закодировать по алгоритму LZ77 строку "КРАСНАЯ КРАСКА".
В последней строчке, буква "А" берется не из словаря, т.к. она последняя.
Длина
кода вычисляется следующим образом:
длина подстроки не может быть больше
размера буфера, а смещение не может быть
больше размера словаря
.
Следовательно, длина двоичного кода
смещения будет округленным в большую
сторону
размер
словаря
,
а длина двоичного кода для длины подстроки
будет округленным в большую сторону
размер
буфера
.
А символ кодируется 8 битами (например,
ASCII+).
В
последнем примере длина полученного
кода равна
бит,
против
бит
исходной длины строки.
В 1982 г. Сторером (Storer) и Шиманским (Szimanski) на базе LZ77 был разработан алгоритм LZSS, который отличается от LZ77 производимыми кодами.
Код, выдаваемый LZSS, начинается с однобитного префикса, различающего собственно код от незакодированного символа. Код состоит из пары: смещение и длина, такими же как и для LZ77. В LZSS окно сдвигается ровно на длину найденной подстроки или на 1, если не найдено вхождение подстроки из буфера в словарь. Длина подстроки в LZSS всегда больше нуля, поэтому длина двоичного кода для длины подстроки - это округленный до большего целого двоичный логарифм от длины буфера.
Пример. Закодировать по алгоритму LZSS строку "КРАСНАЯ КРАСКА".
Здесь
длина полученного кода равна
бит.
LZ77 и LZSS обладают следующими очевидными недостатками:
невозможность кодирования подстрок, отстоящих друг от друга на расстоянии, большем длины словаря;
длина подстроки, которую можно закодировать, ограничена размером буфера.
Если механически чрезмерно увеличивать размеры словаря и буфера, то это приведет к снижению эффективности кодирования, т.к. с ростом этих величин будут расти и длины кодов для смещения и длины, что сделает коды для коротких подстрок недопустимо большими. Кроме того, резко увеличится время работы алгоритма-кодера.
В 1978 г. авторами LZ77 был разработан алгоритм LZ78, лишенный названных недостатков.
LZ78 не использует "скользящее" окно, он хранит словарь из уже просмотренных фраз. При старте алгоритма этот словарь содержит только одну пустую строку (строку длины нуль). Алгоритм считывает символы сообщения до тех пор, пока накапливаемая подстрока входит целиком в одну из фраз словаря. Как только эта строка перестанет соответствовать хотя бы одной фразе словаря, алгоритм генерирует код, состоящий из индекса строки в словаре, которая до последнего введенного символа содержала входную строку, и символа, нарушившего совпадение. Затем в словарь добавляется введенная подстрока. Если словарь уже заполнен, то из него предварительно удаляют менее всех используемую в сравнениях фразу.
Ключевым
для размера получаемых кодов является
размер словаря во фразах, потому что
каждый код при кодировании по методу
LZ78 содержит номер фразы в словаре. Из
последнего следует, что эти коды имеют
постоянную длину, равную округленному
в большую сторону двоичному логарифму
размера словаря
(это
количество бит в байт-коде расширенного
ASCII).
Пример. Закодировать по алгоритму LZ78 строку "КРАСНАЯ КРАСКА", используя словарь длиной 16 фраз.
Указатель на любую фразу такого словаря - это число от 0 до 15, для его кодирования достаточно четырех бит.
В
последнем примере длина полученного
кода равна
битам.
Алгоритмы LZ77, LZ78 и LZSS разработаны математиками и могут использоваться свободно.
В 1984 г. Уэлчем (Welch) был путем модификации LZ78 создан алгоритм LZW.
Пошаговое описание алгоритма-кодера.
Шаг 1. Инициализация словаря всеми возможными односимвольными фразами (обычно 256 символами расширенного ASCII). Инициализация входной фразы w первым символом сообщения.
Шаг 2. Считать очередной символ K из кодируемого сообщения.
Шаг 3. Если КОНЕЦ_СООБЩЕНИЯ
Выдать код для w
Конец
Если фраза wK уже есть в словаре
Присвоить входной фразе значение wK
Перейти к Шагу 2
Иначе
Выдать код w
Добавить wK в словарь
Присвоить входной фразе значение K
Перейти к Шагу 2.
Как и в случае с LZ78 для LZW ключевым для размера получаемых кодов является размер словаря во фразах: LZW-коды имеют постоянную длину, равную округленному в большую сторону двоичному логарифму размера словаря.
Пример. Закодировать по алгоритму LZW строку "КРАСНАЯ КРАСКА". Размер словаря - 500 фраз.
В
этом примере длина полученного кода
равна
битам.
При переполнении словаря, т.е. когда необходимо внести новую фразу в полностью заполненный словарь, из него удаляют либо наиболее редко используемую фразу, либо все фразы, отличающиеся от одиночного символа.
Алгоритм LZW является запатентованным и, таким образом, представляет собой интеллектуальную собственность. Его безлицензионное использование особенно на аппаратном уровне может повлечь за собой неприятности.
Любопытна история патентования LZW. Заявку на LZW подали почти одновременно две фирмы - сначала IBM и затем Unisys, но первой была рассмотрена заявка Unisys, которая и получила патент. Однако, еще до патентования LZW был использован в широко известной в мире Unix программе сжатия данных compress.
Особенности программ архиваторов
Если коды алгоритмов типа LZ передать для кодирования (адаптивному) алгоритму Хаффмена или арифметическому, то полученный двухшаговый (конвейерный, а не двухпроходный) алгоритм даст результаты сжатия подобные широко известным программам: GZIP, ARJ, PKZIP, ...
Наибольшую степень сжатия дают двухпроходные алгоритмы, которые исходные данные последовательно сжимают два раза, но они работают до двух раз медленнее однопроходных при незначительном увеличении степени сжатия.
Большинство программ-архиваторов сжимает каждый файл по отдельности, но некоторые сжимают файлы в общем потоке, что дает увеличение степени сжатия, но одновременно усложняет способы работы с полученным архивом, например, замена в таком архиве файла на его более новую версию может потребовать перекодирования всего архива. Примером программы, имеющей возможность сжимать файлы в общем потоке, является RAR. Архиваторы ОС Unix (gzip, bzip2, ...) сжимают файлы в общем потоке практически всегда.
В 1992 году фирма WEB Technologies объявила о выходе новой программы сжатия DataFiles/16, которая якобы может при неоднократном использовании сжать любое количество данных до 1024 байт. Информация об этом прошла из солидного издания, журнала Byte.
Конечно
же никакой алгоритм сжатия не может
уплотнить произвольные данные. Для
доказательства этого проделаем следующий
мысленный эксперимент. Предположим,
что на жестком диске компьютера хранятся
все возможные разные файлы длиной ровно
100 байт (таких файлов будет всего
).
И пусть существует идеальная программа
сжатия данных, которая сожмет каждый
из них хотя бы на один байт. Но тогда,
так как всего разных файлов длиной
меньшей 100 байт существует не более чем
,
то неизбежно получится, что два разных
файла упакуются в идентичные файлы.
Следовательно, не может существовать
программы сжатия данных, которая может
сжать любые исходные данные.
Формат файла, содержащего данные, которые перед использованием требуется распаковать соответствующей программой\h архиватором, как правило, может быть идентифицирован расширением имени файла.
В следующей таблице приводятся некоторые типичные расширения, соответствующие им программы-архиваторы и методы сжатия данных.
Практически все форматы файлов для хранения графической информации используют сжатие данных. Формат графического файла также, как правила, идентифицируется расширением имени файла.
В следующей таблице приводятся некоторые типичные расширения графических файлов и соответствующие им методы сжатия данных.
Сжатие RLE (Run Length Encoding - кодирование переменной длины) - это простейший метод сжатия, в общем случае очень неэффективный, но дающий неплохие результаты на типичной графической информации. Оно основано в основном на выделении специального кода-маркера, указывающего сколько раз повторить следующий байт.
Сжатие и распаковка в реальном времени используется в программах- драйверах для "уплотнения" носителей информации, позволяющих увеличить емкость носителя приблизительно в 2 раза. Наиболее известной программой такого рода является DriverSpace для MS-DOS и Microsoft Windows.
Сжатие графики, звука и видео
