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

(по цифровому вещанию) Dvorkovich_V_Cifrovye_videoinformacionnye_sistemy

.pdf
Скачиваний:
258
Добавлен:
15.03.2016
Размер:
23.26 Mб
Скачать

Глава14. Стандарты кодирования динамических изображений

Флаг_I_слайса (intra_slice_flag) — 1 бит. Если он равен 1, то в потоке присутствуют следующие два параметра: I_слайc (intra_slice) и

зарезервированные_биты (reserved_bits). Этот параметр может быть установлен 0 без ущерба для декодирования.

I_слайс (intra_slice) — 1 бит. Если он равен 1, то все макроблоки слайса должны быть I-блоками. Этот параметр может быть опущен из потока без ущерба для декодирования, он предназначен для реализации быстрого просмотра в цифровых системах хранения данных.

Зарезервированные_биты (reserved_bits) — 7 битов, которые должны быть равны 0.

Дополнительный_бит_слайса (extra_bit_slice) — 1 бит. Если он равен 0, то за ним не следует никаких дополнительных данных; в противном случае за ним следуют

Дополнительные_данные_слайса (extra_information_slice), которые могут использоваться в будущих расширениях стандарта.

На уровне макроблоков передаются все данные макроблоков. Макроблок содержит область из четырех блоков яркости размером 8 × 8 пикселов и пространственно соответствующих ей областей компонент цветности. Термин «макроблок» может относиться или к источнику и декодированным данным, или к соответствующим кодированным элементам данных. В соответствии с форматом цветности макроблок содержит 6 (4 : 2 : 0), 8 (4 : 2 : 2) или 12 (4 : 4 : 4) блоков.

Макроблоки могут быть разного типа в зависимости от типа кадра. В I-кад- рах все макроблоки внутрикодированные. В P-кадрах макроблоки могут быть пропущенными, внутрикодированными, кодированными с предсказанием вперед. В В-кадрах кроме типов макроблоков, встречающихся в Р-кадрах, передаются макроблоки, кодированные с двунаправленным предсказанием и кодированные с предсказанием назад. Пропущенный макроблок — это макроблок, для которого не передается никакой информации. В стандарте MPEG-2 определены следующие типы макроблоков в I-, P-, и B-кадрах, показанные в табл. 14.18–4.20.

Таблица 14.18. Типы макроблоков и их коды для I-кадра

Тип

Код

Тип

Код

 

 

 

 

intra-d

1

intra-q

01

 

 

 

 

Таблица 14.19. Типы макроблоков и их коды для P-кадра

Тип

Код

Тип

Код

pred-mc

1

pred-mcq

0001 0

 

 

 

 

pred-c

01

pred-cq

0000 1

 

 

 

 

pred-m

001

intra-q

0000 01

intra-d

0001 1

skipped

нет кода

 

 

 

 

Аббревиатуры типов макроблока расшифровываются следующим образом:

intra — I-макроблок (устанавливает значение флага макроблок_I = 1);

d — используется коэффициент квантования по умолчанию (устанавливает значение флага макроблок_с_изменением_уровня_квантования = 0);

q — изменяемый коэффициент квантования (устанавливает значение флага

макроблок_с_изменением_уровня_квантования = 1);

14.4. MPEG-2. Кодирование динамических изображений

Таблица 14.20. Типы макроблоков и их коды для B-кадра

Тип

Код

Тип

Код

 

 

 

 

pred-i

10

intra-d

0001 1

pred-ic

11

pred-icq

0001 0

 

 

 

 

pred-b

010

pred-bcq

0000 10

 

 

 

 

pred-bc

011

pred-fcq

0000 11

pred-f

0010

intra-q

0000 01

 

 

 

 

pred-fc

0011

skipped

нет кода

 

 

 

 

pred — предсказание движения (не I-блок) (устанавливает значение флага

макроблок_I=0);

m — компенсация движения с передачей вектора движения (устанавливает значение флага макроблок_с_движением_вперед (macroblock_motion_forward) = 1);

