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

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


6.4.8.1. Преобразование и квантование остаточных блоков 4х4 (0-15, 18-25)

Это преобразование оперирует с блоками 4x4 остаточных данных (они помечены 0 - 15 и 18 - 25 на рис. 6.37) после прогноза компенсации движения или прогноза intra. Преобразование в стандарте H.264 [3] основано на DCT, но имеет ряд фундаментальных отличий.

Рис. 6.37. Порядок сканирования блоков макроблока.

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

2. Оно гарантирует идентичность результатов обратных преобразований, выполняемых кодером и декодером (при использовании целочисленной арифметики).

3. Ядро алгоритма преобразования можно реализовать, используя только операцию сложения и сдвига.

4. Масштабирование (одна из функций преобразования) интегрировано в квантователь, что сокращает общее число операций умножения.

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

Приближенное DCT блоков 4x4. Напомним (см. гл. 3), что преобразование DCT матриц 4x4 задается формулой:

                        (6.1)

где

Это произведение матриц можно представить в следующей удобной форме [3]:

     (6.2)

Здесь  «базовое» двухмерное преобразование. Матрица  состоит из масштабных множителей, а символ  обозначает поэлементное умножение матрицы  на масштабные множители матрицы  с теми же координатами (это умножение скаляров, а не матриц). Константы  и  определены выше, a  равно  (примерно 0,414).

Для упрощения реализации преобразования величину  приближают числом 0,5. Чтобы соблюсти ортогональность преобразования, необходимо подправить число :

Вторую и четвертую строки матрицы , а также второй и четвертый столбец матрицы  необходимо увеличить в два раза, а матрицу  для компенсации, наоборот, перемасштабировать вдвое. При этом сокращается наполовину число умножений при «базовом» преобразовании , которые могли бы привести к потере точности при использовании целочисленной арифметики. Окончательное прямое преобразование примет следующий вид:

   (6.3)

Это преобразование является приближением настоящего преобразования DCT матриц 4x4, поскольку в нем изменены коэффициенты  и . Его результат не тождествен применению DCT.

Пример

Сравните выход построенного приближенного преобразования матрицы 4 х 4 с результатом «истинного» DCT применительно к входному блоку X:

Выход DCT:

Выход приближенного преобразования:

Их разность:

Итак, имеется явное различие выходных коэффициентов, которые зависят от  и . В контексте кодека Н.264 приближенное преобразование имеет почти такую же степень сжатия, что и DCT. Однако при этом имеется ряд существенных достоинств. «Базовую» часть преобразования  можно совершить целочисленной арифметикой с использованием только сложений, вычитаний и поразрядных сдвигов. Область операций преобразований такова, что в ней можно применять целые 16 разрядные переменные (за исключением некоторых аномальных блоков), поскольку входные данные находятся в пределах ±255. Масштабирующий оператор  тратит по одному умножению на каждый коэффициент. Эту функцию можно встроить в модуль квантователя (см. далее).

Обратное преобразование задается формулой (6.4). Стандарт Н.264 [1] определяет это преобразование явно в виде последовательности арифметических операций:

       (6.4)

В этой формуле каждый коэффициент блока  умножается на соответствующий весовой множитель матрицы . Отметим, что умножение на числа ±1/2 можно реализовать в виде сдвигов разрядов вправо на один шаг без существенной потери точности, так как коэффициенты  уже были перемасштабированы.

Прямое и обратное преобразования удовлетворяют тождеству .

Квантование. Стандарт Н.264 использует скалярное квантование (см. гл. 3). Механизм прямого и обратного квантования усложняется следующими требованиями: избегать деления и/или арифметические операции с плавающей запятой и встроить в него операции масштабирования и обратного масштабирования с использованием матриц  и , описанных выше.

Основная операция квантователя [3] имеет вид

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

