Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

(по цифровому вещанию) Dvorkovich_V_Cifrovye_videoinformacionnye_sistemy

.pdf
Скачиваний:
258
Добавлен:
15.03.2016
Размер:
23.26 Mб
Скачать

Глава14. Стандарты кодирования динамических изображений

значением code_num, которое является входным для алгоритма экспоненциального кодирования:

ue(ν) — прямое соответствие без знака, code_num = ν;

se(ν) — знаковое соответствие —

code_num =

2 |v| ,

v < 0;

(14.29)

code_num = 2

|v| − 1,

v > 0;

 

me(ν) — символьное соответствие; параметр ν соответствует code_num согласно таблице, определенной в стандарте.

Каждый способ (ue, se и me) разработан так, чтобы формировать короткие кодовые слова — для часто встречающихся значений параметров и более длинные кодовые слова для менее частых.

В схеме с адаптацией на основе контекста CAVLC таблицы кодов переменной длины (VLC) для различных синтаксических элементов переключаются в зависимости от уже переданных синтаксических элементов. Так как таблицы VLC созданы так, чтобы они подходили для соответствующих условных статистик, производительность энтропийного кодирования повышена по сравнению со схемой, использующей одну таблицу VLC.

Метод CAVLC обладает нижеследующими особенностями.

После прогнозирования, преобразования и квантования блоки обычно содержат множество нулей. CAVLC использует кодирование run-level, при котором вместо последовательности нулей передается одно число, определяющее их количество.

Самые большие ненулевые коэффициенты после зигзагообразного сканирования часто завершаются последовательностью ±1. CAVLC позволяет компактно представить последовательность замыкающих высоких частот, равных ±1.

Число ненулевых коэффициентов в соседних блоках коррелировано. Поэтому число ненулевых коэффициентов кодируется на основе таблицы поиска, которая выбирается из нескольких, в зависимости от числа ненулевых коэффициентов в соседних блоках.

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

Код CAVLC включает следующие поля:

coe _token — определяет общее количество ненулевых коэффициентов в кодируемом блоке остаточных коэффициентов (TotalCoe s), а также количество коэффициентов в конце блока, равных единице (T 1s);

T 1 — знак единичного коэффициента в конце блока (таких полей может быть 3);

Level — значение ненулевых коэффициентов в блоке (количество полей определяется количеством ненулевых значений коэффициентов кодируемого блока);

TotalZeros — количество нулевых коэффициентов на промежутке от начала блока до последнего ненулевого коэффициента;

run_before — количество нулей перед ненулевым коэффициентом.

14.6. H.264/MPEG-4 часть 10 AVC — улучшенное видеокодирование

Пусть, например, блок 4 × 4 остаточных коэффициентов определен табл. 14.34. В результате переупорядочивания коэффициентов формируется одномерный

массив 0,3,0,1,–1,–1,0,1,0,0,0,0,0,0,0,0.

Этот массив подвергается кодированию, и в результате получается битовый

поток 000010001110010111101101.

 

 

 

 

 

 

Значения полей этого массива приведены в

 

 

 

 

 

 

табл. 14.35. Фактически в конце блока имеет-

 

 

 

 

 

 

ся четыре единичных коэффициента, но только

Таблица 14.34. Пример массива

три из них могут быть закодированы своим зна-

остаточных коэффициентов

 

 

 

 

 

 

ком. Кроме этого, количество нулей перед пер-

 

0

3

−1

0

 

вым ненулевым коэффициентом не передается,

 

0

−1

1

0

 

так как может быть вычислено на приемной сто-

 

1

0

0

0

 

 

 

 

 

 

 

роне из уже полученной информации.

 

0

0

0

0

 

 

 

 

 

 

 

Эффективность энтропийного кодирования может быть еще улучшена при использовании

контекстно-адаптирующегося двоичного арифметического кодирования (context-adaptive binary arithmetic coding, CABAC). С одной стороны, арифметическое кодирование позволяет использовать нецелое количество битов для каждого символа алфавита, что чрезвычайно выгодно для символов, вероятность которых больше 0,5. С другой стороны, использование адаптивных кодов позволяет приспосабливаться к нестационарной статистике символов. Другое важное свойство CABAC — моделирование контекста. Статистика уже закодированных синтаксических элементов используется для оценки условных вероятностей. Эти условные вероятности используются для переключения нескольких моделей оценки вероятности. В Н.264/AVC ядро арифметического кодирования и связанные

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

