![]() ![]() ![]() ![]() ![]()
Раздел: Документация
0 ... 33 34 35 36 37 38 39 ... 122
![]() Рис. 3.59. Остаточный макроблок (яркость). Далее применяется простейший квантователь: Qcoef f = round(coef f /Qfitep), где Qcoef f — размер шага квантования, в этом примере равный 12. Малые коэффициенты квантуются до нуля (табл. 3.11), а ненулевые коэффициенты образуют кластер около верхнего левого коэффициента DC. Квантованный блок переупорядочивается сканированием по зигзагу (начиная из верхнего левого угла), и получается массив чисел: -1,2,1,-1,-1,2,0,-1,1,-1,2,-1,-1,0,0,-1,0,0,0,-1,-1, 0,0,0,0,0,1,0,... Из этого массива образуется следующая последовательность пар («серия», «значение»): (0,-1)(0,2)(О,1)(О.-1)(О,-1)(О.2)(1 - 1)(0,1)(0,-1)(0,2)(0,-1) (0, -1)(2,-1)(3, -1)(0, -1)(5,1)(ЕОВ) Таблица 3.11. Квантованные коэффициенты DCT Маркер ЕОВ (End Of Block) означает, что оставшиеся коэффициенты равны нулю. Каждая пара («серия», «значение») кодируется кодом VLC. При использовании таблицы TCOEF стандарта MPEG-4 Visual (табл. 3.6) получаются коды переменной длины, приведенные в табл. 3.12. . Таблица 3.12. Коды переменной длины данного примера. («серия», «значение», «конец»)VLC (вместе со знаковым битом)
![]() Рис. 3.60. Величины коэффициентов DCT. В последнем коде VLC «конец» = 1, что указывает на конец блока. Вектор движения для этого макроблока равен (0,1), т.е. вектор смотрит вниз. Предсказанный вектор (основанный на соседнем макроблоке) равен (0,0), поэтому координаты разности векторов движения MVDx = 0, MVDy = +1. Используя кодовую табл. 3.7 для MPEG-4 Visual, кодируем эти величины кодами (1) и (0010) соответственно. Макроблок передается в виде последовательности кодов VLC включая заголовок макроблока, разность векторов движения (X и Y) и коэффициенты преобразования (TCOEF) для каждого блока 8x8. На приемном конце производится декодирование принятой последовательности VLC. При этом сначала извлекаются параметры заголовка, потом числа MVDx и MVDy и пары («серия», «значение») для каждого блока. Затем воспроизводится массив из 64 элементов, т.е вставляется соответствующее число нулей («серий») перед каждым ненулевым значением, и строится блок 8x8 (см. табл. 3.11). Далее производится деквантование коэффициентов по формуле: Rcoef f = Qcoef f Qstep, (здесь, как и раньше, Qstep = 12), и получается блок коэффициентов, показанный в табл. 3.13. Отметим, что эти коэффициенты существенным образом отличаются от исходных DCT коэффициентов (табл. 3.10) из-за процедуры квантования. Теперь применяется обратное DCT (ГОСТ) для получения декодированного остаточного блока (табл. 3.14), который подобен, но неидентичен исходному остаточному блоку (табл. 3.9). Графики исходного и декодированного остаточных блоков построены рядом друг с другом на рис. 3.61. Видно, что декодированный блок имеет меньше высокочастотных компонент в силу потери высокочастотных коэффициентов DCT в процессе квантования. Таблица 3.13. Деквантованные коэффициенты DCT.
Таблица 3.14. Декодированные остаточные сэмплы яркости.
0 ... 33 34 35 36 37 38 39 ... 122 |