5.5.3. Мелкозернистая масштабируемостьМелкозернистая масштабируемость (FGS) [5] является методом кодирования видеопоследовательностей с базовым и улучшающим слоями. Улучшающий слой можно удалить во время или после кодирования (при этом уменьшается битовая скорость и понижается качество видео) для обеспечения гибкого контроля за скоростью передачи сжатого потока. FGS может быть полезной в приложениях потокового видео, когда заранее неизвестна ширина полосы передачи данных. В типичном сценарии последовательность кодируется базовым и улучшающим слоем. При получении запроса на передачу видеопоследовательности с заданной битовой скоростью потоковый сервер посылает базовый слой и урезанную версию улучшающего слоя. Процент урезания выбирается так, чтобы выходной битовый поток удовлетворял заданной битовой скорости. Таким образом, можно максимизировать качество заказанной видеопоследовательности без необходимости перекодировать весь видеоклип. Рис. 5.64. Блок-схема кодера FGS (упрощенно). Рис. 5.65. Блок остаточных коэффициентов (верхний левый угол). Кодирование. На рис. 5.64 показана упрощенная блок-схема кодера FGS (отсутствует компенсация движения). В базовом слое текстура (после компенсации движения) преобразуется прямым DCT, квантуется и кодируется. Коэффициенты квантования деквантуются (укрупняются) и результат вычитается из неквантованных коэффициентов DCT для образования множества остаточных коэффициентов. Эти остаточные коэффициенты каждого блока кодируются в виде ряда битовых плоскостей. Затем остаточные коэффициенты переупорядочиваются сканированием по зигзагу. Биты старшего разряда каждого остаточного коэффициента (нули или единицы старшей битовой плоскости) кодируются в первую очередь, а за ними кодируются остальные битовые плоскости в порядке старшинства (разряда) битов.
Это пример иллюстрировал обработку одного блока. Процедура кодирования для всего кадра состоит в следующем. 1. Найти старший (ненулевой) битовый разряд среди всех остаточных коэффициентов кадра. 2. Кодировать каждую битовую плоскость, как описано выше, начиная с битовой плоскости старшего разряда. Перед каждой закодированной битовой плоскостью помещается стартовый код, позволяющий непосредственно урезать битовый поток, посылая неполное семейство закодированных битовых плоскостей. Декодирование. Декодер декодирует базовый слой и улучшающий слой (который может быть урезанным). Остаточные коэффициенты реконструируются по принятым битовым плоскостям, добавляются к коэффициентам базового слоя, после чего делается обратное преобразование для получения улучшенной видеопоследовательности (рис. 5.66). Рис. 5.66. Диаграмма декодера FGS (упрощенная). Если улучшающий слой был урезан, то это приводит к понижению точности остаточных коэффициентов. Например, предположим, что улучшающий слой в рассмотренном выше блоке был урезан после третьей битовой плоскости. Биты старшего разряда (и знаки) первых трех ненулевых коэффициентов декодируются (см. табл. 5.8); если остальные (недекодированные) битовые плоскости все заполняются нулями, то выходная последовательность значений имеет вид +8, -8,0,0, +16,0,... Дополнительный (опционной) метод улучшение в FGS включает селективное усовершенствование (в котором битовые плоскости выбранного старшего разряда сдвигается на один бит до кодирования для придания ей более высокого приоритета, что снижает вероятность ее урезания) и частотное «утяжеление» (при котором визуально-значимые низкочастотные коэффициенты DCT сдвигаются до кодирования, опять же для придания им большего приоритета в урезаемом битовом потоке). Таблица 5.8. Декодированные величины (урезанные после 3-ей плоскости).
|