Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




Тезисы к лекции. Лекция №4. Применение эффективного (статистического) кодирования для сжатия данных

Читайте также:
  1. Введение к лекции 1
  2. Введение к лекции 11
  3. Введение к лекции 2
  4. Введение к лекции 3
  5. Введение к лекции 4
  6. Вопросы для самопроверки к лекции 2
  7. Гегель «Лекции по эстетике» (1 т., 1ч., 3 гл., С Художник.)
  8. Дополнение к лекции №1.
  9. Контроль знаний предыдущей лекции, фронтальный опрос.
  10. Лекции 30, 31. Правила трассирования и проектирования дорог (продожение).

Раздел 3. Сжатие данных в ЦСС.

Лекция №4. Применение эффективного (статистического) кодирования для сжатия данных. Алгоритмы сжатия без потерь: Хаффмана. Арифметический код.

Эффективное кодирование – это процедуры направленные на устранение избыточности.

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

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

Если при том же объеме алфавита сообщения не равновероятны, то на каждый двоичный элемент кодовой комбинации будет приходиться меньше чем 1 бит.

Появившаяся избыточность, определяется по следующей формуле:

(4.1)

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

(4.2)

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

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

1-ая теорема (для канала связи без помех):

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

., (1.28)

где .

2-ая теорема (для каналов связи с помехами):

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

(1.29)

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

Эффективность применения оптимальных неравномерных кодов может быть оценена:

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

- Коэффициент относительной эффективности - позволяет сравнить эффективность применения различных методов эффективного кодирования.

В неравномерных кодах возникает проблема разделения кодовых комбинаций. Решение данной проблемы обеспечивается применением префиксных кодов.

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

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

Рисунок 4.1. Пример двоичного кодового дерева

Две ветви, идущие от корня дерева к узлам первого порядка, соответствуют выбору между “0” и “1” в качестве первого символа кодового слова: левая ветвь соответствует “0”, а правая – “1”. Две ветви, идущие из узлов первого порядка, соответствуют второму символу кодовых слов, левая означает “0”, а правая – “1” и т. д. Ясно, что последовательность символов каждого кодового слова определяет необходимые правила продвижения от корня дерева до концевого узла, соответствующего рассматриваемому сообщению.

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

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

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

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

Метод Хаффмена

Одним из часто используемых методов эффективного кодирования является так называемый код Хаффмана.

Пусть сообщения входного алфавита имеют соответственно вероятности их появления .

Тогда

Алгоритм кодирования Хаффмана состоит в следующем:

1. Сообщения располагаются в столбец в порядке убывания вероятности их появления.

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

 

3. Повторяем шаги 1 и 2 до тех пор, пока не получим единственное сообщение, вероятность которого равна 1.

4. Проводя линии, объединяющие сообщения и образующие последовательные подмножества, получаем дерево, в котором отдельные сообщения являются концевыми узлами. Соответствующие им кодовые слова можно определить, приписывая правым ветвям объединения символ “1”, а левым - “0”. Впрочем, понятия “правые” и “левые” ветви в данном случае относительны.

 

Рисунок 1.17 – Алгоритм расчета точек ветвей дерева Хаффмена

 

На основании приведенного алгоритма можно построить кодовое дерево.

 

Рисунок 1.18 – Дерево Хаффмена

 

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

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

Пример на однозначность декодирования и трек ошибок

Пусть передавалась следующая последовательность

1 0 0 1 1 1 0 0 0 1

a b c d

При возникновении ошибки в первом двоичном элементе, получим

0 0 0 1 1 1 0 0 0 1

g c d

Т.О. ошибка в одном разряде комбинации первого символа привела к неправильному декодированию двух символов. (Трек ошибок).

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

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

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

В общей структурной схеме СПДС задачу защиты от ошибок выполняет кодер и декодер канала, который иногда называют УЗО.

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

Достоинства арифметического кодирования: способность кодирования символа с количеством бит сколь угодно близким к предельному; возможность адаптивного изменения модели; высокая скорость работы.

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

1. Разбиваем единичный отрезок на участки, соответствующие вероятностям сообщений алфавита.

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

3. Находим нижнюю и верхнюю границы, ширину участка.

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

5. Повторяем 3 и 4 пункты.

6. Участок, соответствующий последнему сообщению в кодируемом блоке, делим пополам и получаем число-архив. Количество разрядов, необходимое для представления архива в двоичном виде определяется как log2 (1/d3) +1.

Декодирование арифметического кода производится двумя способами:.

1. Масштабирование отрезков

2. Масштабирование архива


<== предыдущая страница | следующая страница ==>
Тезисы к лекции. Модели дискретных каналов связи | Тезисы к лекции. Раздел 4. Методы и устройства помехоустойчивого кодирования

Дата добавления: 2014-03-22; просмотров: 407; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.004 сек.