Алгоритм обработки видеоданных
При разработке стандарта были приняты следующие ограничения,
определившие его область применения:
- размер изображения по горизонтали ≤ 768 пикс.;
- размер изображения по вертикали ≤ 576 строк;
- число макроблоков ≤ 396;
- частота кадров ≤ 30 Гц;
- развертка прогрессивная;
- скорость цифрового потока ≤ 1,856 Мбит/с.
На первый взгляд может показаться, что нет особых препятствий к использованию MPEG-1 для кодирования сигналов вещательного телевидения - число строк и элементов в строке даже выше, чем требуется для изображения стандартной четкости (напомним, что это 720 х 576 или 720 х 480 пикселов, в зависимости от стандарта разложения). Ограничивающим параметром оказывается, как ни странно, число макроблоков в видеокадре. Для обработки ТСЧ изображения надо иметь (720:16) х (576:16) - 1620 макроблоков/кадр, а стандарт предусматривает только 396, что соответствует формату разложения не выше CIF (352 х 288 пикс.). Второе препятствие - отсутствие чересстрочной развертки, принятой сегодня во всех телевизионных системах стандартного качества.
В стандарте MPEG-1 используется большая часть современных инструментов цифровой компрессии, рассмотренных в предыдущем разделе: предсказание, внутрикадровое и межкадровое кодирование, ДКП, компенсация движения, адаптивное квантование, энтропийное кодирование. Определены три типа видеокадров:
I-видеокадры (от intra — внутри) кодируются без какой-либо связи с другими видеокадрами (внутрикадровое кодирование);
P-видеокадры (от predicted - предсказанные) формируются методом предсказания вперед по предыдущим видеокадрам. Первый Р-кадр предсказывается по I-кадру, второй и последующие - по предыдущему Р-кадру;
В-видеокадры формируются методом предсказания «вперед» или предсказания «назад» (отсюда bidirectional, т.е. двунаправленный). Польза В-кадров проясняется при рассмотрении задней границы движущегося объекта. При его движении фон открывается все больше, и для передачи этого участка фонового изображения выгоднее воспользоваться данными более позднего кадра (рис. 5.42). Кодер рассчитывает как прямое, так и обратное предсказание и посылает декодеру данные, имеющие наименьший объем. На вход кодера поступает компонентный сигнал «4:2:2»
Рис. 5.42. Предсказание участка изображения из более позднего кадра
Стандартное разрешение 720 х 576(480) пикселов должно быть приведено в соответствие с возможностями MPEG-1, требуется понижающая дискретизация отсчетов яркости и цветности. Так как при разработке стандарта была принята пониженная по сравнению с исходным компонентным сигналом «4:2:2» цветовая четкость, цветоразноснсные сигналы Св и CR должны подвергаться на входе кодера дополнительной субдискретизации по вертикали с коэффициентом 2, приводя к структуре «4:2:0».
Рис. 5.43,а. Состав макроблока сигнала «4:2:0»
Рис. 5.43,б. Таблица квантования I-кадров
Разрядность квантования входного сигнала должна быть 8 бит.
Алгоритм работает следующим образом. Видеокадр разбивается на макроблоки размером 16 х 16 отсчетов, каждый из которых содержит по 4 блока отсчетов яркости размером 8x8 пикселов и по одному блоку отсчетов сигналов Св и CR (с учетом понижающей дискретизации) (рис.5.43,а). При кодировании макроблока в составе I-кадра вычисляются коэффициенты ДКП, затем они квантуются с использованием таблицы квантования, имеющейся в памяти и кодера, и декодера и применяемой «по умолчанию» (рис. 5.43,б). Кодер может изменить элементы таблицы, тогда он сообщает об этом декодеру и посылает новые делители.
Если кодируется макроблок из состава предсказанного кадра, ищется сопряженный блок из опорного кадра, его значения поэлементно вычитаются из элементов кодируемого блока, и уже для этих разностей вычисляются коэффициенты ДКП и производится их квантование. Таблица квантования для макроблоков из Р- и В-кадров, применяемая по умолчанию, содержит число 16 во всех позициях, но также может быть изменена кодером. Отметим, что при поиске сопряженных блоков используются только отсчеты яркости. Полученные при этом векторы перемещения применяются и при кодировании блоков отсчетов цветоразностных сигналов.
Важным звеном алгоритма кодирования остается обеспечение постоянства выходной скорости цифрового потока. Отсчеты сигнала от источника поступают с постоянной скоростью, однако на выходе квантователя скорость поступления битов может варьироваться в широких пределах. Она зависит от типа видеокадра (понятно, что I-кадр требует значительно больше битов, чем Р- и В-кадры), от его содержания («спокойный» кадр с однородными участками требует меньше битов, чем кадр с выраженной мелкозернистой структурой). Попытка кодировать все кадры одинаковым числом битов приведет к изменению качества изображения от кадра к кадру, а это крайне неприятно для телезрителя.
Мы уже отмечали в предыдущей главе, что единственным средством выравнивания скорости потока является применение буферной памяти в кодере и декодере. Буфер может заполняться со стороны квантователя неравными порциями, а опустошаться в сторону канала равномерно, обеспечивая постоянную скорость цифрового потока. Но и здесь не все так просто. Быстрая смена сюжетов и связанное с этим увеличение доли I-кадров вскоре приведет к переполнению буфера, а длинный сюжет без движения - к его опустошению. Простое увеличение размера буфера вызовет возрастание задержки сигнала в кодере, что в некоторых случаях мешает телезрителям (беседа двух телеведущих в разных студиях).
Для сохранения приемлемого качества изображения при постоянной скорости потока необходимо, во-первых, регулировать шкалу квантования и, во-вторых, адаптивно распределять имеющийся ресурс битов между разными типами кадров с учетом их сложности. Эти задачи решаются в кодере специальным устройством - контроллером битов. Адаптивное управление процессом квантования осуществляется умножением всех элементов матрицы на масштабирующий множитель величиной от 8 до 1/4, общий для всех отсчетов макроблока, который также сообщается декодеру. Величина множителя больше 1 означает увеличение доли битов, выделяемой данному макроблоку или кадру, меньше 1 — соответствующее уменьшение.
Перераспределение ресурса между I-, Р- и В-кадрами производится кодером на основе оценки соотношения битов в предыдущих кадрах. Некоторые кодеры осуществляют кодирование «в два прохода», оценивая на первом проходе сложность видеокадра, выделяя ему на основе этой оценки определенный ресурс битов и уже на втором проходе кодируя отсчеты с учетом выделенного ресурса.
Упрощенная структурная схема кодера MPEG-1, реализующего описанный алгоритм, приведена на рис. 5.44. Невыделенными на рисунке оставлены элементы структурной схемы, участвующие в обработке I-кдров, выделенные жирным курсивом отмечены участки схемы, обрабатывающие Р-кадры, подчеркнутые линией - устройства, ответственные за обработку В-кадров. Кодер работает следующим образом. В режиме I-кадров осуществляется только пространственное кодирование. Коэффициенты ДКП квантуются с переменной длиной шага, зависящей от состояния буфера, кодируются кодом Хаффмана и направляются в буфер, откуда считываются с постоянной скоростью. В режиме с предсказанием вперед дискретно-косинусному преобразованию подвергается не весь текущий кадр, а только разность между ним и предыдущим, опорным кадром, для чего в кодере восстанавливается опорный кадр путем выполнения операций, обратных кодированию - восстановления отсчетов, обратного ДКП и восстановления движения по векторам перемещения, т.е. тех же операций, которые осуществляются для этой цели в декодере. В режиме двунаправленного предсказания формируются одновременно два опорных кадра - предыдущий и будущий, для чего используются две независимые схемы формирования. Кодер сравнивает предсказанные кадры с текущим, кодирует разности и решает, какое из предсказаний требует меньше битов и будет послано декодеру.
При кодировании ТВ-изображения, передаваемого с прогрессивной развёрткой, каждый кадр состоит из одного поля и разбивается на макроблоки.
В случае чересстрочной развёртки каждый кадр состоит из двух полей. Первое поле содержит нечётные строки кадра, а второе – чётные строки. При этом возможны два варианта кодирования кадра, выбор одного из которых для данного кадра осуществляется на основе оценки движения в нём.
В случае кадрового кодирования кодируемым изображением является полный кадр, который целиком хранится в ЗУ кодера, вследствии чего для кодирования одновременно доступны как чётные, так и нечётные строки. Кадровое кодирование выбирается в случаях, когда изменения во втором поле кадра относительно первого поля того же кадра незначительные. В противном случае возникают весьма заметные искажения типа «расчёска» (несовпадение вертикальных границ) и «жалюзи» (несовпадение горизонтальных границ) движущихся объектов (более подробно см. в П.3).
В случае полевого кодирования кодируемым изображением является каждое поле. Первое поле используется для предсказания макроблоков второго поля того же кадра. При этом в каждый блок элементов сигнала изображения входят элементы из одного поля, поэтому полевое кодирование не даёт вышеназванных искажений.
Алгоритм декодирования понятен из обобщенной схемы декодера, показанной на рис. 5.45.
Рис. 5.45. Обобщенная схема декодера MPEG-1
Дата добавления: 2015-03-20; просмотров: 2493;