сCAVLC CABAC обычно обеспечивает снижение битового потока на 5–15%. Наибольший выигрыш обычно достигается при кодировании чересстрочных телевизионных сигналов.

Таблица 14.35. Пример кодирования остаточных коэффициентов кодом CAVLC

Поле кода

Значение

Код

coe _token

TotalCoe s = 5, T 1s = 3

0000100

 

 

 

T 1 знак (4)

+

0

 

 

 

T 1 знак (3)

1

T 1 знак (2)

1

 

 

 

Level (1)

+1

1

 

 

 

Level (0)

+3

00100

TotalZeros

3

111

run_before (4)

1

10

 

 

 

run_before (3)

0

1

run_before (2)

0

1

 

 

 

run_before (1)

1

01

 

 

 

run_before (0)

1

Алгоритм арифметического кодирования CABAC обеспечивает хорошую степень сжатия вследствие следующих причин:

Глава14. Стандарты кодирования динамических изображений

выбор вероятностной модели для каждого элемента синтаксиса;

адаптивная оценка вероятности, основанная на локальной статистике;

использование арифметического кодирования.

Кодирование символа данных включает нижеследующие стадии.

Бинаризация исходного параметра, подобная процессу преобразования символа данных в код переменной длины.

Выбор контекстной модели для каждого бита (или «дискрета») бинаризированного символа. Контекстная модель является моделью вероятности для одного или более дискретов. Эта модель может быть выбрана из ряда доступных моделей в зависимости от статистики ранее закодированных символов.

Непосредственно само арифметическое кодирование. Кодер шифрует каждый дискрет согласно выбранной вероятностной модели.

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

Контекстные модели и схемы бинаризации каждого элемента синтаксиса определены в стандарте. При этом возможно использование до 267 контекстных моделей для различных элементов синтаксиса. Некоторые модели имеют различное использование в зависимости от типа кодируемого значения. Первоначальный выбор контекстной модели производится в начале кодирования каждой независимой секции видеоизображения (обычно это кадр) в зависимости от параметра квантования QP .

В целом CABAC обеспечивает гораздо более высокую эффективность кодирования по сравнению с VLC за счет большей вычислительной сложности.

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

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

14.7. Некоторые проблемы реализации видеокодирующих систем

Иерархия битового потока видеокодирующих систем существующих стандартов в целом приведена в разделах 14.1–14.6. В настоящем разделе рассматриваются некоторые специфические особенности использования эффективных алгоритмов цифрового кодирования динамических изображений, к которым следует отнести:

методику построения промежуточных кадров видеопоследовательности;

методику регулировки потока при сжатии динамических видеоизображений;

анализ смены сюжета;

оценку быстродействия кодирования изображений;

возможности кодирования стереоскопических видеоизображений в рамках совместимости с действующими стандартами.

14.7.1.Методика построения промежуточных кадров видеопоследовательности

Вцелом ряде прикладных задач возникает необходимость формирования промежуточных кадров видеопоследовательности. Например, в системах видеоконференцсвязи по каналам с невысокой пропускной способностью представляется предпочтительным (с точки зрения качества декодируемого изображения) снизить кадровую скорость кодируемого видео, а на приемной стороне для увеличения плавности движений на воспроизводимом изображении формировать и показывать пропущенные на кодирующей стороне кадры. Или при использовании режима так называемой «100 Гц-развертки» формировать не только полные кадры из полей (25 Гц → 50 Гц), но и промежуточные кадры между полями (50 Гц → 100 Гц).

Одним из достаточно эффективных методов формирования промежуточных кадров является метод, использующий анализ движения деталей изображения [5.73]. Используемая методика анализа движения блоков изображения очень близка к методикам, применяемым в стандартных алгоритмах видеокомпрессии. Методика предполагает несколько стадий обработки изображений.

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

движения деталей:

i

2

(ti+1 − ti−1)

 

3

 

P

= round

Pi−1 · (ti+1 − ti) + Pi+1

· (ti − ti−1)

,

(14.30)

где P — значение пиксела (яркость, цветность), t — время кадра, индекс i относится к результирующему кадру, i − 1 — к предшествующему, а i + 1 — к последующему по времени кадру.