c — кодирование и передача как минимум одного блока в макроблоке (устанавливает значение флага макроблок_кодируется = 1);

i — блок с двунаправленным предсказанием движения (interpolated) (устанавливает значение флагов макроблок_с_движением_вперед=1 и макроблок_с_движением_назад=1);

f — предсказание движения вперед (forward) (устанавливает значение флага макроблок_с_движением_вперед = 1);

b — предсказание движения назад (backward) (устанавливает значение флага макроблок_с_движением_назад = 1);

skipped — пропущенный макроблок (для которого не передается никакой код).

Пропущенные макроблоки в B-кадрах имеют тот же вектор движения и тот же тип макроблока, что и предыдущий (базовый) макроблок, в то время как в P-кадрах вектор движения пропущенного макроблока равен нулю.

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

Escape_код_макроблока (macroblock_escape) — константа из 11 битов со значением «0000 0001 000», которая используется, если адрес текущего макроблока превышает адрес предыдущего макроблока более чем на 33. Если, например, было пропущено более 66 макроблоков, то адрес макроблока кодируется с помощью двух кодов escape_код_макроблока и кода инкремент_адреса_макроблока. Элемент видеопотока MPEG- 1 заполнение_макроблока (macroblock_stu ng) не используется в MPEG-2.

Инкремент_адреса_макроблока (macroblock_address_increment) —

код переменной длины, показывающий разность между адресом текущего макроблока и адресом предыдущего непропущенного макроблока, параметр инкремент_адреса_макроблока не может задавать приращение адреса больше 33, которое кодируется с помощью кода escape_код_макроблока. Первый макроблок в кадре имеет адрес 0.

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

Глава14. Стандарты кодирования динамических изображений

Вэлемент видеопотока типы_макроблока() (macroblock_modes()) входят нижеследующие переменные.

Тип_макроблока (macroblock_type) — код переменной длины, показывающй тип текущего макоблока.

Макроблок_с_изменением_уровня_квантования (macroblock_quant),

Макроблок_с_движением_вперед (macroblock_motion_forward),

