ТЕРМИНЫ

Вот термины, встречаемые при работе с видео:

MPEG, MPEG2, MPEG4 - алгоритмы сжатия, основанные на дискретном Фурье-преобразовании с квантованием гармоник. Читайте FAQ по MPEG2 для большей информации.

FOURCC - это 4 символа или 4 байта (four char code) в заголовке видеофайла, говорящие системе о том, чем сжато видео, а она выбирает соотвертствующей декомпрессор. Например DIV3 - это DivX 3.11, а YUY2 - несжатое видео в цветовом пространстве YUV. Некоторые кодеки имеют одинаковые форматы выходных данных, т.е. могут разжимать зажатое друг другом, но тем не менее имеют разные FOURCC. Поэтому можно поменять FOURCC у видеофайла и спокойно его смотреть.

битрейт (bitrate), поток - среднее количество килобит (т.е. килобайт в 8 раз меньше) в секунду. Именно среднее, так как размер кадра зависит от его содержимого, более сложные кадры (с точки зрения информации) сжимаются слабее, битрейт больше. Битрейт тесно связан с качеством видео, что очевидно ясно. Попробуйте сжать с максимальным и минимальным качеством видеоряд, состоящий из серого фона, и увидите, что размер практически одинаков.

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

YUV - цветовое пространство, где Y - компонента яркости, U - меняется от синего до желтого, V - от красного до зеленого. Аналогичен Lab цвету в фотошопе, имеет, кстати, наибольший цветовой охват. Перед сжатием в MPEG картинка переводится в это пространство, и каждая компонента сжимается отдельно. Есть еще RGB :)

overlay, оверлэй - режим вывода изображения на экран: в видеобуфере сначала рисуется область, которая закрашивается ключевым цветом (key color), затем из другого видеобуфера берется картинка, и после обработки, осуществляемой самой видеокартой (изменение размеров, фильтрация, регулировка яркости/контраста/цвета) выводится в те места основного буфера, которые закрашены ключевым цветом. Этот режим поддерживается только достаточно новыми видеокартами, не при всех глубинах цвета. Однако благодаря билинейной фильтрации качество полноэкранного видео улучшается.

квантование, уровень квантование (quantization, quantizier), DCT, IDCT - чтобы осознать смысл этого понятия, надо знать как у MPEG работает сжатие и распаковка.

  • сжатие MPEG (как и JPEG) основано на дискретном косинусном преобразовании (DCT - discrete cosine transform, по нашему ДКП - частный вид преобразования Фурье на плоскости) участков изображения 8x8. На выходе дкп получаются коэффициенты (спектр), коэффициенты с низкими индексами отвечают за яркость участка в целом, с более высокими - за более быстрыми колебаниями яркости. Сжатие достигается за счет того, что эти коэффициенты делятся на определенное число, называемое уровнем квантования и затем округляется отбрасыванием дробной части. Каждый коэффициент делится на определенное число, записанное в таблице квантования (ее специально составили так, что качество было максимально) и затем на общий уровень квантования. В результате многие коэффициенты обнуляются, а оставшиеся имеют дискретный фиксированный набор значений (квантуются). Их сжимают чем-то вроде ZIP (по Хаффману) и записывают. Такие действия производят с каждым участком изображения 8x8, для каждого из них кодек подбирает оптимальный уровень квантования.
  • для распаковки применяется обратное дискретное косинусное преобразование ОДКП (IDCT - inverse discrete cosine transform, он же ОДКП), кодек собирает картинку обратно.

i- p- b- кадры (i- p- b- frames).

  • Если сжимать каждый кадр отдельно чем-то вроде JPEG, то ничего хорошего в смысле размера не получится (пример - видео 352x288@25fps, средний размер сжатого JPEGом кадра 50 кб, умножаем на 25 и на 8, получаем 10 000 кбит/с, тогда как 1 000 кбит/с для MPEG4 более чем достаточно). Поэтому только i-кадры сжимаютя такими, какие мы их видим, а в p-кадры записывается только изменение картинки по сравнению с предыдущим кадром, то есть результат операции XOR. b-кадры получаются интерполяцией между соседними p- или i-кадрами . Таким образом, видеоряд выглядит следующим образом:
    I B B P B B P B B P B B I B B P B B P B ...
    На самом деле p-кадров в видео, сжатом MPEG4, значительно больше, расстояние между i-кадрами обычно 200-300, а b-кадров может и не быть. Почитайте FAQ по MPEG2 для большей информации.

GMC - при кодировании сцен c движением ее участков (предмет движется на неподвижном фоне) в p-кадры дополнительно записывается информация о приблизительном сдвиге макроблоков, тем самым размер p-кадра уменьшается из-за того, что разница между соседними кадрами меньше. Если сцена движется целиком (панорамирование), то записывается общий вектор сдвига - global motion compensation - GMC.

артефакт - этим интересным словом принято называть побочные эффекты при сжатии - заметные макроблоки (хорошо видны при резкой смене сцены, на монотонных поверхностях) и ореол около резких перепадов цветов/резких границ (особенно заметно в аниме). Такого типа эффекты являются нормальными, так как связаны с алгоритмом сжатия, но возможны также ошибки самого кодека (выпадение блоков, неправильное предсказание движения при декодировании). Почитайте статью Об артефактах и борьбе с ними  для большей информации.

interlace, interlacing - это нужно, чтобы на телевизоре картинка менялась с вдвое большей частотой, чем частота кадров, т.е. более плавно. При этом в одном кадре помещаются 2 кадра телевизора, которые чередуются черезстрочно (черезстрочная развертка), строки называют полями. Но на экране компьютера в таком видео при движении в кадре видны горизонтальные полосы, так как используется прогрессивную (progressive ) развертку. Когда такое есть, кодек сжимает каждое поле отдельно, а при распаковке собирает их вместе в один кадр. На самом деле в таком видео вертикальное разрешение в два раза меньше горизонтального, и чтобы нормально смотреть его на компьютере, применяют deinterlace, при этом четные и нечетные поля смешиваются.

И это, естественно, не все..

*****
(c) kusaku 2003