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

[Alekseev_A.P.]_Informatika_2015(z-lib.org)

.pdf
Скачиваний:
220
Добавлен:
26.01.2020
Размер:
8.07 Mб
Скачать

Методы сжатия информации с потерями

61

__________________________________________________________________________________

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

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

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

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

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

При сжатии звукового сигнала замаскированный, почти неслышимый звук не сохраняется в памяти ЭВМ и не передаётся через каналы связи. Например, громкий звук длительностью 0,1 с может замаскировать тихие последующие звуки, запаздывающие на время до 0,5 с, а значит, их не надо сохранять. Такая процедура исключения сигнала, следующего за громким звуком, называется маскированием во временной области.

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

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

62 Методы сжатия информации с потерями

__________________________________________________________________________________

Еще одна возможность компрессии основывается на следующей особенности человеческого слуха. Экспериментально установлено, что в диапазонах частот 20—200 Гц и 14—20 кГц чувствительность человеческого слуха существенно ниже, чем на частотах 0,2—14 кГц. По этой причине допустимо более грубое квантование сигналов в указанных диапазонах частот. На этих частотах для представления непрерывных сигналов двоичными числами требуется меньшее число уровней, а значит и меньшее число битов. Так, в среднем диапазоне частот амплитуды кодируются 16 битами, а на частотах, где ухо менее чувствительно — 6 и даже 4 битами.

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

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

Частота кадра (Frame Rate). Стандартная скорость воспроизведения видеосигнала 30 кадров/с (для кино этот показатель составляет 24 кадра/с). Экспериментально установлено, что иллюзия равномерно движущегося изображения возникает при частоте смены кадров более 16-ти в секунду. В этом случае человек воспринимает быстроменяющиеся картинки в виде динамичного непрерывного изображения. Заметим, что первые фильмы были сняты с использованием частоты 8 кадров/c (вспомним фильмы Чарли Чаплина).

Глубина цвета (Color Resolution). Этот показатель определяет количество цветов, которые можно одновременно отобразить на экране. Компьютеры обрабатывают цвет в RGB-формате (красный — зеленый — синий). RGB-формат позволяет путем смешения в разных пропорциях трех основных цветов получить любой другой цвет или оттенок. Для цветовой модели RGB обычно характерны следующие режимы глубины цвета: 8 бит/пиксель (256 цветов), 16 бит/пиксель (65 535 цветов) и 24 бит/пиксель (16,7 миллиона цветов).

Экранное разрешение (Spatial Resolution) или, другими словами, ко-

личество точек, из которых состоит изображение на экране, например, 1920 х 1080 точек (пикселей).

Качество изображения (Image Quality). Это комплексный показатель, который вбирает в себя три предыдущих. Требования к качеству зависят от конкретной задачи.

Расчеты показывают, что 24-битное цветное видео при разрешении

640 480 пикселей и частоте 30 кадров/с требует передачи более 26 Мбайт данных в секунду. Для наглядности приводим здесь эти расчеты.

640 480 24 30 = 221 184 000 бит/с = 26,37 Мбайт/с.

Методы сжатия информации с потерями

63

__________________________________________________________________________________

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

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

Стандарт JPEG (Joint Photographic Experts Group), предложенный Объединенной группой экспертов в области фотографии, позволяет сократить размеры графического файла с неподвижным изображением в 10—20 раз.

Наибольшее распространение для сжатия движущихся изображений получил стандарт MPEG.

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

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

Кроме перечисленных кадров, используются B-кадры, название которых происходит от английских слов Bidirectional Interpolated. В переводе с английского языка этот термин означает «кадры двунаправленной интерполяции (предсказания)». B-кадры содержат усредненную информацию относительно двух смежных (предыдущего и последующего) I-кадров или P-кадров. Это позволяет предположительно восстанавливать (реконструировать, интерполировать) отсутствующие кадры.

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

64 Методы сжатия информации с потерями

__________________________________________________________________________________

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

зом: IBBPBBIBBPBBIBB…

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

При сжатии изображений (как и при сжатии звуков) используются физиологические особенности человека. Установлено, что ошибки в изображении заметны глазом (визуально), если они превышают некоторый порог заметности. Различают пространственную и временную заметность искажений изображений.

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

