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

Лекции по ТПС

.pdf
Скачиваний:
52
Добавлен:
16.07.2022
Размер:
5.31 Mб
Скачать

Идея неравномерного кодирования, в котором длина кодовой цепочки зависит от частоты появления соответствующего символа, реализована еще в знаменитой «азбуке Морзе». Однако там наряду с «точками» и «тире» использовался третий кодовый символ – разделитель «пауза». Если ограничиться только «O» и «1», то при построении кода необходимо учесть дополнительное требование: чтобы все кодовые цепочки однозначно выделялись в непрерывном потоке битов, ни одна из них не должна входить как начальный участок в кодовую, цепочку другого символа. Такое свойство кода называется префиксностью.

Наибольшее распространение получил способ построения эффективного кода, предположенный Хаффманом. Рассмотрим его на примере. Пусть задан алфавит из 5 разновидностей символов Z1 – Z5, и их вероятности. В таблице 5.1 наряду с этими исходными данными приведены так же результаты кодирования по Хаффману: кодовые цепочки Ki их длинны li. Процедуру построения кода иллюстрирует таблица 5.2 и рисунок 5.1

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

Пример кода Хаффмана

 

 

 

Таблица 16.1

 

 

 

 

 

 

Zi

Pi

Ki

 

li

 

 

 

 

 

 

 

Z1

0,25

10

 

2

 

Z2

0,17

00

 

2

 

Z3

0,08

010

 

3

 

Z4

0,35

11

 

2

 

Z5

0,15

011

 

3

 

 

 

 

 

 

 

 

pi 1,0

 

 

lср

 

 

 

 

 

 

 

121

На втором этапе строится «дерево кода», ветви которого отображают в обратном порядке процесс «объединения вероятностей». При построении дерева принимается правило соответствия большей вероятности одному из направлений ветви (например «левому») и определенному значению бита кода (например, «1») . Цепочки битов от «корня» до конца каждой ветви соответствуют кодам исходных символов (табл.16.2).

Таблица 16.2 Объединение вероятностей символов

Zi

Pi

 

Шаги объединения

 

Ki

 

 

 

 

 

 

 

 

 

 

 

1

2

 

3

 

4

 

 

 

 

 

 

 

 

 

 

Z1

0,35

0,35

0,40

0,60

 

1,00

 

11

Z2

0,25

0,25

0,35

0,40

 

 

 

10

Z3

0,17

0,23

0,25

 

 

 

 

00

Z4

0,15

0,17

 

 

 

 

 

011

Z5

0,08

 

 

 

 

 

 

010

 

 

 

 

 

 

 

 

 

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

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

122

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

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

СЖАТИЕ СООЩЕНИЙ С УЧЕТОМ ЦЕПОЧЕК СИМВОЛОВ

ПО ЛЕМПЕЛЮ-ЗИВУ

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

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

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

На стороне приемника программа декодер принимает коды и восстанавливает исходное сообщение по собственному словарю. При этом восстановленные

123

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

Уточним дополнительно некоторые моменты:

коды координат цепочки и коды отдельных символов различаются битовыми признаками (например, в первом случае – 1, во втором –0) ;

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

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

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

Добавим, что алгоритм Лемпеля-Зива используется в большинстве популярных программ-архиваторов (в том числе, например, в zip, rar, arj и их windows

– версиях).

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

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

СЖАТИЕ ИЗОБРАЖЕНИЙ ПО БЛОЧНОМУ АЛГОРИТМУ JPEG

Как известно, все множество цветовых оттенков может быть задано различными пропорциями яркости трех цветовых составляющих, - в частности, красного (Red – R), зеленого (Green – G) и голубого (Blue – B). В памяти компьютера изображение чаще всего представляется как матрица (растр) точек - пикселей.

124

(Наряду с таким «растровым» представлением существует и так называемое «векторное», когда элементы изображения - кривые – описываются математическими уравнениями. К «векторному» описанию изображения применимы способы сжатия данных без потерь. Здесь мы будем говорить о методах, применяемых по отношению к растровым изображениям).

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

матах tif и bmp.

