Сжатие видео H.264

Содержание

Слайд 2

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Структура материала

Введение
Компенсация движения
Преобразование
Квантование
Фильтрация
Перестановка
Entropy coding
NAL

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Структура материала Введение

Слайд 3

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Эволюция стандартов

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Эволюция стандартов

Слайд 4

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Список сокращений

MPEG- Moving Picture

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Список сокращений MPEG-
Experts Group

ISO - International Standards Organisation

VCEG - Video Coding Experts Group

IEC- International Electrotechnical Commission

ITU - International Telecommunications Union

Слайд 5

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Эволюция стандартов

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Эволюция стандартов

Слайд 6

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Новое в H.264

Многорежимная компенсация

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Новое в H.264
движения
1/4-, 1/8-компенсация движения
B-предсказание
Целочисленное преобразование над блоками 4×4
Многорежимное intra-предсказание
Deblocking-фильтр
Entropy-кодирование
NAL (Network Abstraction Layer)
SP, SI -slice

Слайд 7

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

H.264 / используемые форматы

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ H.264 / используемые
видео

Кодируются отдельные изображения (фреймы)
H.264 поддерживает progressive и interlaced форматы видео
Размер изображений должен быть кратен 16 по обоим измерениям

progressive video

interlaced video

Слайд 8

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

H.264 / формат изображения

Изображение
представлено

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ H.264 / формат
в формате
YCbCr 4:2:0

Y=0.299R+0.587G+0.115B
Cb=0.564(B-Y)
Cr=0.713(R-Y)

Изображение разбивается на так называемые макроблоки
размера 16 x 16 по яркостной компоненте и,
соответственно, размера 8x8 для цветовых компонент

Слайд 9

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

H.264/ Термины

Макроблок A предсказывается

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ H.264/ Термины Макроблок
макроблоком B, если из всевозможных макроблоков из предшествующих фреймов, разница между блоками B и А минимальна.
Эта разница называется компенсацией движения (motion compensation)
Intra – кодирование – кодирование без использования
компенсации движения
Inter – кодирование – кодируется с использованием компенсации движения

Слайд 10

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

H.264 Кодирование

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ H.264 Кодирование

Слайд 11

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

H.264 Декодирование

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ H.264 Декодирование

Слайд 12

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

H.264 / Кодирование-декодирование

Fn - текущий

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ H.264 / Кодирование-декодирование
фрейм, множество макроблоков, каждый из которых кодируется в intra или inter режимах
P - предсказание
uF’n - восстановленный, но без фильтра, текущий фрейм
F’n-1 - один или два ранее закодированных фрейма
Dn - разница между блоком и его предсказанием

Слайд 13

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

ME - motion estimate,

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ ME - motion
поиск наиболее подходящего предсказания
MC - motion compensation, компенсация движения (вычисление векторов движения)
T - transformation, преобразование
Q - квантование
Entropy Coding – непосредственно кодирование
NAL - Network Abstraction Layer , формат для передачи по различным каналам

H.264 / Кодирование-декодирование

Слайд 14

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / Inter-блоки

При

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
кодировании inter-(макро)блока возникают вектора движений
Если вектор движения по яркостной компоненте Y равен (x,y), то соответствующий вектор по Cr и Cb будет равен (x/2,y/2)

Текущий фрейм

x=x2-x1

y=y2-y1

Фрейм с
предсказанием

Слайд 15

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Каждый фрейм представляется как

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Каждый фрейм представляется
одна плоскость (slice) или несколько видеоплоскостей.
Типы slice: I, P, B, SP, SI

Компенсация движения / Slices

Слайд 16

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / I-slice

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /

I-slice – плоскость, состоящая исключительно из intra-макроблоков
(первый фрейм всегда является I-slice)

Макроблоки могут
ссылать только на
уже закодированные
макроблоки из той же
slice

Слайд 17

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / P-slice

Для

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
пропускаемых макроблоков посылается только сигнал о том, что он пропускаемый и больше никаких данных

intra

inter

Skipped

Слайд 18

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / Разбиение

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
макроблока

древовидная структура компенсации движения

Слайд 19

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / SP

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
and SI slices

Основная идея: SP (switching P) и SI (switching I) slices – это кодирование ДОПОЛНИТЕЛЬНЫХ кадров, дающих В ТОЧНОСТИ такой же результат, как и основные кадры в потоке.

Слайд 20

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / SP

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
and SI slices

