Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 4_2012.docx
Скачиваний:
23
Добавлен:
23.11.2019
Размер:
1.43 Mб
Скачать

Сжатие в кодере mpeg 2

Сжатие в кодере MPEG 2 — сложный шестиуровневый процесс в виде иерархической структуры: блок - макроблок - слайс (вырезка) - кадр - группа кадров - последовательность кадров (рис. 4).

Рисунок 4 – Иерархическая структура кодирования MPEG 2

Сначала обрабатываются фрагменты изображения – блоки - размером 8x8 пикселов, несущие информацию о яркости или цветности. Блок (основной объект, к которому применяется ДКП) является ба­зовой структурной единицей, над которой осуществляются все основ­ные операции кодирования. Матрица блока состоит из 8x8 = 64 пик­селей, т. е. имеет 64 отсчета. В телевизионном кадре по вертикали размещается 576/8 = 72 столбцов матрицы, а по горизонтали 704/8 = 88 строк матрицы. В итоге полное телевизионное изображение форми­руется из (72x88) = 6336 блоков, т. е. матриц яркостных данных, на которых возможно провести ДКП. Блок цветоразностных данных в формате изображения 4:2:2 отсутствует.

Яркостные блоки Y организуются в макроблоки (16x16 пикселов), состоящие из четырех блоков. Макроблок – это основной объект для предсказания с компенсацией движения.

Один или более смежных макроблоков груп­пируются вместе и образуют вырезку (слайс), в которой по вертикали 16 пикселов, а по горизонтали 16n (где n — 1, 2, 3 и т.д.) пикселов.

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

В области поиска осуществляется поиск «своего» макроблока в те­кущем кадре, смежном с опорным. Область поиска включают в себя 64x64 пикселей, т. е. ограничена размерами в 4x4 макроблока.

Таким образом, кадр, состоящий из группы слайсов, является пер­вичной кодированной единицей передаваемого изображения. Последова­тельность из 12...15 кадров составляет группу кадров (GoPGroup of Picture) трех типов (I, Р, В), из которых только один I-кадр (Interframe) с внутрикадровым кодированием является опорным для декодирования остальных кадров (Р и В) группы, три или четыре Р-кадра (Predictive — предсказанные) используют межкадровое кодирование с компенсацией движения по ближайшему предшествующему I-кадру и 8...10 В-кадров (Bidirectional — двунаправленные) с межкадровым кодированием и пред­сказанием по последующим и предыдущим I- и Р-кадрами.

Группа кад­ров GoP снабжается заголовком, и полученная структура данных назы­вается элементарным потоком данных.

Последовательность кадров при межкадровом сжатии видео­данных

Для межкадрового сжатия видеоданных выбирается группа кадров (группа изображений GOP - Group of Pictures), которая состоит из нескольких последовательных кадров, объединении вместе и обеспечивающих возможность условного доступа к каждому ее кадру.

I-кадры. Группа кадров всегда начинается с опорного I-кадра (Intra Frames), т. е. с изображения, которое подвергается только внутрикадровому сжатию - ДКП. Изображение I-кадра кодируется автономно, независимо от других кадров, и внутрикадровое сжатие видео данных здесь относительно небольшое. Это нужно для того, чтобы на прием­ной стороне изображение I-кадра меньше подвергалось изменениям, ошибкам и обеспечивало бы тем самым высокую точность восстанов­ления В- и Р-кадров, что очень важно. При наличии ошибок и искаже­ний в опорных кадрах они автоматически переносятся на следующие кадры. Количество I-кадров, входящих в группу GOP, может быть са­мым разным - все определяется возможностям кодера и может изме­няться. I-кадры играют также решающую роль при синхронизации ви деопоследовательностей и звуковых последовательностей. Структура группы кадров показана на рис. 5 и 6.

Рисунок 5 - Типовая последовательность I-, B- и P-кадров

P-кадр может ссылаться только на предшествующие I- или P-кадры, тогда как B-кадр может ссылаться и на предшествующие, и на последующие I- или P-кадры.

Рисунок 6 - Структура группы кадров (изображений) при передаче по каналу связи

Как видно из рис. 5, после определенного количества Р- и В- кадров снова следует опорный I-кадр. Группа кадров должна быть дос­таточно большой, если необходимо получить высокую степень сжатия информации. С другой стороны, чем чаще следуют I-кадры, тем выше качество изображения, но тем больший объем информации в реаль­ном масштабе времени нужно передать по каналу связи, т. е. тем ши­ре должна быть его частотная полоса. Считается оптимальным, если на один I-кадр приходится в среднем от 7 до 15 Р- и В-кадров.

