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

Презентация:



Advertisements
Похожие презентации
Лекция 1 Алгоритмы сжатия изображений Медведева Елена Викторовна дисц. Цифровая обработка изображений.
Advertisements

Урок повторения по теме: «Сила». Задание 1 Задание 2.
1. Определить последовательность проезда перекрестка
M ULTIMEDIA Solomeshch Natalia. К ОДЕК Н.264 Т ЕРМИНЫ закодированный снимок порядковый номер счетчика снимка ссылочные снимки Макроблоки типа I Макроблоки.
Введение в сжатие видео Дмитрий Ватолин Московский Государственный Университет CS MSU Graphics&Media Lab Version 2.4.
Школьная форма Презентация для родительского собрания.
Разработал: Учитель химии, биологии высшей квалификационной категории Баженов Алексей Анатольевич.
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Ребусы Свириденковой Лизы Ученицы 6 класса «А». 10.
Рисуем параллелепипед Известно, что параллельная проекция тетраэдра, без учета пунктирных линий, однозначно определяется заданием проекций его вершин (рис.
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.

Типовые расчёты Растворы
3 Законы Кирхгофа справедливы для линейных и нелинейных цепей при постоянных и переменных напряжениях и токах.
Тем, кто учит математику, Тем, кто учит математике, Тем, кто любит математику, Тем, кто ещё не знает, Что может полюбить математику Посвящается…
Набор игр Создание игровых ситуаций на уроках математики повышает интерес к математике, вносит разнообразие и эмоциональную окраску в учебную работу, снимает.
Развивающая викторина для детей "Самый-самый " Муниципальное общеобразовательное учреждение средняя общеобразовательная школа 7 ст. Беломечётской.
Michael Jackson
Масштаб 1 : 5000 Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
1© Богомолова ОМ. Угол с вершиной в центре окружности называется центральным Угол, вершина которого принадлежит окружности, а стороны пересекают окружность,
Транксрипт:

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

CS MSU Graphics & Media Lab (Video Group) Структура материала u Введение u Компенсация движения u Преобразование u Квантование u Фильтрация u Перестановка u Entropy coding u NAL

CS MSU Graphics & Media Lab (Video Group) Эволюция стандартов Стан-тГодПр-тельЧто нового H ITU-T16/16 целочисленная компенсация движения 8 8 DPCM/DCT, преобразование, VLE кодирование MPEG-11993ISO/IECBi-предсказание, half- компенсация движения MPEG-21997ISO/IEC ITU-TВыбор качества, Profiles и Levels, Interlaced video H ITU-TПоддерживает передачу данных ниже 30 кбит/сек, цепи и сети с пакетной коммуникаций P-slice могут включать I-блоки H.263+, H H.26L ITU-T1) Поддерживает все скорости передачи информации в битах, большее количество опций 2) Акцент на погрешностях 3) Long-term и дальнейшее развитие до H.264 MPEG-41998ISO/IEC H ISO/IEC ITU-T10-ая часть MPEG-4, см далее

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

CS MSU Graphics & Media Lab (Video Group) Эволюция стандартов

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

CS MSU Graphics & Media Lab (Video Group) H.264 / используемые форматы видео u Кодируются отдельные изображения (фреймы) u H.264 поддерживает progressive и interlaced форматы видео u Размер изображений должен быть кратен 16 по обоим измерениям progressive videointerlaced video top field bottom field top field 16a 16b

CS MSU Graphics & Media Lab (Video Group) 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 для цветовых компонент Y Cb Cr

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

CS MSU Graphics & Media Lab (Video Group) H.264 Кодирование