Что касается временного восприятия цвета, то известно, что вариация цветности менее заметны, чем вариация яркости. Наиболее заметны изменения зеленого цвета, затем красного. Наименее заметны изменения синего цвета.

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

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

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

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

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

Методы сжатия информации с потерями

65

__________________________________________________________________________________

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

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

Некоторые сложные алгоритмы кодирования, например, алгоритм сжатия видеосигнала MPEG, не могут выполняться в реальном времени (при записи), поэтому кодек MPEG называется асимметричным.

66 Помехоустойчивое кодирование

___________________________________________________________________________________

3.6. Помехоустойчивое кодирование

Они хочут свою образованность показать, и говорят о чём-то непонятном.

А.П.Чехов

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

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

k1k2 ...km . Контрольные биты позволяют проверять целостность (неискажён-

ность) информационных битов машинного слова, а наиболее сложные коды могут не только обнаружить, но и исправить неверно принятые биты.

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

ваются обнаруживающими, а вторые – корректирующими кодами.

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

Проверочный бит k для n-битного двоичного слова b1b2 ...bn вычисляется по формуле:

 

1,

если b1 b2

... bn 1

k

0,

еслиb1 b2

... bn 0

 

В результате такого преобразования формируется (n+1) – битное слово b1b2 ...bn k , число единиц в котором будет четное.

Рассмотрим пример.

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

Помехоустойчивое кодирование

67

___________________________________________________________________________________

Идею обнаружения и определения неверно принятого бита можно проиллюстрировать с помощью кода Хэмминга. Для иллюстрации принципа кодирования можно воспользоваться диаграммами Вена [21]. Пусть

передаётся сообщение 1010. Окружности A, B и C дают семь сегментов. В четыре внутренних сегмента помещаются информационные биты числа 1010 (см. рис. a). Оставшиеся три сегмента дополняются контрольными битами (рис. b).

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

формации. Легко заметить, что в окружности С число единиц осталось четным, а окружностях А и В число единиц стало нечетным. Это говорит о том, что искаженный бит находится в сегменте, который принадлежит окружностям А и В, но не принадлежит окружности С (рис. d).

Рассмотрим пример нахождения искажённого бита с помощью кода Хэмминга. Места расположения информационных битов (ИБ) и контрольных битов (КБ) в передаваемых данных указаны в следующей таблице. В верхней строке таблицы записан порядковый номер каждого бита в машинном слове.

12

11

10

9

8

7

6

5

4

3

2

1

раз.

 

 

 

 

 

 

 

 

 

 

 

 

ИБ b

b

b

b

b

4

b

b

2

 

b

8

7

6

5

 

3

 

 

1

КБ

 

 

 

k8

 

 

 

 

k4

k2 k1

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

ным словом: b8b7b6b5k8b4b3b2k4b1k2k1 .

68 Помехоустойчивое кодирование

___________________________________________________________________________________

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

Разряд

12

11

10

9

8

7

6

5

4

3

2

1

Слово

b

b

b

b

k

8

b

4

b

b

2

k

4

b

k

2

k

1

 

8

7

6

5

 

 

3

 

 

1

 

 

ИБ

1

0

0

0

 

 

1

 

1

0

 

 

 

1

 

 

 

 

КБ

 

 

 

 

0

 

 

 

 

 

 

1

 

 

0

 

0

 

Вычислим значения контрольных битов на приеме. Будем обозначать проверочные биты на приеме со штрихом (чтобы отличить их от контрольных битов, сформированных на передающей стороне). Расчет производится по формулам [21]:

k1` b1 b2 b4 b5 b7 ; k2` b1 b3 b4 b6 b7 ; k4` b2 b3 b4 b8 ;

k8` b5 b6 b7 b8.

Используя предыдущие формулы и исходные данные, получим значения контрольных битов на приёме:

k1` 1 0 1 0 0 0; k2` 1 1 1 0 0 1; k4` 0 1 1 1 1;

k8` 0 0 0 1 1.

Расчёты показывают, что контрольные биты, сформированные на передающей и приёмной сторонах, различаются:

k1` k1 ;

k2` k2 ;

k4` k4 ;

k8` k8 .

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

Для определения неверно принятого бита требуется вычислить так называемый синдром S s8 s4 s2 s1 , где

