Анатомия стандартов MPEG1 и MPEG2
 
   Исторически MPEG-1 - одна из первых удачных попыток создания стандарта сжатия видеоданных. Он используется до сих пор, а появившаяся спецификация Layer 3 сжатия звукового сигнала - сегодня один из самых популярных стандартов в Интернете.
 
   Именно в MPEG-1 были впервые использованы 12-кадровые группы GOP. Только Y-слой изображения, в отличие от U, V-слоев, разбивался на блоки не 8х8 (как в MPEG-2), а 16х16 точек. (Пояснения смотрите ниже.) Однако и те, и другие блоки подвергались дискретному косинус-преобразованию (ДКП) и квантованию. Вообще, ДКП, несмотря на то, что использовалось еще в системах связи американской армии во время вьетнамской войны, переживало в середине 80-х подлинный бум. Такая же судьба позже постигла и вейвлет-преобразование, так что его даже предполагалось использовать в MPEG-2. Однако в MPEG-2 сохранили ДКП.
 
   MPEG-1 обеспечивал разрешение 352х240 точек, что по качеству близко к VHS, используемому в бытовой видеотехнике. Таким образом, при переходе от MPEG-1 к MPEG-2 надо было не просто повысить качество изображения. (Хотя в первую очередь MPEG-2  должен был обеспечить разрешение по крайней мере 720х486 точек.)  MPEG-1 работал с идеальным цифровым видеопотоком (стандарт цифрового телевидения CCIR-601). А для использования в цифровом телевидении требовалось кодировать чересстрочный сигнал, который использовался почти во всех телевизионных студиях. Это означает, что сначала приходят нечетные строки одного кадра, а затем - четные. Как кодировать такое изображение?
 
   Можно совместить в один кадр четные и нечетные строки соседних полукадров, но для подвижного изображения идеально их совместить невозможно. Более того, нечетные строки могут принадлежать одному кадру (в смысле съемки), а четные - другому. Другой путь - кодировать отдельно поля четных и нечетных строк - также неприемлем: добиться высокой степени сжатия будет невозможно. Поэтому разработчики MPEG-2 все-таки создали адаптивный к движению объектов метод построения кадров из полей (так называемая компенсация движения).
 
   Как и при разработке MPEG-1, при создании MPEG-2 большое внимание уделялось преодолению полувекового разрыва между европейской (625 строк, 50 полей [полукадров] в секунду) и американской (525 строк, 60 полей в секунду) телевизионными системами. MPEG-2 не только успешно интегрирует любые системы телевидения  (в том числе и  HDTV - цифровое телевидение высокой четкости), но и преодолевает разрыв между принципами телевизионного и компьютерного изображения. А это не меньшая пропасть, чем между NTSC и PAL. Главное отличие в принципе развертки: чересстрочная в телевизоре - и прогрессивная в мониторе. Плюс такие мелочи, как разные методы кодирования цвета и разная геометрическая форма пикселя.
 
   Не углубляясь в проблемы перехода от аналогового телевизионного сигнала к цифровому (над чем изрядно пришлось потрудиться экспертам MPEG), будем считать, что на вход MPEG-кодера поступает цифровой поток цветных кадров. Его скорость - 30 или 25 кадров в cекунду для США и Европы/Азии соответственно. Основная идея сжатия MPEG состоит в том, что из всего потока полностью передаются только избранные (опорные) кадры, для остальных же передаются их изменения по отношению к опорным.
 
   На самом деле в подвижном изображении от кадра к кадру в большинстве случаев меняется только его часть. Например, при выступлении диктора в новостях меняется только его мимика. Полная же смена кадра, когда очередной кадр нельзя восстановить как изменение предыдущего (в этом случае проще передать сам кадр), происходит относительно редко. Например, в американских фильмах это обычно 4-5 секунд, в европейских (и особенно советских) - значительно больше.
 
   По этой причине в MPEG-2 определено три типа кадров:
       I-кадры (intra frames);
       P-кадры (predicted frames);
       B-кадры (bi-directional frames).
 
   I-кадры несут полноценное неподвижное изображение и вдобавок используются для построения P- и B-кадров. P-кадры, то есть "предсказуемые", строятся на базе последнего (с точки зрения приемника) принятого I- или P-кадра. Правда, если он сильно от него отличается (например, произошла смена плана), то P-кадр кодируется как I-кадр.
 
   Наиболее сложно восстанавливаются B-кадры или "интерполируемые". Такой кадр может строиться либо как продолжение предыдущего I(P)-кадра, либо как предшественник следующего за ним I(P)-кадра, либо как интерполяция между