SP (switching P) и SI (switching I) slices могут использоваться для:
обеспечения устойчивости к ошибкам
для переключения между различными потоками (когда передается, например, стереопоток)
для fast forward.

Слайд 21

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / SP-slice

Использование

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
SP/SI-slices для переключения
между потоками:

В стандартах до H.264 возникала “switch point”. При этом образуется I- slice что приводит к увеличению числа данных в каждой такой точке

Слайд 22

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / SP-

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
and SI-slices

SP-slices (AB2 и B2) используются для кодирования одной и той же плоскости (B3), ссылаясь на два фрейма (A1 и B1) из разных потоков.
(аналогично строится BA2)
Из двух SP-slice получаются одни и те же данные.

Слайд 23

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / SP-

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
and SI-slices

Кодировщик кодирует SP-slices регулярными интервалами. Для каждой SP-slice имеется еще по крайней мере одна SP-slice, которая использует другой ссылочный фрейм или SI-slice.
Если во время передачи фрейм поврежден, получатель может информировать передатчик через обратную связь, и передатчик пошлет SP- slice, использующую другой ссылочный фрейм или SI-slice.

Устойчивость к ошибкам за счет использования SP/SI slices:

Слайд 24

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / SP

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
and SI slices

fast forward (основная идея: А11 полностью одинаков после А0-10 и после А10)

Слайд 25

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / Интерполирование

Увеличение

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
макроблока возможно в 2 и 4 раза.
Используется FIR (Finite Impulse Response)

b = round((E − 5F +
20G +20H − 5I + J) /32)

j = round((h + m) / 2)

Слайд 26

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / short и

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
long terms

a) недоступен для использования
b) short term
c) long term
d) готов к выводу на экран

После того, как фрейм закодирован (декодирован), шифратор (дешифратор) может присвоить ему один из следующих статусов:

short term

long term

long term

недоступен для использования

Adaptive memory control command

Слайд 27

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / список0 и

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
список1

long и short terms выстраиваются в два списка:

список 1 -фреймы с номерами больше текущего, по возрастанию, затем- меньше
текущего по убыванию

список 0 - фреймы с номерами меньше текущего по убыванию,затем - больше текущего, по возрастанию

Пример: имеются terms
123,125,126,128,129,130
текущий фрейм – номер 127

Слайд 28

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / B-slice

Каждое

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
разбиение inter-кодируемого макроблока в B-slice может быть предсказано одной или двумя ссылочными кадрами, до или после текущего кадра

Слайд 29

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / B-slice

каждый (макро)блок

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
в B-slice предсказан:

в режиме Direct
компенсация движения из списка0
компенсация движения из списка1
Bi-предсказание из списка0 и списка1

список0

Bi

8x8 : все части
кодируются в
одном режиме

16x16

Слайд 30

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / Bi-предсказание

>>1

список1

список0

текущий

residual

pred(i,j)=
(pred0(i,j)+pred1(i,j)+1)>>1

+

+

+

+

-

1

+

образуется
два вектора

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
движения

Слайд 31

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / intra-предсказание

9 режимов

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
предсказания для Y 4x4,
4 для Y 16x16, 4 для Cr(Cb) 8x8

режим 0 (вертикальный)

У всех режимов разная ошибка предсказания
Sum of Absolute Errors(SAE)

Слайд 32

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / intra-предсказание

в режимах

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
3-8 используется weighted average :
в режиме 4: d=(B/8+C/2+D/8)

режим 1

режим 2(DC)

Слайд 33

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / intra-предсказание

mE=min(modeA,modeB)-наиболее
вероятный

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
режим блока E

A вне плоскости
A не intra

mE=min(2,modeB)

кодировщик(декодер) посылает для каждого блока 4x4 2 флага:
prev_intra_4x4_pred_mode и rem_intra_4x4_pred_mode

rem, если prev=1, rem

modeE=

mE, если prev=0

rem+1, если pred=1, rem>=mE

Слайд 34

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Компенсация движения / Предсказание ВД

Кодируется

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Компенсация движения /
не сам вектор движения, а разница между ним и другим вектором движения

Для ВД блоков макроблока E
предсказаниями являются ВД
из блоков:
E=2 блока 16x8 B/A
E=2 блока 8x16 A|C
в остальных случаях –
среднее из A,B и C

Слайд 35

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Преобразование

Y=

Матрица CXCT – основа

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Преобразование Y= Матрица
2D трансформации
E- матрица динамических векторов

Cf

CfT

Ef

Слайд 36

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Квантование

коэффициенты
квантования

