<<
>>

Стандарт MPEG

Наконец мы подходим к ключевому вопросу мультимедиа — стандартам MPEG (Motion Pictures Experts Group — экспертная группа по вопросам движущегося изображения). Эти стандарты, ставшие международными в 1993 году, описывают основные алгоритмы, используемые для сжатия видеофильмов.
Поскольку фильмы содержат как изображение, так и звук, алгоритмы MPEG занимаются сжатием и того, и другого. Принципы сжатия аудиоданных и неподвижных изображений мы рассмотрели ранее, поэтому этот раздел мы посвятим обсуждению алгоритмов сжатия видео.

Первым законченным стандартом стал стандарт MPEG-1 (Международный Стандарт 11172). Его целью было создание выходного потока данных качества бытового видеомагнитофона (352x240 для NTSC) на скорости 1,2 Мбит/с. Мы уже видели ранее, что несжатый поток видеоинформации может составлять 472 Мбит/с (для экрана размером 1024x768). Для экрана 352x240 потребуется в 9,3 раза меньший поток данных, то есть 50,7 Мбит/с. Тем не менее и это значение намного превышает 1,2 Мбит/с, так что данную задачу никак нельзя назвать тривиальной.

Видеофильм в формате MPEG-1 можно передавать по витой паре на умеренные расстояния. Кроме того, фильмы в этом формате можно хранить на компакт-дисках.

Следом появился стандарт MPEG-2 (Международный стандарт 13818), разрабатывавшийся для сжатия видеофильмов качества широковещания до скорости потока от 4 до 6 Мбит/с, что позволяло передавать этот фильм в цифровом виде по стандартному телевизионному каналу NTSC или PAL. Позднее стандарт MPEG-2 был расширен для поддержки видеосигнала более высокого разрешения, включая HDTV. Сейчас он очень популярен, поскольку составляет основу DVD и цифрового спутникового телевидения.

Основные принципы стандартов MPEG-1 и MPEG-2 одинаковы. В первом приближении стандарт MPEG-2 является расширением стандарта MPEG-1 с дополнительными возможностями, форматами кадров и вариантами кодирования.

Сначала мы рассмотрим MPEG-1, а затем MPEG-2.

Алгоритм MPEG-1 состоит из трех частей: аудио- и видеошифраторов и системы, объединяющей эти два потока данных, как показано на рис. 7.42. Системы кодирования аудио и видео работают независимо, в результате чего возникает проблема синхронизации этих потоков в приемнике. Для решения этой проблемы используются системные часы, работающие на частоте 90 кГц. Показания этих часов хранятся в 33-битных счетчиках, что позволяет указывать время в интервале 24 часов. Эти отметки времени вносятся в закодированный результат и передаются получателю, который может использовать их для синхронизации изображения и звука.

Перейдем к рассмотрению сжатия видеоинформации с помощью алгоритма MPEG-1. В видеофильмах имеется избыточность двух типов: пространственная и временная. Алгоритм сжатия MPEG-1 использует оба типа. Чтобы использовать пространственную избыточность, можно просто кодировать каждый кадр отдельно алгоритмом JPEG. Иногда такой подход применяется, особенно если нужен прямой доступ к каждому кадру, например, при редактировании видеоизображения. Этот режим сжатия позволяет снизить поток данных до скорости от 8 до 10 Мбит/с.

Рис. 7.42. Синхронизация аудио- и видеопотоков в MPEG-1

Дополнительного сжатия можно достичь, используя преимущество того факта, что идущие подряд кадры часто бывают почти идентичны. Может показаться, что этот эффект не столь уж велик, так как в большинстве фильмов сцены часто меняются — в среднем каждые 3-4 с.. Тем не менее даже последовательность в 75 очень близких кадров позволяет применить значительно большее сжатие, нежели с помощью компрессии отдельных кадров алгоритмом JPEG.

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

Однако этот метод плохо подходит к сценам, в которых камера поворачивается или наезжает на снимаемый объект. Для таких сцен необходим какой-то способ компенсировать это движение камеры. В этом и состоит основное отличие MPEG от JPEG. Выходной поток MPEG-1 состоит из кадров четырех следующих типов:

1. I (Intracoded — автономные) — независимые неподвижные изображения, кодированные алгоритмом JPEG.

2. Р (Predictive — предсказывающие) — содержат разностную информацию относительно предыдущего кадра.

3. В (Bidirectional — двунаправленные) — содержат изменения относительно предыдущего и последующего кадров.

4. D (DC-coded — усредненные) — содержат усредненное по блоку значение, используемые для быстрой перемотки вперед.

1-кадры представляют собой обычные неподвижные изображения, кодированные алгоритмом JPEG с использованием полного разрешения яркости и половинного разрешения для обоих сигналов цветности. 1-кадры должны периодически появляться в выходном потоке по трем причинам. Во-первых, должна быть возможность просмотра фильма не с самого начала. Зритель, пропустивший первый кадр, не сможет декодировать все последующие кадры, если все кадры будут зависеть от предыдущих и 1-кадры не будут время от времени включаться в поток. Во-вторых, дальнейшее декодирование фильма станет невозможным в случае ошибки при передаче какого-либо кадра. В-третьих, наличие таких кадров существенно упростит индикацию во время быстрой перемотки вперед или назад. По этим причинам 1-кадры включаются в выходной поток примерно один- два раза в секунду.

Р-кадры, напротив, представляют собой разность между соседними кадрами. Они основаны на идее макроблоков, покрывающих 16x16 пикселов в пространстве яркости и 8x8 пикселов в пространстве цветности. При кодировании макроблока в предыдущем кадре ищется наиболее близкий к нему макроблок.

Пример использования макроблоков показан на рис. 7.43. Здесь мы видим три последовательных кадра с одинаковым задним планом, различающихся только положением человека.

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

