3.6. Гибридная модель DPCM/DCT видеокодекаБольшинство стандартов видеокодирования, реализованных после 1990 года, основаны на некоторой единой модели видеокодека, которая включает оценку движения и компенсацию высоких частот (эта конструкция обозначается сокращением DPCM), стадию преобразования и энтропийный кодер. Такую конструкцию часто называют гибридной моделью DPCM/DCT. Любой кодек, совместимый со стандартами Н.261, Н.263, MPEG-1, MPEG-2, MPEG-4 Visual и Н.264, должен содержать в себе соответствующее семейство базисных функций кодирования и декодирования (при этом имеются значительные различия между их реализациями и приложениями). На рис. 3.50 и 3.51 приведены общие схемы гибридного кодера и декодера DPCM/DCT. Видеокодер обрабатывает кадр и производит закодированный (сжатый) битовый поток, а декодер использует этот битовый поток (показанный справа на рисунках) для построения реконструированного кадра , который чаще всего неидентичен исходному кадру . Рисунки специально расположены так, чтобы подчеркнуть общие блоки в кодере и декодере. Большинство функций декодера, на самом деле, имеются в кодере (причина этого будет объяснена позже). Рис. 3.50. Кодер DPCM/DCT. Рис. 3.51. Декодер DPCM/DCT. Поток данных кодера. Имеется два основных пути прохождения данных в кодере: слева направо (кодирование) и справа налево (реконструкция). Поток кодирования состоит в следующем. 1. Входной видеокадр подается на вход кодера и обрабатывается там макроблоками (соответствующими областям из 16 х 16 сэмплов яркости и хроматичности). 2. Кадр сравнивается с ссылочным кадром, например с ранее закодированным кадром . Функция оценки движения находит в , (или в интерполированной по подсэмплам версии кадра ) область 16 х 16, которая больше других «похожа» на текущий макроблок в (при этом используется некоторый критерий схожести макроблоков). Смещение текущего макроблока по отношению к положению выбранного ссылочного макроблока записывается в вектор движения . 3. На основе выбранного вектора движения строится прогноз компенсированного движения (область 16 х 16, выбранная функцией оценки движения). 4. Макроблок вычитается из текущего макроблока, и их разность называется остаточным макроблоком. 5. Макроблок преобразуется с помощью DCT. Обычно макроблок делится на подблоки 8x8 или 4 х 4, и каждый подблок преобразуется отдельно. 6. Каждый подблок квантуется (). 7. Для коэффициентов DCT всех подблоков делается переупорядочение и результат кодируется символами «серия-значение». 8. Коэффициенты, векторы движения и связанные с ними информационные заголовки каждого макроблока кодируются энтропийным кодером для получения выходного сжатого битового потока. Поток реконструкции данных. 1. Для каждого квантованного макроблока делается его деквантование и обратное преобразование для получения декодированного остаточного макроблока . Заметим, что процедура квантования не является обратимой, поэтому макроблок в большинстве случаев не совпадает с (т.е. здесь вносится искажение). 2. Прогноз компенсации движения складывается с для получения реконструированного макроблока, который сохраняется в реконструированном кадре . Поток данных декодера. 1. Сжатый поток битов декодируется энтропийным декодером для извлечения из него коэффициентов преобразования, векторов движения и заголовков каждого макроблока. 2. Обращается кодирование «серия-значение», и делается обычное упорядочение коэффициентов. В результате получается квантованный преобразованный макроблок . 3. Макроблок деквантуется, и к результату применяется обратное преобразование DCT, что дает остаточный макроблок . 4. Декодированный вектор движения используется для нахождения позиции области 16 х 16 на предыдущем (ссылочном) кадре , копия которого хранится декодером. Эта область становится прогнозом с компенсацией движения . 5. Макроблок прибавляется к , и получается восстановленный макроблок, который сохраняется на своей позиции на декодированном кадре . После полного декодирования кадр готов для демонстрации зрителю и, кроме того, его можно сохранить в качестве ссылочного кадра для декодирования следующего кадра . Из рисунков, а также из приведенных объяснений видно, что кодер содержит в себе часть функций декодера (деквантование, IDCT, реконструкция). Это необходимо, чтобы быть уверенным в том, что и кодер, и декодер работают с одними и теми же ссылочными кадрами для получения прогноза компенсации движения.
|