Стандарт задает 52 возможных значения шага , которые проиндексированы параметром квантователя  (см. табл. 6.5). Шаг  удваивается при изменении  в шесть раз. Широкие пределы шага квантователя дают возможность гибко контролировать соотношение битовой скорости и качества. Значения  могут быть различными для компонент яркости и хроматичности. Оба параметра находятся в пределах 0 - 51, и по умолчанию для параметра хроматичности установлено значение , которое выводится из  так, что меньше  при . Устанавливаемое пользователем соотношение между  и  отображается во множестве параметров снимка.

Таблица 6.5. Размеры шага квантователя кодека Н.264.

0

1

2

3

4

5

6

7

8

9

10

11

12

...

0,625

0,6875

0,8125

0,875

1

1,125

1,25

1,375

1,625

1,75

2

2,25

2,5

 

...

18

...

24

...

30

...

36

...

42

...

48

...

51

 

5

 

10

 

20

 

40

 

80

 

160

 

224

Множители обратного квантования ,  или  (см. уравнение (6.3)) встроены в прямой квантователь. Сначала входной блок , преобразуется, и получается блок . Затем каждый коэффициент  квантуется и масштабируется за одну операцию

                      (6.5)

где переменная  - это ,  или  в зависимости от значения индексов  (см. уравнение (6.3)):

Индексы  

 

(0,0), (2,0), (0,2)

или (2,2)

(1,1), (1,3), (3,1)

или (3,3)

Все остальные

 

В целях упрощения вычислений множитель  реализован в справочной модели программного обеспечения [4] в виде умножения на MF и правого сдвига без использования операции деления:

где

и

                 (6.6)

В целочисленной арифметике уравнение (6.6) реализуется в следующем виде:

                       (6.7)

где  >> обозначает сдвиг двоичных разрядов вправо. В справочной программе  равно  для блоков в моде intra и  в моде inter.

Пример

 и .

.  и , значит .

                                .

Первые шесть значений коэффициента MF (для всех пар координат ), применяемых кодером справочной программы Н.264, приведены в табл. 6.6. Второй и третий столбец этой таблицы (множители  и ) были слегка модифицированы с учетом уравнения (6.6).

При  множитель MF не изменяется, но делитель  увеличивается в два раза при каждом шестикратном увеличении . Например, величина  при ,   при  и т.д.

Таблица 6.6. Множители MF.

 

Индексы  

Индексы  

 

QP

(0, 0), (2, 0), (0, 2), (2, 2)

(1,1), (1,3), (3,1), (3,3)

Все остальные

0

13 107

5 243

8 066

1

11 916

4 660

7 490

2

10 082

4 194

6 554

3

9 362

3 647

5 825

4

8 192

3 355

5 243

5

7 282

2 893

4 559

Обратное квантование. Базовая операция масштабирования (обратного квантования) имеет вид

.                     (6.8)

Масштабирующие множители обратного преобразования (из матрицы , содержащей числа ,  и  в зависимости от значений индексов ) встроены в эту операцию вместе с постоянным множителем масштаба 64 для избежания ошибок округления:

.                  (6.9)

Коэффициенты  преобразуются базовым обратным преобразованием , (уравнение (6.4)). Выход обратного преобразования делится на 64 для сокращения множителя масштаба (эта процедура реализуется только сложением и правым сдвигом). Стандарт Н.264 не специфицирует явно числа  и . Вместо этого определяется параметр  при  для каждой пары координат , так что операция масштабирования принимает вид:

.               (6.10)

Пример

 и

 и

Величины  определяются стандартным образом при . Они приведены в табл. 6.7.

Таблица 6.7. Множители .

 

Индексы

Индексы  

 

QP

(0, 0), (2, 0), (0, 2), (2, 2)

(1, 1), (1, 3), (3, 1), (3, 3)

Все остальные

0

10

16

13

1

11

18

14

2

13

20

16

3

14

23

18

4

16

25

20

5

18

29

23

В уравнении (6.10) стоит множитель по причине увеличения вдвое выхода масштабирования при каждом шестикратном возрастании параметра QP.

 



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