Рис. 7.43. Три последовательных кадра

Стандарт MPEG-1 не указывает, как искать, насколько далеко искать или насколько хорошо должен подходить похожий макроблок. Все эти вопросы оставлены на усмотрение разработчика программы, реализующей стандарт MPEG-1. Например, макроблок можно искать в предыдущем кадре в текущей позиции с заданными смещениями по горизонтали и вертикали. Для каждой позиции может вычисляться количество совпадений матрицы яркости. Позиция с наибольшим значением совпадений будет объявляться победительницей при условии, что это значение превосходит некое пороговое значение. В противном случае макроблок будет считаться не найденным. Возможны, конечно, и значительно более сложные алгоритмы.

Макроблок, для которого найден похожий на него макроблок в предыдущем кадре, кодируется в виде разности значений яркости и цветности. Затем матрицы разностей подвергаются дискретному косинусному преобразованию, квантованию, кодированию длин серий и кодированию Хаффмана так же, как это делает алгоритм JPEG. В выходном потоке макроблок представляется в виде вектора сдвига (насколько далеко сдвинулся макроблок по горизонтали и вертикали от положения в предыдущем кадре), за которым следует список чисел, кодированных по Хаффману. Если же в предыдущем кадре не нашлось подходящего макроблока, текущее значение кодируется алгоритмом JPEG, как в 1-кадре.

Очевидно, что этот алгоритм обладает сильной асимметричностью. В принципе, программа может искать соответствие макроблоку в любой позиции предыдущего кадра. Такой подход позволит минимизировать выходной поток MPEG-1 за счет очень медленного кодирования.

Следовательно, такой метод применим для одноразового кодирования при создании фильмотеки, но не годится для видеоконференций реального времени.

Аналогично разработчики каждой реализации могут самостоятельно определять алгоритм сравнения макроблоков. Эта свобода позволяет разработчикам соревноваться в качестве и скорости своих алгоритмов при полной совместимости создаваемых алгоритмами потоков MPEG-1. Независимо от алгоритма поиска конечный выходной поток будет состоять либо из текущего блока, закодированного по стандарту JPEG, либо из закодированной в соответствии с тем же стандартом JPEG разности текущего и одного из предыдущего кадров, расстояние до которого должно быть указано.

Декодирование потока MPEG-1 выполняется довольно просто. Декодирование 1-кадров аналогично декодированию JPEG-изображений. Чтобы декодировать Р-кадр, декодер должен сохранить в буфере предыдущий кадр, а затем во втором буфере построить новый кадр из макроблоков как в абсолютной, так и в относительной кодировке. Кадры собираются макроблок за макроблоком.

В-кадры аналогичны Р-кадрам — с той лишь разницей, что позволяют привязывать макроблок либо к предыдущему, либо к следующему кадру. Такая дополнительная свобода позволяет достичь хорошей компенсации движения. Для декодирования В-кадров необходимо удерживать в памяти сразу три кадра: предыдущий, текущий и следующий. Хотя В-кадры позволяют добиться наибольшего сжатия, они поддерживаются не всеми реализациями.

D-кадры используются только для индикации изображения с низким разрешением при быстрой перемотке фильма. Выполнение обычного декодирования видеоформата MPEG-1 уже само по себе требует достаточной мощности процессора. Выполнять же это декодирование в десять раз быстрее при поиске практически нереально. Каждый D-кадр представляет собой просто среднее значение блока, без дальнейшего кодирования, что упрощает его отображение в режиме реального времени.

Перейдем теперь к стандарту MPEG-2. В основном, этот стандарт схож со стандартом MPEG-1, но он не поддерживает D-кадры.

Кроме того, в нем применяется дискретное косинусное преобразование матрицы размером не 8x8, а 10x10, что увеличивает число ДКП-коэффициентов в полтора раза, результатом чего является и более высокое качество. Поскольку стандарт MPEG-2 предназначается как для широковещательного телевидения, так и для DVD, в нем имеется поддержка и поступательного, и чересстрочного отображения (в отличие от MPEG-1, поддерживающего только поступательное отображение). У этих двух стандартов имеются также и другие различия, правда, не столь значительные.

В отличие от стандарта MPEG-1, поддерживающего только одно разрешение, стандарт MPEG-2 поддерживает четыре: низкое (352x240), основное (720x480), высокое-1440 (1440x1152) и высокое (1920x1080). Низкое разрешение предназначено для бытовых видеомагнитофонов и совместимости со стандартом MPEG-1.

Основное является нормой для широковещания в режиме NTSC. Остальные два режима предназначены для HDTV. Для обеспечения высокого качества изображения MPEG-2 обычно работает со скоростью 4-8 Мбит/с.

<< | >>
Источник: Э. ТАНЕНБАУМ. КОМПЬЮТЕРНЫЕ СЕТИ 4-Е ИЗДАНИЕ. 2003

Еще по теме Стандарт MPEG:

  1. СТАНДАРТ
  2. § 5. Международно-правовые стандарты
  3. Два стандарта, мешающих жить
  4. 15.5. Міжнародно-правові стандарти у сфері праці та трудових відносин
  5. Сергей Александрович Орлов. Теория и практика языков программирования: Учебник для вузов. Стандарт 3-го поколения, 2013
  6. Статья 288. Нарушение правил, норм и стандартов, касающихся обеспечения дорожного движения
  7. Литература
  8. 4. Историческая тотальность.
  9. 3. Исторический анализ.
  10. А.В. Сазыкин. Корпоративное право, 2007
  11. 1.4.2. Стандартизация
  12. Развитие логики
  13. Зона обслуживания телецентра
  14. ОБЪЕКТ РЕФЕРЕНТНОСТИ