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

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


6.5.1. В-слои

Каждый блок деления макроблока в моде inter В-слоя может быть спрогнозирован по одному или двум ссылочным снимкам, которые располагаются в хронологическом порядке до или после текущего снимка. В зависимости от ссылочных снимков, сохраняемых кодером и декодером (см. следующий параграф), это обеспечивает широкий выбор параметров прогнозирования макроблоков типа В. На рис. 6.40 приведены три примера: (а) один прошлый и один будущий ссылочный снимок (аналогично прогнозам В-кадров в предыдущих стандартах MPEG), (б) два прошлых снимка и (в) два будущих ссылочных снимка.

Рис. 6.40. Примеры прогнозов для блоков В-макроблоков: (а) прошлое/будущее, (б) прошлое, (в) будущее.

6.5.1.1. Ссылочные снимки

В-слои используют два списка ранее закодированных ссылочных снимков — список 0 и список 1, в которых хранятся снимки с близкими и давними сроками (см. § 6.4.2). Оба списка могут хранить прошлые и будущие сжатые снимки (которые будут демонстрироваться до или после текущего кадра). Организация снимков с давними сроками в этих списках похожа на организацию снимков, приведенную в § 6.4.2, а при хранении снимков с близкими сроками по умолчанию принят следующий порядок индексов в этих списках.

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

Список 1: ближайший будущий снимок имеет индекс 0, за ним следуют другие будущие снимки (с увеличением счетчика снимков), а потом прошлые снимки.

Пример

Декодер Н.264 хранит 6 снимков с близкими сроками с их порядковыми номерами сметчика снимков 123, 125, 126, 128, 129, 130. Текущий снимок имеет номер 127. Все шесть ссылочных снимков проиндексированы в списках 0 и 1, и они хранятся в буфере снимков с близкими сроками в порядке, приведенном в табл. 6.14.

Таблица 6.14. Буфер индексов снимков с близкими сроками (прогноз В-снимков, текущий снимок 127).

Индекс

Список 0

Список 1

0

126

128

1

125

129

2

123

130

3

128

126

4

129

125

5

130

123

Рис. 6.41. Примеры мод прогнозов для макроблоков В-слоев.

Выбранный индекс посылается в виде слова экспоненциального кода Голомба (см. § 6.4.13.1), и поэтому самым эффективным выбором ссылочного индекса (с наименьшим кодовым словом) будет индекс 0 (т.е. предыдущий закодированный снимок из списка 0 или следующий снимок из списка 1).

Таблица 6.15. Опции прогнозов для макроблоков В-слоев.

Блоки

Опции

16 х 16

Прямая, список 0, список 1 или двунаправленная

16 х 8 или 8 х 16

Список 0, список 1 или двунаправленная

(выбираются отдельно для каждого блока)

8x8

Прямая, список 0, список 1 или двунаправленная

(выбираются отдельно для каждого блока)

6.5.1.2. Опции прогноза

Части макроблоков из В-слоев могут быть спрогнозированы одним из следующих способов: прямая мода (см. § 6.5.1.4), компенсация движения по снимкам из списка 0, компенсация движения по снимкам из списка 1 или двунаправленный прогноз компенсации движения одновременно по спискам 0 и 1 (см. § 6.5.1.3). Для каждого блока деления макроблока можно выбрать различные моды прогнозирования (см. табл. 6.15). Если используются блоки 8 х 8, то мода, выбранная для каждого блока 8x8, применяется к каждому подблоку этого блока. На рис. 6.41 показаны два примера допустимых комбинаций мод прогнозов. Для макроблока слева, разделенного на блоки 16 х 8, применяется прогнозирование по списку 0 и двунаправленное прогнозирование, а для макроблока справа, поделенного на 4 блока 8x8, используются следующие моды: прямая, список 0, список 1 и двунаправленный прогноз.

6.5.1.3. Двунаправленный прогноз

В моде двунаправленного прогноза ссылочный блок (имеющий размер текущего блока или подблока) строится по спискам 0 и 1 ссылочных снимков. Из каждого списка 0 и 1 извлекается по одной ссылочной области (значит, потребуется два вектора движения), и каждый сэмпл блока-прогноза вычисляется как среднее значение соответствующих сэмплов прогнозных областей из списков 0 и 1. Если не используется взвешенное прогнозирование (см. § 6.5.2), то применяется следующая формула:

,

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

Пример

Макроблок прогнозируется в моде B_Bi_16х16 (т.е. двунаправленный прогноз всего макроблока). На рис, 6.42 и 6.43 показаны ссылочные области компенсации движения из списков 0 и 1 ссылочных снимков, а на рис. 6.44 изображен прогнозный блок, построенный по эти двум ссылочным областям.

Векторы движения списков 0 и 1 двунаправленных прогнозов макроблоков или блоков сами прогнозируются по окрестным векторам движения, которые имеют такое же временное направление. Например, вектор текущего макроблока, указывающий на кадр в прошлом, прогнозируется по другим соседним векторам, которые также указывают на прошлые кадры.

6.5.1.4. Прямой прогноз

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

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

В пространственной прямой моде списки 0 и 1 прогнозированных векторов вычисляются следующим образом. Прогнозные списки 0 и 1 строятся по методу, описанному в § 6.4.5.3. Если близкий макроблок или его часть в списке 1 ссылочных снимков имеет вектор движения, который меньше чем ±1/2 сэмпла яркости по абсолютной величине (и в некоторых других случаях), то один или оба прогнозных вектора обнуляются. В противном случае прогнозные списки 0 и 1 векторов используются для совершения двуналравленной компенсации движения. Во временной прямой моде декодер выполняет следующие шаги.

Рис. 6.42. Ссылочная область (снимок списка 0).

Рис. 6.43. Ссылочная область (снимок списка 1).

Рис. 6.44. Прогноз (невзвешенный).

1. Найти ссылочный снимок списка 0 для близкого макроблока или его части на снимке списка 1. Эта ссылка списка 0 становится ссылкой первого списка для текущего макроблока или его части.

2. Найти вектор MV списка 0 для близкого макроблока или его части на снимке списка 1.

3. Перемасштабировать вектор MV с помощью «расстояния" — порядкового счетчика снимков между текущим снимком и снимком списка 1: это будет новый вектор MV1 списка 1.

4. Перемасштабировать вектор MV с помощью «расстояния» — порядкового счетчика снимков между текущим снимком и снимком списка 0: это будет новый вектор MV0 списка 0.

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

Рис. 6.45. Пример прямого вектора движения.

Пример

Ссылка из списка 1 для текущего макроблока попадает в два снимка после текущего кадра (рис. 6.45). Близкий макроблок на ссылке списка 1 имеет вектор MV (+2,5, +5), указывающий на ссылочный снимок списка 0, который оказывается за три снимка до текущего снимка. Декодер вычисляет вектор MV1 (-1, -2) и вектор MV0 (+1,5, +3), указывающие соответственно на снимки списков 1 и 0. Эти векторы получаются из MV и имеют модули, пропорциональные расстоянию счетчика порядка снимков до ссылочных кадров списков 0 и 1.

 

 



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