Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


5.4.1.1. Бинарное кодирование формы

Для каждого макроблока передается код bab_type. Этот код сигнализирует о том, является ли данный макроблок прозрачным (т.е. он не входит в VOP, и, значит, его не надо кодировать), непрозрачным (он является внутренним для текущего VOP, поэтому движение и текстура кодируются по обычной схеме) или граничным (часть его прозрачна, а часть — нет). На рис. 5.30 показан объект VOP, а на рис. 5.31 приведена его бинарная маска, которая информирует что белые пикселы являются частью данного VOP, а черные пикселы лежат вне его. Для граничных макроблоков (см., например, рис. 5.32) необходимо закодировать бинарную альфа-маску для обозначения прозрачных и непрозрачных пикселов (рис. 5.33).

Рис. 5.30. VOP.

Рис. 5.31. Бинарная альфа-маска (всего VOP)

Рис. 5.32. Граничный макроблок.

Рис. 5.33. Бинарная альфа-маска (граничный макроблок).

Бинарная альфа-маска (ВАВ) каждого граничного макроблока кодируется с помощью контекстно-зависимого арифметического кодера (CAE). Необходимо закодировать значение X пиксела BAD, где X — это 0 или 1. Сначала для текущего пиксела вычисляется контекст. Контекстным шаблоном называется области из n ранее закодированных соседних пикселов (пространственные соседи для ВАВ, кодируемых в моде intra или пространственные и временные соседи для альфа-блоков, кодируемых в моде inter). Эти и значений пикселов образуют слово из n бит, которое называется контекстом данного пиксела X. Имеется всего  различных контекстов. Пусть число Р(0) — вероятность того, что X ранен 0 при условии данного контекста. Это число хранится кодером и декодером для каждого возможного n-битного контекста. Каждый пиксел маски X кодируется следующим образом.

1. Вычислить контекст X.

2. Найти соответствующее число Р(0) в таблице вероятностей.

3. Закодировать пиксел X арифметическим кодером (см. обзор арифметического кодирования в гл. 3). Соответствующий подинтервал совпадает с , если X = 0 (черный), и он равен , если X = 1 (белый).

Кодирование блоков ВАВ в моде intra. В моде intra контекстный шаблон текущего пиксела маски формируется по его 10 пространственным соседям, которые были ранее закодированы (на рис. 5.34 это пикселы с  по ). Контекстом пиксела  служит 10-битное слово . Каждая из 1024 контекстных вероятностей занесена в таблицу стандарта MPEG-4 Visual в виде целого числа от 0 до 65 535, и соответствующая вероятность Р(0) получается делением этого числа на 65 535.

 

Рис. 5.34. Контекстный шаблон для ВАВ в моде intra.

Примеры.

Контекст

Контекст

 

 

(двоич.)

(десятич.)

Описание

Р(0)

0000000000

0

Все контекстные пикселы 0

65267/65535=0,9959

0000000001

1

, остальные 0

16468/65535=0,2513

1111111111

1023

Все контекстные пикселы 1

235/65535=0,0036

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

Рис. 5.35. Контекстный шаблон для ВАВ в моде inter.

Кодирование блоков ВАВ в моде inter. Контекстный шаблон (рис. 5.35) состоит из 9 пикселов, из которых 4 принадлежат текущему VOP (пикселы с  по ), а еще 5 — ссылочному VOP (пикселы с  по ). Позиция центрального контекстного пиксела на ссылочном VOP () может быть смещена по отношению к позиции X на некоторый целый вектор, что дает возможность кодировать ВАВ в моде inter с помощью компенсации движения. Этот вектор «формы» MVs можно выбрать независимо от «текстурного» вектора движения. Всего имеется 9 контекстных пикселов, и, следовательно, необходимо хранить таблицу, состоящую из 29 = 512 вероятностей Р(0).

Примеры.

Контекст

Контекст

Описание

 

(двоич.)

(десятич.)

Р(0)

000000001

1

,  остальные 0

, остальные 0

, , остальные 0

62970/65535=0,9609

000100000

64

23130/65535=0,3529

000100001

65

7282/65535=0,1111

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

Для каждого граничного ВАВ в моде inter необходимо закодировать один вектор MVs. Для объектов P-VOP ссылочные VOP - это предыдущие объекты I-VOP или P-VOP, а для B-VOP это "ближайшие по времени» объекты I-VOP или P-VOP.

 



<< ПредыдущаяОглавлениеСледующая >>