tanenbaum_seti_all.pages (525408), страница 212
Текст из файла (страница 212)
Сначала мы рассмотрим МРЕС-1, а затем МРЕС-2. Алгоритм МРЕС-1 состоит из трех частей: аудио- и видеошифраторов и системы, обьединяющей эти два потока данных, как показано на рис. 7А2. Системы кодирования аудио и видео работают независимо, в результате чего возникает проблема синхронизации этих потоков в приемнике. Для решения этой проблемы используются системные часы, работающие на частоте 90 крц. Показания этих часов хранятся в 33-битных счетчиках, что позволяет указывать время в интервале 24 часов.
Эти отметки времени вносятся в закодированный результат и передаются получателю, который может использовать их для синхронизации изображения и звука. Перейдем к рассмотрению сжатия видеоинформации с помощью алгоритма МРЕС-1. В видеофильмах имеется избыточность двух типов: пространственная и временная. Алгоритм сжатия МРЕС-1 использует оба типа. Чтобы использоватьпространственную избыточность, можно просто кодировать каждый кадр отдельно алгоритмом )РЕС. Иногда такой подход применяется, особенно если нужен прямой доступ к каждому кадру, например, при редактировании видеоизображе- 792 Глава 7. Прикладной уровень иия, Этот режим сжатия позволяет снизить поток данных до скорости от 8 до 1О Мбит/с.
Рис. 7.42. Синхронизация аудио- и видвопотоков в МРЕ6-1 Дополнительного сжатия можно достичь, используя преимущество того факта, что идущие подряд кадры часто бывают почти идентичны. Может показаться, что этот эффект ие столь уж велик, так как в большинстве фильмов сцены часто меняются — в среднем каждые 3-4 с.. Тем ие менее даже последовательность в 75 очень близких кадров позволяет применить значительно большее сжатие, нежели с помощью компрессии отдельных кадров алгоритмом 1РЕС. В сценах, в которых камера и задний план неподвижны и один или два актера медленно двигаются, почти все пикселы в соседних кадрах будут идентичны.
Вэтом случае простое вычитание каждого кадра из предыдущего и обработка разности алгоритмом )РЕС даст достаточно хороший результат. Однако этот метод плохо подходит к сценам, в которых камера поворачивается или наезжает иа снимаемый объект. Для таких сцен необходим какой-то способ компенсировать это движение камеры. В этом и состоит основное отличие МРЕС от ) РЕС. Выходной поток МРЕС-1 состоит из кадров четырех следующих типов: 1. 1 (1пггасог!ег! — автономные) — независимые неподвижные изображеиия, ко- дироваииые алгоритмом )РЕС. 2. Р (Ргег!!саче — предсказывающие) — содержат разиостиую информацию от- иосительио предыдущего кадра.
3. В (В1г!!гесбопа! — двуиаправлепиые) — содержат изменсиия относительно пре- дыдущего и последующего кадров. 4. Р (0С-сог!ег! — усредненные) — содержат усредненное по блоку значение, ис- пользуемые для быстрой перемотки вперед. 1-кадры представляют собой обычные неподвижные изображения, кодироваииые алгоритмом )РЕС с использованием полного разрешения яркости и половиииого разрешения для обоих сигналов цветиости, 1-кадры должны периодически появляться в выходном потоке по трем причинам. Во-первых, должна быть возможность просмотра фильма ие с самого начала. Зритель, пропустивший первый кадр, ие сможет декодировать все последующие кадры, если все кадры будут зависеть от предыдущих и 1-кадры ие будут время от времени включаться в поток.
Во-вторых, дальнейшее декодираваиие фильма станет невозможным в слу- Мультимедиа 793 чае ошибки при передаче какого-либо кадра. В-третьих, наличие таких кадров существенно упростит индикацию во время быстрой перемотки вперед или назад.
По этим причинам 1-кадры включаются в выходной поток примерно одиндва раза в секунду. Р-кадры, напротив, представляют собой разность между соседними кадрами. Они основаны на идее макроблоков, покрывающих 16х16 пикселов в пространстве яркости и 8х8 пикселов в пространстве цветности. При кодировании макро- блока в предыдущем кадре ищется наиболее близкий к нему макроблок. Пример использования макроблоков показан на рис. 7.43.
Здесь мы видим три последовательных кадра с одинаковым задним планом, различающихся только положением человека. Макроблоки, содержащие задний план, будут полностью совпадать друг с другом, но макроблоки, содержащие человека, будут смешаться на некоторую величину. Именно для этих макроблоков алгоритм должен найти максимально похожие макроблоки из предыдущего кадра. Рис.
7.43. Три последовательных кадра Стандарт МРЕС-1 не указывает, как искать, насколько далеко искать или насколько хорошо должен подходить похожий макроблок. Все эти вопросы оставлены на усмотрение разработчика программы, реализующей стандарт МРЕС-1. Например, макроблок можно искать в предыдущем кадре в текущей позиции с заданными смещениями по горизонтали и вертикали. Для каждой позиции может вычисляться количество совпадений матрицы яркости. Позиция с наибольшим значением совпадений будет объявляться победительницей при условии, что это значение превосходит некое пороговое значение. В противном случае макроблок будет считаться не найденным.
Возможны, конечно, и значительно более сложные алгоритмы. Макроблок, для которого найден похожий на него макроблок в предыдущем кадре кодируется в виде разности значений яркости и цветности. Затем матрицы разностей подвергаются дискретному косинусному преобразованию, квантованию, кодированию длин серий и кодированию Хаффмана так же, как это делает алгоритм ПРЕС. В выходном потоке макроблок представляется в виде вектора сдвига (насколько далеко сдвинулся макроблок по горизонтали и вертикали от положения в предыдущем кадре), за которым следует список чисел, кодированных по Хаффману. Если же в предыдушем кадре не нашлось цодходяшего макроблока, текушее значение кодируется алгоритмом ПРЕС, как в 1-кадре. 794 Глава 7.
Прикладной уровень ()чеэидно, что этот алгоритм обладает сильной асимметричностью. В принципе, программа может искать соответствие макроблоку в любой позиции предыдущего кадра. Такой подход позволит минимизировать выходной поток МРЕС-1 за счет очень медленного кодирования. Следовательно, такой метод применим для одноразового кодирования при созлании фильмотеки, но не голится для видеоконференций реального времени.
Аналогично разработчики каждой реализации могут самостоятельно определять алгоритм сравнения макроблоков. Эта свобода позволяет разработчикам соревноваться в качестве и скорости своих алгоритмов при полной совместимости создаваемых алгоритмами потоков МРЕС-1. Независимо от алгоритма поиска конечный выходной поток будет состоять либо из текущего блока, закодированного па стандарту ) РЕС, либо из закодированной в соответствии с тем же стандартом 1РЕС разности тскушсга и одного из предыдущего кадров, расстояние до которого должно быть указано.
Декодирование потока МРЕС-1 выполняется довольно просто. Декодирование 1-кадров аналогично декодированию 1РЕС-изображений. Чтобы декодировать Р-кадр, декодер должен сохранить в буфере предыдуший кадр, а затем во втором буфере построить новый кадр нз макроблоков как в абсолютной, так и в относителыюй кодировке. Кадры собираются макроблок за макроблоком.
В-кадры аналогичны Р-кадрам — с той лишь разницей, что позволяют привязывать макроблок либо к предыдушему, либо к следующему кадру. Такая дополнительная свобода позволяет достичь хорошей компенсации движения. Для декодирования В-кадров необходимо удерживать в памяти сразу трн кадра: предыдуший, текущий и следующий, Хотя В-кадры позволя1от добиться наибольшего сжатия, они полдерживаются не всеми реализациями. П-кадры используются только для индикации изображения с низким разрешением при быстрой перемотке фильма. Выполнение обычного декодирования видеоформата МРЕС-1 уже само по себе требует достаточной мощности процессора.
Выполнять же это декодирование в десять раз быстрее при поиске практически нереально. Каждый 1)-кадр представляет собой просто среднее значение блока, без дальнейшего кодирования, что упрощает его отображение в режиме реального времени. Перейдем теперь к стандарту МРЕС-2. В основном, этот стандарт схож со стандартом МРЕС-1, но он не поддерживает Э-кадры. Кроме того, в нем применяется дискретное косинусное преобразование матрицы размером не 8х8, а 10х10, что увеличивает число ДКП-коэффициентов в полтора раза, результатом чего является и более высокое качество, Поскольку стандарт МРЕС-2 предназначается как для широковещательного телевидения, так и для ПЧП, в нем имеется поддержка и поступательного, и чересстрочного отображения (в отличие от МРЕС-1, поддерживаюшего только поступательное отображение), У этих двух стандартов имеются также и другие различия, правда, не столь значительные, В отличие от стандарта МРЕС-1, поддерживающего только одно разрешение, стандарт МРЕС-2 поддерживает четыре: низкое (352х240), основное (720х480), высокое-1440 (1440х1152) и высокое (1920х1080).