Р-кадры (Predicted Frames). Текущие кадры Р-типа кодируются или на основе предыдущего опорного I-кадра, или предыдущего опорного Р-кадра предсказанием вперед. Сравнение и получение разностной информации между кадрами происходит по макроблокам. В текущих Р-кадрах информация сравнивается макроблоками с опор­ным I-кадром до тех пор, пока в любом макроблоке текущего кадра не появится новый фрагмент. С этого момента кодирование переключа­ется на внутрикадровое, т. е. применяется ДКП и формируется новый Р-кадр, но уже как опорный. В опорных Р-кадрах сокращается про­странственная (за счет ДКП) и временная избыточность (за счет меж­кадрового сжатия относительно опорных I-кадров) и они сами исполь­зуются в качестве опорных для В-кадров. В этом случае необходима высокая точность их восстановления. В Р-кадрах по сравнению с I-кадрами достижимое сжатие информации в три раза выше.

В-кадры (Bidirectional Interpolated Frames) кодируются в зависи­мости от характера передаваемых сюжетов телевизионного изобра­жения следующими способами:

  • Предсказанием следующего ближайшего В-кадра на основе пре­дыдущего опорного I- или Р-кадра (предсказанием вперед с компен­сацией движения).

  • Обратным предсказанием (предсказанием назад с компенсацией движения). Опорным служит следующий, соседний I- или Р-кадр. Та­кое предсказание реализуется при появлении больших площадей в изображении (в кадре), которых не было в предшествующем кадре.

  • Двунаправленным предсказанием на основе предыдущего и сле­дующего I- или Р-кадров, т. е. используется комбинация двух пред­сказаний - предсказание вперед и обратное предсказание - предска­зание назад с компенсацией движения. Опорными служат два кадра - один из них ближайший предыдущий I-или Р-кадр, а другой ближай­ший следующий I- или Р-кадр.

  • Внутрикадровым предсказанием без компенсации движения только на основе I-кадров. При этом в текущем кадре информация сравнивается по макроблокам с опорным I-кадром и выделяется раз­ностная информация между ними. Такое предсказание используется при резкой смене сюжета или при больших скоростях перемещения объекта изображения.

Следует отметить, что в В-кадрах достигается самое высокое сжа­тие, цифровой информации - в 4,5 раза по сравнению с I-кадрами.

Поскольку степень сжатия снижает точность восстановления, то В-кадры не используются в качестве опорных.

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

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

Использование простой попиксельной разности последовательных кадров позволяет получить выгоду при сжатии видеоряда, содержащего неподвижные объекты. Но что произойдет с этой разностью, если объект или фон сдвинется всего на несколько пикселей? В зависимости от текстуры этого объекта разность может увеличиться весьма значительно, причем неприятным для алгоритма сжатия образом (может содержать много резких переходов цветов, то есть высоких частот). Поэтому все современные алгоритмы сжимают не просто попиксельную разность двух последовательных кадров, а разность текущего кадра и так называемого «скомпенсированного» кадра. Скомпенсированный кадр - это один из соседних (уже обработанных алгоритмом, то есть сжатых) кадров, в котором часть объектов (в идеале - все) перемещены и/или трансформированы так, чтобы этот измененный кадр был как можно более близок в некоторой метрике к текущему кодируемому кадру, разность с которым и будет непосредственно сжиматься. То есть скомпенсированный кадр можно получить, зная сам соседний кадр (обычно предыдущий) и некоторую дополнительную метаинформацию, которая называется информацией о движении.

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

Кадр 79

Кадр 80

Разность кадров 80 и 79 (контрастность увеличена втрое)

Разность кадра 80 со скомпенсированным кадром 79 (контрастность увеличена втрое)

Рисунок 7 – Последовательные кадры, попиксельная разность кадров и разность с компенсированным кадром

Существует несколько способов компенсации движения. Один из них - алгоритм поиска векторов, на которые сдвинулись блоки текущего кадра по отношению к предыдущему. Для каждого блока в изображении мы находим блок близкий по некоторой метрике (например, по сумме квадратов разности пикселей) в предыдущем кадре в некоторой окрестности текущего положения блока. Если минимальное расстояние по выбранной метрике с блоками в предыдущем кадре больше выбранного порога - блок сжимается независимо.

Рисунок 8 - Схема работы алгоритма сопоставления блоков

Таким образом, вместе с каждым блоком в поток теперь сохраняются координаты смещения максимально похожего блока в предыдущем I- или P-кадре, либо признак того, что данные сжаты независимо. Эти координаты задают вектор смещения блока (motion vector ). В ситуациях, когда камера наезжает на объект или дает панораму, использование векторов смещений блоков позволяет значительно уменьшить амплитуду разности кадров, и как следствие - значительно поднять степень сжатия.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]