Это преобразование используется для блоков размером 4×4 с номерами
0–15 и 18–25 на рис.1.9 после осуществления INTER- или INTRA-обработки.
Преобразование основано на ДКП, но имеет некоторые фундаментальные отличия:
1) Это целочисленное преобразование (все операции могут быть выполнены в целочисленной арифметике без потери точности).
2) Обратное преобразование, определенное в рекомендации H.264, производит восстановление исходных данных с искажениями, то есть является приблизительным.
3) Основная часть преобразования не имеет умножений, то есть оно основано только на суммированиях и сдвигах.
4) Масштабирующее умножение (входящее в процесс преобразования) интегрировано в процесс квантования (что сокращает общее количество умножений).
Полный процесс преобразования и квантования может быть выполнен при помощи 16-разрядной целочисленной арифметики, и только одно умножение выполняется с небольшой потерей точности.
1.5.3. Приблизительное ДКП 4×4
ДКП для входного массива X размером 4×4 определяется соотношением (1)
[ ] [ ] [ ], (1)
где
√ () √
Данное матричное умножение может быть факторизировано и формула
(1) примет следующий вид (2).
([ ] [ ] [ ]) [ ], (2)
Произведение матриц CXCT является «ядром» преобразования.
Матрица E представляет собой набор коэффициентов, причем каждый элемент матрицы (CXCT) должен быть умножен на соответствующий элемент матрицы E (скалярное поэлементное умножение матриц).
коэффициент d = c/b (≈0.414).
Для упрощения процедуры выполнения преобразования предлагается принять d = 0.5. Для того чтобы гарантировать ортогональность преобразования, необходимо изменить и коэффициент b, так что получим следующие значения коэффициентов:
√
Второй и четвертый ряды, а также вторая и четвертая колонки матрицы
C умножаются на 2, а матрица E изменяется так, чтобы компенсировать данное умножение. (Это позволяет исключить деление на 2 в «ядре» преобразования CXCT, которое привело бы к потере точности при целочисленной арифметике.) Окончательно преобразование примет вид (3).
([ ] [ ] [ ]),(3)
[ ]
Данное преобразование является аппроксимированным
(приблизительным) ДКП размером 4×4, так как изменение коэффициентов d
и b привело к появлению нового преобразования, не идентичного исходному ДКП размером 4×4.
Применяемое в кодеке H.264 приблизительное преобразование позволяет получить практически такую же степень сжатия, что и ДКП, и,
кроме того, обладает рядом важных преимуществ. Во-первых, «ядро» преобразования CXCT может быть выполнено в целочисленной арифметике при помощи только операций суммирования, вычитания и сдвига
(умножение на 2). Во-вторых, динамический диапазон результата действий данного преобразования такой, что везде может быть использована 16-
разрядная арифметика без риска выхода за пределы диапазона ±255. В-
третьих, масштабирование при помощи матрицы E требует только одного умножения для каждого коэффициента, которое может быть «включено» в
процесс квантования (см. ниже).
Обратное преобразование определяется соотношением (4).
[ | ] | [ ] | [ | ],(4) |
( | [ | ]) |
В этом случае матрица Y вначале масштабируется матрицей Ei, путем поэлементного умножения.
Прямое и обратное преобразования являются ортогональными, то есть:
,(5)
Квантование
В рекомендации H.264 используется скалярное квантование. К его определению и выполнению предъявляются следующие требования: (a)
исключить деление и арифметику с плавающей точкой, (b) включить в процесс квантования масштабирование при помощи матриц Ef и Ei,
описанных выше.
Базовой операцией прямого квантования является следующее действие:
( | * (6) | ||
где Yij — коэффициенты преобразования, описанные выше, Qstep — шаг квантования, и Zij — квантованные коэффициенты.
Общее количество значений шага квантования Qstep, определенное в стандарте, равно 52, они передаются как параметр QP, показанный в таблице
1. Широкий диапазон значений шага квантования позволяет кодирующему устройству точно и гибко управлять обменом между количеством передаваемых бит и качеством.
Таблица 1
Размер шага квантования в кодеке H.264
QP | … | |||||||||||||
Qstep | 0.6 | 0.68 | 0.81 | 0.87 | 1.12 | 1.2 | 1.37 | 1.62 | 1.7 | 2.25 | 2. | |||
QP | … | … | … | … | … | … | … | |||||||
Qstep | ||||||||||||||
Коэффициенты масштабирования 2, ab/2 или b2/4 включены в прямое квантование. Вначале входной блок X преобразуется, и получается блок промежуточных коэффициентов W = CXCT. Затем каждый коэффициент Wij
квантуется и масштабируется при помощи одной операции:
( | * (7) | ||
Где PF может принимать значения a2, b2/4 или ab/2 в зависимости от позиции в блоке X.
Операция (PF/Qstep) осуществляется в рекомендации H.264 как умножение на коэффициент MF (коэффициент-фактор) и сдвиг вправо, таким образом, исключается операция деления:
( | * (8) | ||
где
В целочисленной арифметике (8) может быть выполнено следующим образом:
(), (9)
где «>>» определяет логический сдвиг вправо. В рекомендации определяется коэффициент ƒ как 2qbits/3 для INTRA-блоков и 2qbits/6 для INTER-блоков.
Первые 6 значений MF, в зависимости от QP и позиции коэффициента в блоке, могут быть рассчитаны по таблице 2.
Таблица 2
Коэффициент умножения MF
QP | Позиция | Позиция | В остальных |
(0,0), (2,0), | (1,1), (1,3), | случаях | |
(0,2), (2,2) | (3,1), (3,3) | ||
Для значений QP > 5 коэффициенты умножения MF будут повторяться в соответствии с таблицей 2, а делитель 2qbits будет увеличиваться в два раза для каждого приращения QP на 6. Например, qbits = 16 для 6≤QP≤11; qbits = 17 для 6≤QP≤17; и так далее.
Обратное квантование
Базовая операция обратного квантования определяется соотношением:
, (10)
Коэффициенты масштабирования для инверсного преобразования
(матрица Ei, содержащая коэффициенты a2, ab и b2 в зависимости от позиции) включаются в эту операцию совместно с постоянным множителем
64, чтобы избежать ошибки округления:
, (11)
Коэффициенты W'ij являются результатом выполнения «ядра» обратного преобразования (CiTWCi:). Значения полученных коэффициентов
делятся на 64, чтобы компенсировать предварительное масштабирование (это может быть осуществлено при помощи только операций суммирования и сдвига вправо).
Стандарт H.264 непосредственно не определяет Qstep или PF. Вместо этого определяется параметр V = (QstepPF64) для 0≤QP≤5 и для каждого коэффициента в блоке производится пересчет по формуле:
, (12)
1.5.6. Преобразование и квантование яркостных DC коэффициентов блока размером 4×4
Если макроблок размером 16×16 обрабатывается в INTRA-режиме, то каждый остаточный блок размером 4×4 сначала преобразуется «ядром»
CƒXCƒT, описанным выше. Полученные яркостные DC-коэффициенты каждого блока размером 4×4 выделяются в отдельный блок и обрабатываются в соответствии с преобразованием Адаманта:
[ ] [ ] [ ], (13)
Матрица WD представляет собой блок DC-коэффициентов размером
4×4, а матрица YD — это блок коэффициентов после преобразования.
Полученные коэффициенты YD(i, j) делятся на два (с округлением).
После этого коэффициенты YD(i, j) квантуются по формуле:
() (14)
где MF, ƒ и qbits определяются как обычно, при этом MF зависит от позиции
(i, j) в пределах блока DC-коэффициентов размером 4×4, как было описано выше.
В декодере обратное преобразование выполняется следующим образом:
[ ] [ ] [ ], (15)
Если QP больше или равно 12, то обратное квантование выполняется следующим образом:
, (16)
Если QP меньше 12, то обратное квантование определяется как:
[ ], (17)
Коэффициенты V определяется, как было описано выше. Полученная после процедуры обратного квантования матрица W'D является блоком DC-
коэффициентов, которые вставляются в соответствующие блоки, и
выполняется «ядро» обратного преобразования (CiT W'Ci).
Так как в INTRA-макроблоках большая часть энергии сконцентрирована в DC-коэффициентах, данное дополнительное преобразование DC-коэффициентов помогает декоррелировать блок яркостных коэффициентов размером 4×4 (то есть использовать в своих интересах корреляцию между коэффициентами).
1.5.7. Преобразование и квантование блока цветоразностных коэффициентов размером 2×2
Каждый цветоразностный компонент в макроблоке состоит из четырех блоков размером 4×4. Каждый блок размером 4×4 преобразуется так, как это было описано в рвзделе «Формирование INTRA-прогноза». Коэффициенты
DC каждого блока размером 4×4 группируются в блок размера 2×2 (WD), а
затем полученный блок преобразуется и квантуется:
* + [ ] * +, (18)
Квантование блока YD размером 2×2 выполняется следующим образом:
(), (19)
где коэффициенты MF, ƒ и qbits определяются как было описано выше.
Затем проводится декодирование, обратная трансформация и обратное квантование:
* + [ ] * +, (20)
Если QP больше или равен 6, обратное квантование выполняется следующим образом:
, (21)
Если QP меньше, чем 6, обратное квантование выполняется в соответствии с выражением:
[ ], (22)
Коэффициенты, полученные после обратного квантования,
размещаются в соответствующих цветоразностных блоках размером 4×4,
которые затем обрабатываются, как это описано выше (CiTW'Ci). Как и в случае с кодированием яркостных DC-коэффициентов в INTRA-режиме,
применяется дополнительное преобразование, помогающее декоррелировать блок размера 2×2 цветоразностных DC-коэффициентов и, следовательно,
увеличивающее степень сжатия.
На рис. 1.10 представлен описанный выше полный процесс прямого и обратного преобразования и квантования от момента поступления на вход обрабатываемого блока X до получения на выходе восстановленного блока
X'.
Рис.1.10. Процесс прямого и обратного преобразования и квантования