CS MSU Graphics & Media Lab (Video Group) H.264 Декодирование

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

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

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

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

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

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

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / Разбиение макроблока древовидная структура компенсации движения x x x x x x4 0

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

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

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / SP-slice Использование SP/SI-slices для переключения между потоками: В стандартах до H.264 возникала switch point. При этом образуется I- slice что приводит к увеличению числа данных в каждой такой точке B3B3 B0B0 B4B4 B1B1 B2B2 поток B A3A3 A0A0 A4A4 A1A1 A2A2 поток АPPP I P P PP PP

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / SP- and SI-slices поток В P B3B3 P B0B0 P B4B4 P B1B1 SP B2B2 поток А SP AB 2 P A3A3 P A0A0 P A4A4 P A1A1 SP A2A2 SP-slices (AB 2 и B 2 ) используются для кодирования одной и той же плоскости (B 3 ), ссылаясь на два фрейма (A 1 и B 1 ) из разных потоков. (аналогично строится BA 2 ) Из двух SP-slice получаются одни и те же данные.

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

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / SP and SI slices fast forward (основная идея: А 11 полностью одинаков после А 0-10 и после А 10 ) A 10 A9A9 A8A8 A0A0 A 0-10 A PPP SPPSP

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / Интерполирование Увеличение макроблока возможно в 2 и 4 раза. Используется FIR (Finite Impulse Response) b = round((E 5F + 20G +20H 5I + J) /32) j = round((h + m) / 2) bbCD IFEJbGH PLKQsMN ggRS hhTU ccjhddmeeff BA

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

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

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

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

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

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / intra-предсказание DMHBEFG I J K L b C cd efgh ijkl mnop a A DMHBEFG I J K L b C cd efgh ijkl mnop a A 9 режимов предсказания для Y 4x4, 4 для Y 16x16, 4 для Cr(Cb) 8x8 режим 0 (вертикальный) У всех режимов разная ошибка предсказания Sum of Absolute Errors(SAE)

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / intra-предсказание DMB I J K L b C cd efgh ijkl mnop a ADMB I J K L CA a = b =.. = p = (A D + I L)/8 в режимах 3-8 используется weighted average : в режиме 4: d=(B/8+C/2+D/8) DMHBEFG I J K L b C cd efgh ijkl mnop a A 7 5 DMHBEFG I J K L b C cd efgh ijkl mnop a A 6 8 DMHBEFG I J K L C d A 3 4 режим 1 режим 2(DC)

CS MSU Graphics & Media Lab (Video Group) Компенсация движения / intra-предсказание C EA B 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

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

CS MSU Graphics & Media Lab (Video Group) Преобразование X Y= Матрица CXC T – основа 2D трансформации E- матрица динамических векторов CfCfCfCf CfTCfTCfTCfT EfEf

CS MSU Graphics & Media Lab (Video Group) Квантование коэффициенты квантования Qstep - определяется параметром квантования QP QP012345…18…24…30 … 51 Qstep … 224

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

CS MSU Graphics & Media Lab (Video Group) Фильтрация (деблокинг) q2 q1 q0 p0 p1 p2 p3 q3 Г p2p1p0q0q1q2q3p3 Г

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

CS MSU Graphics & Media Lab (Video Group) Перестановка/Порядок считывания макроблока Cb Cr Y DC Блок –1 из коэффициентов DС образуется только в 16x16 Intra-кодируемых блоках

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

CS MSU Graphics & Media Lab (Video Group) Entropy Coding / Кодирование плоскости inter или intra inter 8x8, QP,закодированные коэффициенты трансформации данные о плоскости header плоcкости МБSkippedМБ … тип МБ intra+ inter(кроме8x8) остальное

CS MSU Graphics & Media Lab (Video Group) Entropy Coding Кодируются следующие данные: наименованиеназначение mb_typeтип макроблока Coded_block _pattern показывает какие блоки внутри макроблока содержат закодированные коэффициенты QPпараметр квантования, кодируются как разность с предыдущим Refer_frame_indexномера фреймов для предсказания Residualразница между блоком и его предсказанием MVвектор движения

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

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

CS MSU Graphics & Media Lab (Video Group) Entropy Coding / CALVC Кодируются следующие величины: названиеЧто означаетДоп. знач. при- мер Coeff_tok en Число ненулевых коэффициентов Trailing _ones Число 1 и -1 (если их больше, то остальные кодируются обычным способом) Trailing_ ones_sign _flag Знаки при коэф. 1 и -1, кодир-ся как trailing_ones, начиная с конца последовательности 0 (+) 1 (-) 0,1,1

CS MSU Graphics & Media Lab (Video Group) total_zeros –число нулей до последнего ненулевого коэффициента (3) Далее кодируются: оставшиеся коэффициенты 1 - level(1) (тоже в обратном порядке) 3 - level(0) run_before 0, 3, 0, 1, -1, -1, 0, 1, не кодируется Entropy Coding / CALVC

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

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

CS MSU Graphics & Media Lab (Video Group) I. Бинаризация Кодирование данных value проходит стадии: |value|Бинаризация s 2110s 31110s … s >8Exp-Colomb Entropy Coding / CABAC

CS MSU Graphics & Media Lab (Video Group) e k =|value A |+|value B | binКонтекстная модель 10 e k

CS MSU Graphics & Media Lab (Video Group) 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

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

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