Qstep - определяется

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Квантование коэффициенты квантования
параметром квантования QP

Слайд 37

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Фильтрация (деблокинг)

(за исключением границ

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Фильтрация (деблокинг) (за
плоскости)

Cr 8x8

Y 16x16

Фильтрация применяется на границах блоков

При условии, что

bs>0

|p1-p0|

|q1-q0|

b) |p0-q0|

Слайд 38

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Фильтрация (деблокинг)

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Фильтрация (деблокинг)

Слайд 39

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Фильтрация (деблокинг)

в p и(или)

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Фильтрация (деблокинг) в
q есть
закодированные коэффициенты?

p или q из intra?

Г -граница макроблока?

bs=4

bs=3

bs=2

bs=1

bs=0

p и q ссылаются на разные картинки
или на картинки с разными номерами
или их вектора движений отличаются
в одной или более компоненте по Y?

да

да

да

нет

нет

нет

да

нет

bs- сила границы
(boundary strength)

Слайд 40

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Перестановка/Порядок считывания макроблока

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

Cb

Cr

Y

DC

-1

Блок –1

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Перестановка/Порядок считывания макроблока
из коэффициентов DС
образуется только в
16x16 Intra-кодируемых блоках

Слайд 41

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Перестановка

intra 4x4 для interlaced

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Перестановка intra 4x4

video

intra 4x4 для progressive video

порядок обхода макроблоков в плоскости

Слайд 42

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding / Кодирование плоскости

inter

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding /
или intra

Слайд 43

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding

Кодируются следующие данные:

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding Кодируются следующие данные:

Слайд 44

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding

entropy_coding_mode:

1:

0:

Residual – CALVC
(Context

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding entropy_coding_mode:
Adaptive Variable Length Coding)
остальное - Exp-Colomb

все данные – CABAC
(Context-based Adaptive Binary
Arithmetic Coding)

Слайд 45

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding / CALVC

После

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding /
компенсации движения, преобразования и квантования, блок обычно состоит из большого числа нулей

Блок считывается
в зигзаг порядке
(см. Перестановка)

0,3,0,1,-1,-1,0,1,0...0

Слайд 46

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding / CALVC

Кодируются

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding / CALVC Кодируются следующие величины:
следующие величины:

Слайд 47

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

total_zeros –число нулей до

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ total_zeros –число нулей
последнего ненулевого коэффициента (3)

Далее кодируются:
оставшиеся коэффициенты
1 - level(1) (тоже в обратном порядке)
3 - level(0)

run_before

0, 3, 0, 1, -1, -1, 0, 1, 0...0

1

0

0

1

не кодируется

Entropy Coding / CALVC

Слайд 48

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding / Exp-Colomb

зависит от

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding /
частоты
встречаемости параметра

codeword=[M нулей][1][INFO]

где

Слайд 49

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

Entropy Coding / CABAC

CABAC

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ Entropy Coding /
(Context Adaptive Binary Arithmetic Coding):
Выбор вероятностной модели для каждого синтаксического элемента в соответствии с его контекстом
Адаптация оценок вероятности на основании локальной статистики
Использование арифметического кодирования предпочтительнее VLC

Слайд 50

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

I. Бинаризация

Кодирование данных value

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ I. Бинаризация Кодирование
проходит стадии:

Entropy Coding / CABAC

Слайд 51

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

ek=|valueA|+|valueB|

где bin1 – первый

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ ek=|valueA|+|valueB| где bin1
бит value, bin2- второй и т.д.

II. Выбор контекстной модели

Entropy Coding / CABAC

Слайд 52

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

III.Арифметическое кодирование каждого бина
(используются

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ III.Арифметическое кодирование каждого
две вероятности p[bin=‘0’] p[bin=‘1’])
IV.Обновление модели
Пример. Выбрана model2 и bin=‘0’
model2_0_count++;
if (model2_0_count>threshold) {
model2_0_count=0
model2_1_count=0;
}

Entropy Coding / CABAC

Слайд 53

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/

NAL

NAL
header

NAL
header

посл-ть
байтов

посл-ть
байтов

...

...

Network Abstraction

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ NAL NAL header
Layer - Сетевой Абстрактный Уровень
Форматирует видео после Entropy Encoding и добавляет к данным заголовок нужного типа, чтобы в дальнейшем передать информацию по любому из всего разнообразия транспортных уровней или носителей данных
Имя файла: Сжатие-видео-H.264.pptx
Количество просмотров: 220
Количество скачиваний: 1