'

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

Понравилась презентация – покажи это...





Слайд 0

1 Сжатие видео H.264 Дмитрий Ватолин Московский Государственный Университет CS MSU Graphics&Media Lab Version 1.1


Слайд 1

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 2 Структура материала Введение Компенсация движения Преобразование Квантование Фильтрация Перестановка Entropy coding NAL


Слайд 2

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


Слайд 3

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 4 Список сокращений MPEG- Moving Picture Experts Group ISO - International Standards Organisation VCEG - Video Coding Experts Group IEC- International Electrotechnical Commission ITU - International Telecommunications Union


Слайд 4

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


Слайд 5

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


Слайд 6

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 7 H.264 / используемые форматы видео Кодируются отдельные изображения (фреймы) H.264 поддерживает progressive и interlaced форматы видео Размер изображений должен быть кратен 16 по обоим измерениям progressive video interlaced video


Слайд 7

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 8 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 для цветовых компонент


Слайд 8

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


Слайд 9

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


Слайд 10

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


Слайд 11

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


Слайд 12

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


Слайд 13

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


Слайд 14

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


Слайд 15

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


Слайд 16

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


Слайд 17

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


Слайд 18

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 19 Компенсация движения / SP and SI slices Основная идея: SP (switching P) и SI (switching I) slices – это кодирование ДОПОЛНИТЕЛЬНЫХ кадров, дающих В ТОЧНОСТИ такой же результат, как и основные кадры в потоке.


Слайд 19

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 20 Компенсация движения / SP and SI slices SP (switching P) и SI (switching I) slices могут использоваться для: обеспечения устойчивости к ошибкам для переключения между различными потоками (когда передается, например, стереопоток) для fast forward.


Слайд 20

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 21 Компенсация движения / SP-slice Использование SP/SI-slices для переключения между потоками: В стандартах до H.264 возникала “switch point”. При этом образуется I- slice что приводит к увеличению числа данных в каждой такой точке


Слайд 21

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 22 Компенсация движения / SP- and SI-slices SP-slices (AB2 и B2) используются для кодирования одной и той же плоскости (B3), ссылаясь на два фрейма (A1 и B1) из разных потоков. (аналогично строится BA2) Из двух SP-slice получаются одни и те же данные.


Слайд 22

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 23 Компенсация движения / SP- and SI-slices Кодировщик кодирует SP-slices регулярными интервалами. Для каждой SP-slice имеется еще по крайней мере одна SP-slice, которая использует другой ссылочный фрейм или SI-slice. Если во время передачи фрейм поврежден, получатель может информировать передатчик через обратную связь, и передатчик пошлет SP- slice, использующую другой ссылочный фрейм или SI-slice. Устойчивость к ошибкам за счет использования SP/SI slices:


Слайд 23

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 24 Компенсация движения / SP and SI slices fast forward (основная идея: А11 полностью одинаков после А0-10 и после А10)


Слайд 24

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 25 Компенсация движения / Интерполирование Увеличение макроблока возможно в 2 и 4 раза. Используется FIR (Finite Impulse Response) b = round((E ? 5F + 20G +20H ? 5I + J) /32) j = round((h + m) / 2)


Слайд 25

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 26 Компенсация движения / short и long terms a) недоступен для использования b) short term c) long term d) готов к выводу на экран После того, как фрейм закодирован (декодирован), шифратор (дешифратор) может присвоить ему один из следующих статусов: short term long term long term недоступен для использования Adaptive memory control command


Слайд 26

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 27 Компенсация движения / список0 и список1 long и short terms выстраиваются в два списка: список 1 -фреймы с номерами больше текущего, по возрастанию, затем- меньше текущего по убыванию список 0 - фреймы с номерами меньше текущего по убыванию,затем - больше текущего, по возрастанию Пример: имеются terms 123,125,126,128,129,130 текущий фрейм – номер 127


Слайд 27

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


Слайд 28

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 29 Компенсация движения / B-slice каждый (макро)блок в B-slice предсказан: в режиме Direct компенсация движения из списка0 компенсация движения из списка1 Bi-предсказание из списка0 и списка1 список0 Bi 8x8 : все части кодируются в одном режиме 16x16


Слайд 29

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 30 Компенсация движения / Bi-предсказание >>1 список1 список0 текущий residual pred(i,j)= (pred0(i,j)+pred1(i,j)+1)>>1 + + + + - 1 + образуется два вектора движения


Слайд 30

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 31 Компенсация движения / intra-предсказание 9 режимов предсказания для Y 4x4, 4 для Y 16x16, 4 для Cr(Cb) 8x8 режим 0 (вертикальный) У всех режимов разная ошибка предсказания Sum of Absolute Errors(SAE)


Слайд 31

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


Слайд 32

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 33 Компенсация движения / intra-предсказание mE=min(modeA,modeB)-наиболее вероятный режим блока E A вне плоскости A не intra mE=min(2,modeB) кодировщик(декодер) посылает для каждого блока 4x4 2 флага: prev_intra_4x4_pred_mode и rem_intra_4x4_pred_mode rem, если prev=1, rem<mE modeE= mE, если prev=0 rem+1, если pred=1, rem>=mE


Слайд 33

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 34 Компенсация движения / Предсказание ВД Кодируется не сам вектор движения, а разница между ним и другим вектором движения Для ВД блоков макроблока E предсказаниями являются ВД из блоков: E=2 блока 16x8 B/A E=2 блока 8x16 A|C в остальных случаях – среднее из A,B и C


Слайд 34

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


Слайд 35

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


Слайд 36

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 37 Фильтрация (деблокинг) (за исключением границ плоскости) Cr 8x8 Y 16x16 Фильтрация применяется на границах блоков При условии, что bs>0 |p1-p0| |q1-q0| b) |p0-q0|


Слайд 37

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


Слайд 38

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 39 Фильтрация (деблокинг) в p и(или) q есть закодированные коэффициенты? p или q из intra? Г -граница макроблока? bs=4 bs=3 bs=2 bs=1 bs=0 p и q ссылаются на разные картинки или на картинки с разными номерами или их вектора движений отличаются в одной или более компоненте по Y? да да да нет нет нет да нет bs- сила границы (boundary strength)


Слайд 39

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 40 Перестановка/Порядок считывания макроблока


Слайд 40

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 41 Перестановка intra 4x4 для interlaced video intra 4x4 для progressive video порядок обхода макроблоков в плоскости


Слайд 41

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 42 Entropy Coding / Кодирование плоскости inter или intra


Слайд 42

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


Слайд 43

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 44 Entropy Coding entropy_coding_mode: 1: 0: Residual – CALVC (Context Adaptive Variable Length Coding) остальное - Exp-Colomb все данные – CABAC (Context-based Adaptive Binary Arithmetic Coding)


Слайд 44

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


Слайд 45

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


Слайд 46

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 47 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


Слайд 47

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 48 Entropy Coding / Exp-Colomb зависит от частоты встречаемости параметра codeword=[M нулей][1][INFO] где


Слайд 48

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


Слайд 49

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


Слайд 50

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 51 ek=|valueA|+|valueB| где bin1 – первый бит value, bin2- второй и т.д. II. Выбор контекстной модели Entropy Coding / CABAC


Слайд 51

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 52 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


Слайд 52

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


Слайд 53

CS MSU Graphics & Media Lab (Video Group) http://www.compression.ru/video/ 54 NAL разбиение данных закодированная плоскость уровень кодирования видео закодированный макроблок Рационально представляет содержание информации управляющие данные сетевой абстрактный уровень


×

HTML:





Ссылка: