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

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


5.5.3. Мелкозернистая масштабируемость

Мелкозернистая масштабируемость (FGS) [5] является методом кодирования видеопоследовательностей с базовым и улучшающим слоями. Улучшающий слой можно удалить во время или после кодирования (при этом уменьшается битовая скорость и понижается качество видео) для обеспечения гибкого контроля за скоростью передачи сжатого потока. FGS может быть полезной в приложениях потокового видео, когда заранее неизвестна ширина полосы передачи данных. В типичном сценарии последовательность кодируется базовым и улучшающим слоем. При получении запроса на передачу видеопоследовательности с заданной битовой скоростью потоковый сервер посылает базовый слой и урезанную версию улучшающего слоя. Процент урезания выбирается так, чтобы выходной битовый поток удовлетворял заданной битовой скорости. Таким образом, можно максимизировать качество заказанной видеопоследовательности без необходимости перекодировать весь видеоклип.

Рис. 5.64. Блок-схема кодера FGS (упрощенно).

Рис. 5.65. Блок остаточных коэффициентов (верхний левый угол).

Кодирование. На рис. 5.64 показана упрощенная блок-схема кодера FGS (отсутствует компенсация движения). В базовом слое текстура (после компенсации движения) преобразуется прямым DCT, квантуется и кодируется. Коэффициенты квантования деквантуются (укрупняются) и результат вычитается из неквантованных коэффициентов DCT для образования множества остаточных коэффициентов. Эти остаточные коэффициенты каждого блока кодируются в виде ряда битовых плоскостей. Затем остаточные коэффициенты переупорядочиваются сканированием по зигзагу. Биты старшего разряда каждого остаточного коэффициента (нули или единицы старшей битовой плоскости) кодируются в первую очередь, а за ними кодируются остальные битовые плоскости в порядке старшинства (разряда) битов.

Пример

На рис. 5.65 показан блок остаточных коэффициентов (все отсутствующие коэффициенты равны нулю). После сканирования по зигзагу получается следующая последовательность

+13,-11,0,0, +17,0,0,0, -3,0,0, ...

Битовые плоскости, отвечающие абсолютной величине каждого остаточного коэффициента, приведены в табл. 5.6. В этом примере старшей ненулевой плоскостью является плоскость 4 (так как максимальная абсолютная величина коэффициентов равна 17).

Таблица 5.6. Битовые плоскости остаточных коэффициентов.

Величина

+13

-11

0

0

+ 17

0

0

0

-3

0...

Плоскость 4 (MSB)

0

0

0

0

1

0

0

0

0

0...

Плоскость 3

1

1

0

0

0

0

0

0

0

0...

Плоскость 2

1

1

0

0

0

0

0

0

0

0...

Плоскость 1

0

0

0

0

0

0

0

0

1

0...

Плоскость 0 (LSB)

1

1

0

0

1

0

0

0

1

0...

Таблица 5.7. Кодированные величины.

Плоскость

Кодированные величины

4

(4, ЕОР)(+)

3

(0)(+)(0,ЕОР)(-)

2

(0, ЕОР)

1

(1)(6,ЕОР)(-)

0

(0)(0)(2)(3, ЕОР)

Каждая битовая плоскость состоит из ряда нулей и единиц. Единицы кодируются в виде пары («серия», ЕОР), где ЕОР обозначает «конец битовой плоскости» (End Of bitPlane), и все пары («серия», ЕОР) передаются с помощью кодов переменной длины. Всякий раз, когда кодируется старший бит коэффициента, за ним в битовый поток направляется знаковый бит. В табл. 5.7 приведены закодированные значения всех битовых плоскостей. Плоскость 4 состоит из четырех нулей, за которыми идет единица. Поскольку она является последним ненулевым элементом, то ей соответствует код (4,ЕОР). Поскольку этот бит является старшим коэффициента +17, то за его кодом ставится знаковый бит этого коэффициента, т.е. (+).

Это пример иллюстрировал обработку одного блока. Процедура кодирования для всего кадра состоит в следующем.

1. Найти старший (ненулевой) битовый разряд среди всех остаточных коэффициентов кадра.

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

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

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

Рис. 5.66. Диаграмма декодера FGS (упрощенная).

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

+8, -8,0,0, +16,0,...

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

Таблица 5.8. Декодированные величины (урезанные после 3-ей плоскости).

Плоскость 4 (MSB)

0

0

0

0

1

0

0

0

0

0...

Плоскость 3

1

1

0

0

0

0

0

0

0

0...

Плоскость 2

0

0

0

0

0

0

0

0

0

0...

Плоскость 1

0

0

0

0

0

0

0

0

0

0...

Плоскость 0 (LSB)

0

0

0

0

0

0

0

0

0

0...

Величина

+8

-8

0

0

+16

0

0

0

0

0...

 



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