На следующей стадии один из опорных кадров разбивается на блоки (обычно фиксированного размера, например, 8 × 8 или 16 × 16 пикселов). Блоки могут

Глава14. Стандарты кодирования динамических изображений

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

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

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

Тем не менее после всех этих процедур на формируемом кадре могут оставаться зоны, заполненные не интерполяцией, а усреднением (на первом этапе предварительного построения кадра). Эти зоны, как правило, соответствуют областям, которые были закрыты на одном из опорных кадров движущимися деталями, или областям, содержащим новые объекты. Для более корректного заполнения таких зон следует применять экстраполяцию по двум предшествующим или двум последующим кадрам видеопоследовательности.

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

Примером практического применения описанного алгоритма является преобразование видеопоследовательности с частотой кадров 50 Гц в видеопоследовательность с частотой кадров 60 Гц.

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

Если кадры в исходной последовательности расположены регулярно, то результирующая последовательность может включать три или пять построенных кадров (рис. 14.42а, б).

На практике достаточно проводить интерполяцию 3 кадров, так как кадры во временном положении 16,7 и 83,3 мс незначительно отличаются от кадров во временном положении 20 и 80 мс в исходной последовательности, так что

14.7. Некоторые проблемы реализации видеокодирующих систем

Рис. 14.42. Построение трех кадров — а) и пяти кадров — б) при преобразовании частоты

кадров из 50 Гц в 60 Гц

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

Если входные кадры расположены по времени неравномерно, то временное положение кадров результирующей последовательности не изменяется, но могут измениться номера кадров исходной последовательности, по которым осуществляется построение новых кадров.

На рис. 14.43 приведены 5 кадров видеопоследовательности с частотой кадров 50 Гц, а на рис. 14.44 — 6 соответствующих кадров этой видеопоследовательности после преобразования к частоте 60 Гц.

Глава14. Стандарты кодирования динамических изображений

Рис. 14.43. Кадры видеопоследовательности с частотой кадров 50 Гц

Такое преобразование оказывается необходимым при воспроизведении изображений телевидения высокой четкости на больших экранах, поскольку при частоте кадров 50 Гц оказывается заметной модуляция яркости экрана.

14.7.2.Методика регулировки потока при сжатии динамических изображений

При сжатии динамических изображений, как правило, необходимо регулировать скорость выходного потока данных в соответствии с пропускной способностью

14.7. Некоторые проблемы реализации видеокодирующих систем

Рис. 14.44. Кадры видеопоследовательности, преобразованной в 60 Гц

канала связи, по которому будет передаваться компрессированный видеопоток. На практике часто возникает задача доставить закодированные данные через канал с ограниченной пропускной способностью с минимальной задержкой при сохранении максимально возможного качества восстановленного изображения [5.74].

При разработке эффективного метода регулирования скорости выходного потока данных необходимо рассмотреть особенности кодирования различных типов кадров (с внутрикадровым кодированием — I, кодированные с предсказанием — P,

Глава14. Стандарты кодирования динамических изображений

кодированные с двунаправленным предсказанием — B), встречающихся во многих распространенных стандартах кодирования. Чтобы обеспечить наиболее полное использование пропускной способности канала связи с минимальной задержкой, необходимо подобрать достаточно точную модель взаимосвязи параметров кодирования и скорости выходного потока.

Управление потоком сводится к принятию решений о параметрах квантования видеообъектов (кадров, макроблоков). Описываемая методика основана на так называемой R-D-модели (Rate-Distortion — модель связи скорости выходного потока и степени сжатия) [5.75–5.78]. В этой модели учитываются характеристики изображения, влияющие на выбор параметров квантования. Так как указанные выше стандарты видеокомпрессии используют одинаковый базовый алгоритм кодирования (внутрикадровое косинусное преобразование блоков и квантование, межкадровое предсказание макроблоков), то данная схема регулирования потока применима к каждому из них.

Прежде чем приступить к описанию R-D-модели, необходимо ввести некоторую меру «сложности» видеообъекта (в данном случае — макроблока). Часто используются такие меры, как среднеквадратичный разброс яркостей (CKP ), средний абсолютный разброс яркостей (CAP ), максимальный разброс яркостей