Макроблок_с_движением_назад (macroblock_motion_backward,

Макроблок_кодируется (macroblock_pattern),

Макроблок_I (macroblock_intra) – однобитовые флаги признаков макроблока, извлекаемые из тип_макроблока, как описано выше, и влияющие на процесс декодирования.

Флаг_пространственно_временного_веса (spatial_temporal_weight _code_flag) — 1 бит, флаг признаков макроблока, извлекаемый из тип_ макроблока и используемый в потоках с пространственной масштабируемостью.

Движение_по_кадрам (frame_motion_type) – 2 битa, обозначающих предсказание движения в макроблоке. Если покадровое_предсказание_и_ДКП=1 или скрытые_вектора_движения=1, то данный элемент опускается из потока, и предсказание движения осуществляется по умолчанию по кадру (табл. 14.21).

Таблица 14.21. Коды параметра движение_по_кадрам

 

Класс_

 

 

 

 

Код

простран-

Тип

Счетчик_

Формат_

При-

ственно_

векторов_

векторов_

предсказания

знак_dmv

 

временно-

движения

движения

 

 

 

 

го_веса

 

 

 

 

00

 

зарезервиро-

 

 

 

 

вано

 

 

 

 

 

 

 

 

01

0, 1

по полям

2

поле

0

01

2, 3

по полям

1

поле

0

10

0, 1, 2, 3

по кадрам

1

кадр

0

11

0, 2, 3

dual-prime

1

поле

1

Движение_по_полям (field_motion_type) — 2 битa, обозначающих предсказание движения в макроблоке. Для I-макроблока если скрытые_вектора_ движения=1, то данный элемент опускается из потока, и предсказание движения осуществляется по умолчанию по полям (табл. 14.22).

Таблица 14.22. Коды параметра движение_по_полям

 

Класс_

 

 

 

 

Код

простран-

Тип

Счетчик_

Формат_

При-

ственно_

векторов_

векторов_

предсказания

знак_dmv

 

временно-

движения

движения

 

 

 

 

го_веса

 

 

 

 

00

 

зарезервиро-

 

 

 

 

вано

 

 

 

 

 

 

 

 

01

0, 1

по полям

1

поле

0

10

0, 1

16 × 8

2

поле

0

11

0

dual-prime

1

поле

1

14.4. MPEG-2. Кодирование динамических изображений

Декодировать_тип_ДКП (decode_dct_type) – 1 бит, определяющий наличие следующего элемента тип_ДКП (dct_type) в потоке и значение которого зависит от нескольких элементов потока:

if ( (структура_изображения == «кадр» ) && (покадровое_предсказание_и_ДКП == 0) && (макроблок_I || макроблок_кодируется) ) декодировать_тип_ДКП = 1;

else

декодировать_тип_ДКП = 0.

Тип_ДКП (dct_type) — 1 бит, указывающий, кодирован ли макроблок с ДКП по кадру или полю. Если тип_ДКП=1, то макроблок кодирован по полю. Тип_ДКП включен в битовый поток, только если декодированный тип_ДКП не равен нулю. Если декодировать_тип_ДКП=0, то

тип_ДКП (используемый в дальнейшем процессе декодирования) должен определяться согласно табл. 14.23.

Таблица 14.23. Значение тип_ДКП, если тип_ДКП не включен в битовый поток

Условие

Тип_ДКП

структура_изображения == «поле»

не используется, потому что в поле не

может быть различия кадр/поле

 

покадровое_предсказание_и_ДКП

0 («кадр»)

== 1

 

!(макроблок_I ||

не используется — макроблок

макроблок_кодируется)

некодированный

макроблок пропущен

не используется — макроблок

некодированный

 

В элемент видеопотока вектора_движения(s) (motion_vectors(s)) входят следующие переменные.

Счетчик_векторов_движения (motion_vector_count), формат_векторов_движения (mv_format), признак_dmv (dmv) получаются из движение_по_полям или движение_по_кадрам, как показано в таблицах 14.21 и 14.22.

Селектор_вертикального_поля[r][s] (motion_vertical_field_select [r][s]) — 1 бит, который указывает, какое из полей должно использоваться для формирования предсказания. Если он равен 0, то должно использоваться верхнее поле, если 1 — то нижнее.

Вэлемент видеопотока вектор_движения(r,s) (motion_vector(r,s)) входят следующие переменные.

Код_движения[r][s] (motion_code[r][s]),

Остаток_движения[r][s] (motion_residual[r][s]),

Вектор_движения_dm (dmvector[t]).

Они передаются в виде кодов переменной длины, по которым восстанавливаются векторы движения.

В элемент видеопотока кодируемые_блоки() (coded_block_pattern()) входят следующие переменные.

Глава14. Стандарты кодирования динамических изображений

Кодируемые_блоки420 (coded_block_pattern_420) — код переменной длины, по которому определяются блоки, подлежащие декодированию. Поскольку некоторые блоки имеют только нулевые коэффициенты, их не надо кодировать, и соответствующий бит в параметре cbp устанавливается

вноль. Например, если кодируются первый и пятый блоки, cbp=100010

вдвоичном формате. Таким образом, если код_блока[i] (pattern_code[i]) равен 1, где i может меняться от 0 до (количество_блоков - 1), то коды коэффициентов ДКП для данного блока с номером i содержатся в данном макроблоке. Число количество_блоков, которое определяет число блоков в макроблоке, определяется из формата цветности и равно 6 для формата 4 : 2 : 0, 8 — для 4 : 2 : 2 и 12 — для 4 : 4 : 4.

Кодируемые_блоки1 (сoded_block_pattern_1) и

Кодируемые_блоки2 (coded_block_pattern_2) — 2 и 6 битов соответственно, которые используются для форматов цветности 4 : 2 : 2

и 4 : 4 : 4.

Стандарт MPEG-4 [5.44–5.47] можно рассматривать как совершенствование стандарта MPEG-2 по двум направлениям: обеспечение широкого набора инструментов при работе с оцифрованным видеоматериалом, что расширило область применения стандарта, и реализация более эффективных алгоритмов компрессии, особенно в части обработки динамических изображений, принципы которых изложены в разделе MPEG-4, Часть 2 — Видео [5.45].

MPEG-4 определяет стандартизированные технологические элементы, позволяющие интегрировать идеологию создания, распространения и доступа к содержанию в цифровом телевидении, интерактивных графических приложениях и интерактивных мультимедийных службах [5.65–5.67]. Этот стандарт обеспечивает:

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

описание композиции этих объектов для создания составных медийных объектов, которые образуют аудиовизуальную сцену;

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

взаимодействие с аудиовизуальной сценой, созданной на приемном конце.

14.5. MPEG-4. Обобщенное кодирование аудиовизуальных объектов

14.5.1.Кодированное представление медийных объектов

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

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

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

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

MPEG-4 предполагает стандартизованный путь описания сцен, позволяющий:

группировать примитивные медиаобъекты для образования составных медиаобъектов;

перемещать примитивные и составные медиаобъекты в заданной координатной системе;

применять преобразования геометрического или акустического вида медиаобъекта;

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

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

Описание сцены строится во многих отношениях так же, как и в языке моделирования виртуальной реальности VRML (Virtual Reality Modeling language). На рис. 14.22 приведена в качестве примера сцена, реализуемая с применением стандарта MPEG-4 [5.65].

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

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

Глава14. Стандарты кодирования динамических изображений

Рис. 14.22. Пример сцены, реализуемой стандартом MPEG-4

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

Синхронизированная доставка потока данных отправителя получателю специфицирована в терминах слоя синхронизации и доставки, которые содержат двухслойный мультиплексор (рис. 14.23) [5.65].

Первый слой мультиплексирования управляется согласно спецификации DMIF (Delivery Multimedia Integration Framework). Это мультиплексирование может быть реализовано определенным в MPEG мультиплексором FlexMux, который позволяет группировать элементарные потоки ES (Elementary Streams) с низкой избыточностью. Мультиплексирование на этом уровне может использоваться, например, для группирования ES с подобными требованиями по качеству передачи, чтобы уменьшить число сетевых соединений или значения задержек.

Слой «TransMux» (Transport Multiplexing) на рис. 14.23 моделирует уровень транспортных услуг, удовлетворяющих заданным требованиям.

MPEG-4 специфицирует только интерфейс этого слоя, в то время как остальные требования к пакетам данных будут определяться транспортным протоколом. Любой существующий стек транспортных протоколов, например, RTP/UDP/IP, AAL5/ATM, или Транспортный поток MPEG-2 поверх подходящего канального уровня может стать частным случаем TransMux. Выбор оставлен за конечным пользователем или сервис-провайдером, и позволяет использовать MPEG-4 с широким спектром операционного окружения.

14.5. MPEG-4. Обобщенное кодирование аудиовизуальных объектов

Рис. 14.23. Модель системного слоя MPEG-4

Использование мультиплексора FlexMux является опциональным, и этот слой может быть пустым, если нижележащий слой TransMux предоставляет все необходимые функции. Слой синхронизации, однако, присутствует всегда.

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

Системные части MPEG-4 определяют взаимодействие между аудио и видеокомпонентами, которые образуют сцену.

14.5.2. Аудиообъекты

MPEG-4/Аудио обеспечивает реализацию широкого перечня приложений — от речевой информации до высококачественного многоканального звука, и от естественных до синтетических звуков. В частности, он поддерживает высокоэффективную презентацию аудиообъектов, содержащих:

кодированную речь при скоростях обмена от 2 до 24 кбита/с;

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

общую кодировку звуковых потоков от низких скоростей с относительно низким качеством до высококачественных : рабочий диапазон начинается от 6 кбитов/с (при полосе звукового сигнала ниже 4 кГц) и распространяет-

Глава14. Стандарты кодирования динамических изображений

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

поддержку синтезированного звука с применением декодера структурированного звука (Structured Audio Decoder), который позволяет использовать управление музыкальными инструментами с привлечением специального языка описания;

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

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

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

изменение шага без изменения временного масштаба в процессе кодирования или декодирования, что создает, например, возможность для изменения голоса или для приложений типа караоке;

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

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

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

масштабируемость сложности декодера дает возможность заданную скорость потока данных дешифровать посредством декодеров с различным уровнем сложности;

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

В MPEG-4 определены восемь аудиопрофилей, список и характерные черты которых приведены в табл. 14.24.

14.5.3. Видеообъекты

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

14.5. MPEG-4. Обобщенное кодирование аудиовизуальных объектов

Таблица 14.24. Профили MPEG-4/Аудио

Аудио профили

Специфические особенности

 

 

 

 

 

Использует параметрическое кодирование голоса HVXC

 

Разговорный

(Harmonic Vector Excitation Coding), рассчитанное на низкие

1.

скорости передачи, либо кодер CELP (Code Excited Linear

профиль

 

Prediction) — узкополосный кодер голоса с линейным

 

 

 

 

предсказанием, либо интерфейс текст-голос.

 

 

 

 

 

Обеспечивает синтез аудио, использующий SAOL (Structured

2.

Профиль

Audio Orchestra Language), волновые таблицы и интерфейс

синтеза

текст-голос для генерации звука и речи при очень низких

 

 

 

скоростях передачи.

 

 

 

 

Масштабируе-

Удобен для масштабируемого кодирования речи и музыки для

 

таких сетей, как Интернет и NADIB (Narrowband Audio DIgital

3.

мый

Broadcasting). Диапазон скоростей передачи лежит в пределах от

 

профиль

 

6 до 24 кбита/с при ширине полосы 3,5 и 9 кГц.

 

 

 

 

 

4.

Главный

Является расширенным набором всех других профилей,

профиль

содержит средства для синтетического и естественного аудио.

 

 

 

 

 

 

Содержит кодировщик голоса CELP и простой кодировщик AAC

 

Профиль высоко-

(Advanced Audio Coding). Масштабируемое кодирование может

5.

качественного

быть выполнено с помощью AAC масштабируемого объектного

 

аудио

типа. Опционно может использоваться синтаксис потока ER

 

 

(Error Resilient), устойчивый к ошибкам.

 

 

 

 

Профиль аудио с

Содержит HVXC и CELP кодировщики голоса (опционно

 

малой

6.

использующие синтаксис ER), AAC-кодеры с низкой задержкой

задержкой (Low

 

и интерфейс текст-голос TTSI (Text to Speech Interface).

 

Delay Audio)

 

 

 

 

 

 

Профиль

Содержит все средства кодирования натурального аудио,

7.

натурального

доступные в MPEG-4.

 

аудио

 

 

 

Профиль

Содержит AAC масштабируемые объектные типы с малой

 

задержкой, включая TwinVQ (Transform-domain weighted

 

межсетевого

 

interleaved Vector Quantization) и BSAC (Bit Sliced Arithmetic

 

мобильного

8.

Coding). Этот профиль предназначен для расширения

аудио (Mobile

 

телекоммуникационных приложений за счет не-MPEG

 

Audio

 

алгоритмов кодирования речи с возможностями

 

Internetworking)

 

высококачественного аудиокодирования.

 

 

 

 

 

искусственных двумерной и трехмерной графики (например, сжатие параметров сетки, синтетического текста).

Стандарт MPEG-4 Видео поддерживает: типичные скорости битового потока от 5 кбитов/с до более чем 1 Гбит/сек; прогрессивную и чересстрочную развертку видео; типичные разрешения от sub-QCIF (128 × 96) до «студийного» (4000 × 4000).

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

Стандарт предоставляет возможность контекстно-ориентированного кодирования изображений и видео, что позволяет раздельно декодировать и реконстру-