Особенности человеческого зрения заключаются, в частности, в том, что глаз слабо различает мелкие детали изображения и более чувствителен к изменениям яркости, чем к цветовым переходам. Эти особенности использует популярный алгоритм сжатия с потерями информации JPEG. В настоящее время широко используется «блочная» версия алгоритма, в которой все изображение разбивается на блоки 8х8 и в дальнейшем эти блоки «огрубляются» таким образом, чтобы код, который их описывает, стал как можно короче (исходное описание каждого такого блока требует 8х8х3=192 байта).

Алгоритм JPEG. Включает следующие этапы:

1. Осуществляется переход от RGB - представление к так называемому кодированию YUV. Здесь Y – яркостная составляющая (Y=R+G+B), а U и V – цветовые (V=R, V=G). Оба способа взаимообратимы, но YUV–представление позволяет выделить яркостную составляющую, к которой нужно относиться более бережно, чем к цветовым

1. Выделяются блоки 8х8 пикселей. При этом каждой из составляющих YUV отвечает матрица коэффициентов Pij. (Например, в матрице U значение Pij=0 означает, что у данной точки отсутствует красная цветовая составляющая, а Pij=255 значит, что она будет максимально яркой).

2. Выполняется так называемое «прореживание». Четверки блоков изображения 8х8 объединяются в «макроблоки» 16х16, а затем для цветовых составляющих U и V из соответствующих матриц исключаются все четные строки и столбцы. При этом матрица яркостной составляющей Y остается нетронутой. В итоге количество коэффициентов сокращается вдвое (вместе 4х3=12 блоков остается 6).

3. Для всех оставшихся блоков изображения выполняется так называемое дискретное косинус-преобразование (ДКПФ). При этом матрицы NxN (N=8)

125

коэффициентов Р преобразуются в матрицы D в соответствии со следующей процедурой:

 

1

N 1 N 1

 

(2x 1)i

 

(2 y 1)i

 

dij

Ci C j pxy

cos[

]cos[

]

2N

2N

2N

 

x 0 y 0

 

 

 

 

 

 

 

 

 

 

Смысл этого преобразования заключается в том, что коэффициенты dij отражают «амплитуду колебаний» яркости пикселей. Например, если все пиксели блока имеют одинаковую яркость, то максимальными будет коэффициент d11 , а остальные dij = 0.

Чем больше деталей в изображении, тем большими будут значения “удаленных” коэффициентов

5. Ключевой этап алгоритма – “огрубление” коэффициентов

Если все коэффициенты “отмасштабировать”, поделив, скажем, на 8, то длина кода для каждого из них сократится на 3 бита из 8. Но поскольку “удаленные” коэффициенты (правая нижняя часть матрицы) обычно малы, они просто обнуляются в результате масштабирования. Нужно сказать, что именно на этом этапе информация о деталях изображения необратимо теряется.

Регулируя величину делителя, можно задавать соотношение – «степень сжатия – качество восстановленного изображения».

6. Последний этап – кодирование оставшихся коэффициентов. Он включает несколько шагов:

-коэффициенты записываются в цепочку в порядке “обхода” (в примере

цепочка имеет вид 16 8 6 1 3 4 0 0 0 1…) ;

-последовательности нулей в цепочке кодируются методом повторов;

-длины “нулевых” серий кодируются по Хаффману.

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

126

МЕТОДЫ СЖАТИЯ ЗВУКОВЫХ СООБЩЕНИЙ

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

Оцифровка звука сводится к дискретизации (взятию отсчетов U i амплиту-

 

f g

1

 

ды сигнала с шагом по времени t

t ), последующему кван-

или частотой

тованию с шагом U и кодированию (аналого-цифровому преобразованию).

С учетом особенностей слухового аппарата человека стандартизированы следующие уровни частот:

- 44 кГц (для тренированного уха максимальной воспринимаемой считает-

ся

f m

20 кГц

)

 

 

-22 кГц (в случае, когда восприятие высокочастотных составляющих не критично f m 10 кГц )

-8 кГц (для речевого сигнала – с учетом экспериментально установленного порога «слоговой разборчивости» f m 3.4 кГц )

Один из классических способов сжатия – так называемая "адаптивная дифференциальная ИКМ" (АДИКМ) основан на следующем:

-вместо кода абсолютного значения очередного импульса передают код изменения его амплитуды по отношению к предыдущему (дифференциальному);

-при увеличении скорости изменения сигнала шаг его квантования возрастает, а при уменьшении – уменьшается (адаптивность).