обоими. Опять же, если B-кадр значительно отличается и от первого, и от второго, то он кодируется как I-кадр.
 
   Все типы кадров группируются в последовательности, показанной на рис. 1. Группа из 12 кадров образует так называемую GOP (Group of Pictures). Таким образом, при частоте 25 кадров в секунду, новый I-кадр приходит максимум через 12х(1/25)=0,48 секунды. Вместе с ним восстанавливается полная (в известном смысле) идентичность передаваемого и принимаемого изображения). В связи с тем, что при декодировании для получения B-кадров необходимо уже иметь следующий за ним P-кадр, то при передаче последовательность кадров должна быть такой, как показано на рис. 1.


                                      Рис.1. Типы кадров в MPEG-2.
 
   Рассмотрим более подробно, как кодируются отдельные кадры (рис. 2). Для кодирования цветного изображения используется схема YUV, применяемая в обычном телевещании. То есть изображение раскладывается не по трем каналам цветности (схема RGB), а по двум каналам цветности (U, V) и по каналу яркости (Y).


                         Рис.2. Последовательность преобразований в MPEG-2.
 
   Изображение в канале яркости - это, по существу, черно-белое изображение. Подмечено, что одна из особенностей восприятия изображения человеческим глазом состоит в том, что он обладает большим разрешением (рис. 3) по каналу яркости (Y), чем по каналам цветности (U, V). Поэтому, расслаивая цветной кадр на эти три составляющие, мы можем подвергнуть слои U и V большему сжатию, чем слой Y. Как было сказано в начале, этот принцип был использован еще при создании цветного аналогового телевидения, где U, V передаются не одновременно, а поочередно.


                      Рис.3. Разрешающая способность человеческого глаза.
 
   I-кадр кодируется как статическое изображение следующим образом. Каждый слой кадра разбивается на блоки размером 8х8 точек и повергается дискретному косинус-преобразованию (ДКП, DCT). ДКП является полностью обратимым преобразованием. По сути ДКП - это частный случай преобразования Фурье для
четной функции, когда функция раскладывается только на косинусные гармоники.
 
   Итак, при ДКП вместо значения пикселя (то есть уровня цветности и яркости) в ячейке блока ставится коэффициент ДКП (рис. 4). То есть блок преобразуется в свой двумерный спектр. Как правило, энергетический спектр изображения сосредотачивается в низкочастотных гармониках, поэтому коэффициенты, расположенные ближе к верхнему левому углу, имеют большие значения, чем остальные. Чем меньше соседние пиксели отличаются друг от друга в исходном блоке, тем ближе к нулю значения большинства коэффициентов ДКП.
 

                             Рис.4. Дискретное косинус-преобразование (ДКП).
 
   Для пикселей монотонного изображения коэффициенты ДКП равны нулю, за исключением коэффициента в левом верхнем углу, который задает интенсивность изображения.
 
    Полученные коэффициенты квантуются (то есть округляются до некоторой степени 2). Главная задача при этом - увеличить количество нулевых коэффициентов. По сути отбрасываются высокочастотные гармоники. Как показывает опыт, обычно это практически не влияет на качество изображения.
 
   Полученный набор двоичных векторов (коэффициентов) сжимается известным кодом Хаффмана. Так формируется сжатый  I-кадр, который с известной потерей качества можно восстановить независимо от других кадров.
 
   P- и B-кадры кодируются с учетом их отличия от опорных  I- и P-кадров. Поэтому они поддаются более сильному сжатию, чем  I-кадры.
 
   При кодировании P-кадра (B-кадры кодируются практически аналогичным образом), он также разбивается на блоки 8х8 и сравнивается с исходным кадром (будем считать, что это  I-кадр, хотя может быть и предшествующий P-кадр). Если некоторый блок в кодируемом P-кадре совпадает с аналогичным блоком в опорном кадре, то достаточно указать, что он тот же самый. Другим случаем является нахождение точно такого же блока в опорном  I-кадре, но в другой позиции, поэтому вместо блока P-кадра можно указать лишь ссылку на другой блок  I-кадра в виде вектора смещения. Остальные блоки кодируются так же, как в случае  I-кадра.
 
   Заметим, что если в подвижном изображении часть объектов будет двигаться поступательно (а это бывает часто), то несколько блоков будут закодированы одним и тем же вектором смещения. При последующем сжатии по методу Хаффмана это даст дополнительное увеличение степени компрессии P-кадра.
 
   Для кодирования звукового сопровождения может использоваться несколько методов. Это MPEG Layer 3 (наследство MPEG-1), MPEG AAC или Dolby AC-3. Основная идея сжатия, по крайней мере, в MPEG Layer 3, построена на упрощении формы звукового сигнала, которое производится с учетом свойств человеческого слуха и практически не влияет на качество закодированного звука. Это позволяет при потоке оцифрованного и сжатого сигнала 128 кбит/с получить качество звука, близкое к CD Audio.
 
   Надо только добавить, что в MPEG-2 предусмотрено использование не одного (как в MPEG-1), а нескольких звуковых сигналов. Благодаря этому возможно создание эффектов объемного звучания, а также многоязычного сопровождения фильмов.
 
   Если заглянуть более подробно в MPEG-2, то оказывается, что это целое семейство стандартов. Например, MPEG-2 позволяет использовать в качестве исходных телевизионные сигналы разных систем. Для этого в стандарте введены понятия уровней (level) и профилей (profile).
 
 
 
 Число отсчетов 