(M P ):

 

 

 

 

16

 

16

 

 

 

 

 

1

 

i

 

 

2

 

 

CKP =

 

 

 

=1 j=1 [P (i, j) − μ]

;

 

255

 

 

 

 

 

16

 

16

 

 

 

 

 

1

 

i

 

 

 

 

(14.31)

CAP =

255

=1 j=1 |P (i, j) − μ| ;

 

 

M P =

 

 

 

max

|P (i, j)|,

 

 

(i=1...16,j=1...16)

i! !

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

16

16

где P (i, j) — значение яркости в точке (i, j), μ =

 

P (i, j) — средняя

255

 

=1 j=1

яркость макроблока. На практике из соображений минимизации объема вычислений часто применяется мера CAP .

Для макроблоков, кодируемых с предсказанием, значение в каждой точке берется после компенсации движения, а значение средней яркости можно считать равным нулю. Для кадра CAP рассчитывается как сумма CAP всех макроблоков.

В R-D-модели предполагается, что количество битов T , которые будут потрачены на кодирование коэффициентов ДКП, зависит от коэффициента квантования видеообъекта Q следующим образом:

T = CAP ·

x1

+

x2

= R − H,

(14.32)

Q

Q2

где x1 и x2 — параметры модели, R — количество битов, приходящихся на видеообъект; H — количество битов, приходящихся на заголовки (в том числе векторы движения).

При использовании единого коэффициента квантования для кадра параметры системы x1 и x2 можно уточнять после того, как кадр будет закодирован. Для уточнения используется n закодированных кадров.

14.7. Некоторые проблемы реализации видеокодирующих систем

Пусть матрицы M1 и M2 соответственно равны:

 

 

··

T2

.

 

M1 =

1

1/Q2

,

M2 = Q2

(14.33)

 

1

1/Q1

 

 

 

 

Q1

 

T1

 

 

1

1/Q

n

 

 

Q

n

 

T

n

 

 

 

 

 

 

 

 

 

·

 

 

 

 

. . . . . .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. . .

 

 

 

Тогда параметры модели могут быть определены уравнением:

 

2 x2

3 = M1

· M1

 

· M1

· M2,

 

 

 

 

x1

 

T

 

1

T

 

 

 

 

 

 

 

где Ti, Qi (i = 1, . . . , n) — количество битов, потраченных на кодирование коэффициентов ДКП и коэффициенты квантования закодированных кадров соответственно.

Регулирование потока с использованием постоянного коэффициента квантования в кадре состоит из следующих стадий:

вычисление количества битов, выделяемых на кадр и на коэффициенты ДКП;

подсчет коэффициента квантования;

кодирование кадра;

обновление R-D-модели.

Первая стадия методики отличается для разных типов кадров, так как различен механизм подсчета количества битов, выделяемых на коэффициенты ДКП, для I-, P- и B-кадров. Хотя данная модель не привязана к сложности кадра (сложность в несколько раз отличается для различных типов кадров), однако предполагается, что последовательно идущие кадры имеют схожую сложность, примерно одинаковое количество битов на заголовки (не коэффициенты ДКП) и т. д. В связи с этим строится R-D-модель для каждого типа кадров.

Рассмотрим подробнее первую и четвертую стадии.

Вычисление количества битов, выделяемых на кадр и на коэффициенты ДКП

Количество битов, выделяемых на кадр и на его коэффициенты ДКП, определяется в том числе типом кадра. Например, размер I-кадра должен в несколько раз превышать размер P-кадра. Пусть кодирование видео осуществляется при следующих условиях: максимальное расстояние (в кадрах) между двумя последовательными I-кадрами равно NI ; I-кадры в среднем занимают в KI раз больше битов, чем P-кадры; временное расстояние между двумя последовательными I-кадрами (без учета потенциальной смены сюжета) равно τI ; ПСК — пропускная способность канала связи. Тогда перед началом кодирования группы кадров, начинающейся I-кадром и продолжающейся до следующего I-кадра, необходимо рассчитать количество битов, приходящихся на I-кадр:

TI = KI · τI · ПСК/(NI + KI ).

Допустим, закодированный I-кадр занял TI битов. Тогда количество битов Tост, оставшихся на NP P-кадров группы (NP NI − 1), равно

Tост = NI · ПСК − TI .