Использование АДИКМ позволяет уменьшить объем передаваемых данных примерно на порядок без потери информации.

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

Частота дискретизации согласно теореме Найквиста-Котельникова должна быть не меньше удвоенной максимальной частоты спектра сигнала.

Погрешности квантования опре6деляются исходя из емкости кода для максимального уровня сигнала – 8 или 16 бит на отсчет.

127

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

Механизм компадирования выгладит следующим образом (рис.16.1).

Рис.16.1

Звуковой сигнал перед оцифровкой подается на так называемый «компрессор» КМП – нелинейный преобразователь, «растягивающий» слабые сигналы и «сжимающий» сильные; после передачи зашумленный погрешностями АЦП сигнал подается на вход «эспандера», который в противоположность компрессору сжимает слабые сигналы и растягивает сильные, восстанавливая первоначальный баланс, при этом погрешности U , попавшие в область слабых сигналов, уменьшаются, а сильных – возрастают.

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

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

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

-урезание спектра сигналов (уменьшение частоты дискретизации при условии не критичности к качеству звучания);

-сжатие участков «тишины» (когда амплитуда сигнала меньше определенного порогового значения).

КОНТРОЛЬНЫЕ ВОПРОСЫ:

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

128

2.Поясните суть методов «кодирования повторов» и кодирование по Лемпе- лю-Зиву.

3.В чем отличия «блочного» и «волнового» кодирования изображений в стандарте JPEG?

4.Какие преимущества при сжатии звуковой информации дает детальное знание особенностей источников звука.

5.Неравномерное кодирование особенно эффективно, когда объем алфавита n не равен степени двойки. Объясните это.

6.Что такое «префиксность» применительно к кодированию?

7.Поясните процедуру построения кода Хаффмена ?

8.В чем особенности однопроходного и двухпроходного кода Хаффмена?

ЛЕКЦИЯ 17. ПРОПУСКНАЯ СПОСОБНОСТЬ КАНАЛОВ СИСТЕМ ЖАТС

Скорость передачи информации зависит не только от свойств самого канала, но и от свойств, подаваемого на его вход сигнала [H '(U )] . Поэтому скорость не может характеризовать канал как средство передачи информации. Надо определить способ оценки способности канала передавать информацию.

В начале рассмотрим дискретный канал, через который в единицу времени передается V символов из ансамбля с объемом алфавита т.

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

I (A, B) H(A) H (A / B) H (B) H (B / A) ,

где А И В — ансамбли дискретных случайных символов соответственно на входе и выходе канала.

Лишь Н(А) не зависит от свойств канала и определяет источник сигналов на входе,

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

129

рактеризует канал и называется пропускной способностью канала (в расчете на один символ):

Cсим max I ( A, B).

P( A)

Чаще используют понятие пропускной способности канала С в расчете на единицу времени, бит/с

C max I '( A, B),

C VCсим .

P( A)

 

Определим пропускную способность симметричного канала без памяти, в котором в котором каждый передаваемый кодовый символ, принимается ошибочно с вероятностью р и правильно с вероятностью (1-р). Причем в случае ошибки вместо переданного i-го символа может быть с равной вероятностью принят любой другой из т символов. Таким образом, условная вероятность того, что принят символ bj, когда на самом деле был передан символ аi:

 

 

 

 

p

 

 

при i j

 

p(b j

/ ai

 

 

 

 

,

,

,

 

 

 

) m 1

 

при i

j

 

 

 

1

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Cсим max[H (B) H (B / A)].

P( A)

Условная энтропия не зависит от распределения вероятностей в ансамбле А и определяется только переходной вероятностью канала:

H (B / A) M [log

1

] p log

m 1

(1 p) log

1

.

 

 

 

 

 

p(b j / ai )

 

p

 

1 p

Получаем

Cсим

max[H (B) p log

m 1

 

(1 p) log

1

].

p

1 p

 

P( A)

 

 

 

 

 

 

 

 

Максимизировать надо безусловную энтропию Н(В) поскольку в правой части равенства только она зависит от распределения Р(А). Можно показать, что максимум Н(В)=logт и реализуется, когда все символы b равновероятны и независимы (когда входные символы равновероятны и независимы):

130

Соседние файлы в предмете Теория передачи сигналов