в строке 
 Число строк  в  кадре   Число кадров в секунду   Максимальный поток, Mбит/c
высокий (HL)           1920           1152             60             80 
(100 для 422P)
высокий 1440 
(H1440)
1440 1152 60 80
главный (ML) 720 576 30 15 
(20 для 422P)
низкий (LL) 352 288 30 4
                                   Табл. 1. Характеристики уровней MPEG-2.
 
   Профиль определяет набор операций по сжатию данных. Различают шесть профилей:
        1. Профессиональный (4:2:2 profile, 422P) - высокий кодированием 4:2:2;
        2. Высокий (high profile, HP) - масштабируемый пространственно и по отношению сигнал/шум;
        3. Пространственно масштабируемый (spatially scalable profile);
        4. Масштабируемый по отношению сигнал/шум (SNR scalable profile);
        5. Главный (main profile, MP) - без масштабирования;
        6. Простой (simple profile, SP) - без B-кадров.
 
   Для каждого из профилей определено до пяти наборов операций. Все профили, кроме профессионального, используют кодирование сигналов цветности по схеме 4:2:0, при котором число отсчетов сигналов U, V по сравнению с сигналом яркости (Y) уменьшено в два раза по вертикальному и в два раза по горизонтальному направлениям. Лишь в профессиональном профиле используется схема 4:2:2, где число отсчетов сигналов цветности в два раза реже, чем для яркости только в горизонтальном направлении.
 
   Кроме профилей, определены четыре уровня:
       высокий (HL);
       высокий 1440 (H1440);
       главный (ML);
       низкий (LL).
 
   Каждый уровень соответствует тому или иному классу телевизионных систем. Например, уровни HL и H1440 предусмотрены для HDTV. Уровень ML соответствует обычному телевидению, а LL так называемому телевидению ограниченной четкости.
 

   Simple profile  Main profile  SNR scalable 
 profile
 Spatially 
scalable profile
 High rofile   4:2:2 Profile
HL        x         x  
H1440        x         x     x  
ML      x      x       x       x     x
LL        x       x      
                                           Табл. 2. Профили и уровни MPEG-2.
 
   MPEG-2 предусматривает ограниченное число вариантов профиль-уровень (таблица 2), всего их 12. Каждый вариант обозначается сокращением типа MP@ML (главный профиль, главный уровень). Вариант 422P@ML, например, удовлетворяет требованиям к системам доставки сигнала на телецентры и стал основой принятого в 1996 году цифрового телевещания.
 
   Вариант профиль-уровень является основной характеристикой конкретного декодера. Все декодеры MPEG-2 должны быть совместимы вверх, то есть декодер должен декодировать не только "родной" поток, но все потоки с меньшим уровнем и/или профилем.
 
   MPEG-2 включает синхронизацию изображения, передачу сопровождающей текстовой информации, помехоустойчивое кодирование, защиту телепрограмм от нелегального просмотра и др. Благодаря этому MPEG-2 в первую очередь стал активно использоваться в спутниковом телевидении.
 


       Перейти на стартовую страницу


Hosted by uCoz