s k ` k

;

s

2

k `

k

;

s

4

k `

k

;

s

8

k `

k

.

1

1

1

 

 

2

2

 

 

4

4

 

 

8

8

 

Используя результаты расчётов и исходные данные, можно определить

Помехоустойчивое кодирование

69

___________________________________________________________________________________

четыре бита синдрома:

 

 

 

s1 0 0 0;

s2 1 0 1;

s4 1 1 0;

s8 1 0 1.

Перевод синдрома S = 10102 из двоичной системы счисления в десятичную СС даёт значение S = 1010. Десятичное число 10 говорит о том, что десятый разряд принятых данных (b6) искажён, и этот бит нужно исправить (проинвертировать). Таким образом, после корректировки принятые данные будут иметь вид, показанный в следующей таблице. Напомним, что счет разрядов ведётся справа налево.

Разряд

12

11

10

9

8

7

6

5

4

3

2

1

Слово

b

b

b

b

k

8

b

4

b

b

2

k

4

b

k

2

k

1

 

8

7

6

5

 

 

3

 

 

1

 

 

ИБ

1

0

1

0

 

 

1

1

0

 

 

1

 

 

 

 

КБ

 

 

 

 

0

 

 

 

 

 

1

 

0

0

Устранить две ошибки (и более) в принятых данных позволяют циклические коды Боуза-Чоудхури-Хоквингема (БЧХ).

Циклический код БЧХ v(x) на передающей стороне формируется следующим образом [22]:

v(x) xn k u(x) (xn k u(x) mod(g(x))) ,

(1)

где x – фиктивная переменная; u(x) - кодируемая последовательность данных (информационные биты, сообщение); n – число бит в передаваемых данных (суммарное число информационных и контрольных бит); k - число информационных бит в машинном слове; mod - операция вычисления остатка от деления; + - операция конкатенации (соединения, склеивания) информационных и контрольных битов; g(x) – порождающий полином.

В приведённом выше выражении первое слагаемое описывает информационные биты, сдвинутые влево на xn k разрядов. Второе слагаемое опи-

сывает контрольные биты.

Выберем одну из разновидностей БЧХ с кодовой последовательностью длиной n = 15. Данный код формируется с помощью порождающего полинома восьмой степени (r = 8):

g(x) x8 x7 x6 x4 1.

Число информационных разрядов в таком коде k = n – r = 15 – 8 = 7. Код позволяет исправить две ошибки (s = 2).

Рассмотрим порядок построения циклического кода БЧХ на передающей стороне.

Дано 7 информационных бит 1011011. Запишем информационные биты в виде полинома:

70 Помехоустойчивое кодирование

___________________________________________________________________________________

 

 

 

u(x) x6 x4 x3 x 1.

 

 

(2)

Порядок построения полинома u(x) иллюстрирует следующая таблица:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Номера

7

 

6

5

 

4

 

3

2

1

 

 

разрядов

 

 

 

 

 

 

 

 

 

 

 

 

Слагаемые

x6

 

x5

 

x4

x3

 

x2

x

1

 

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

вие в полиноме (2) слагаемых x2 и x5 .

Для нахождения первого слагаемого в выражении (1) нужно полином

(2) умножить на

x8

(заметим, что число

контрольных

битов

n k 15 7 8 ):

 

 

 

 

xn k u(x) x8

(x6

x4 x3 x 1) x14 x12

x11 x9 x8 .

(3)

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

Для нахождения контрольных битов нужно найти остаток от деления полинома (3) на порождающий полином g(x):

(x14 x12 x11 x9 x8 ) mod(x8 x7 x6 x4 1)

x6 x5 x3 x2 1.

(4)

Именно контрольные биты (4) позволяют на приёмной стороне определить, есть ли искажения и при необходимости восстановить неверно принятые биты. Сформированный в соответствии с (1) помехоустойчивый код описывается полиномом:

v(x) x14 x12 x11 x9 x8 x6 x5 x3 x2 1.

(5)

Чтобы проверить верно ли сформирован полином (5), достаточно его разделить на порождающий полином g(x). Если остаток от деления равен нулю, то код сформирован правильно. В соответствии с полиномом (5) в линию

нужно передать двоичный код:

 

101101101101101.

(6)

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