7.4.2. Цифровое видео
Теперь, когда мы узнали об ухе все, пора перейти к глазу. Предвосхищая ваши вопросы скажу, что в следующем разделе мы не будем рассказывать вам о носе. У человеческого глаза есть одна особенность: когда изображение появляется на сетчатке, оно на сохраняется на ней на несколько миллисекунд, прежде чем уступить место другому. Если картинки сменяются со скоростью 50 изображений в секунду, глаз не заметит того, что изображение дискретно. Этот принцип используется всеми видеосистемами для отображения двигающихся картинок.
Самое простое представление видео — это последовательность кадров, каждый из которых состоит из набора пикселей, прямоугольных элементов, составляющих изображение. Каждый пиксель может быть отдельным битом, чтобы отображаться либо белым, либо черным. Однако качество такой системы ужасно. Попробуйте конвертировать цветную картинку в черно-белую (используйте именно черно-белый вариант, а не оттенки серого) при помощи вашего любимого графического редактора. Следующий шаг — это использование 8 бит на пиксель для представления 256 уровней серого. По этой схеме получается высококачественное черно-белое видео. Для цветного видео многие системы используют по 8 бит на каждый из основных компонентов цвета, красный, зеленый и синий (RGB). Такое представление возможно, так как любой цвет может быть представлен при помощи линейного наложения оттенков красного, зеленого и синего определенной интенсивности. При использовании 24 бит на пиксель мы получаем около 16 млн цветов, что гораздо больше, чем может различить человеческий глаз.
На цветном жидкокристаллическом дисплее компьютера или телевизора каждый отдельный пиксель состоит из разделенных промежутками подпикселей красного, зеленого и синего цветов. Картинки отображаются при помощи определения интенсивности подпикселей, а глаз смешивает цветовые компоненты.
Обычно картинки сменяются со скоростью 24 кадра в секунду (так же как на 35-мм кинопленке), 30 кадров в секунду (как на американском телевидении — система NTSC) и 25 раз в секунду (как на телевизорах с системой PAL, распространенных во всем мире). Если уж быть совсем точными, в США обычное телевидение вещает со сменой картинки 29,97 раза в секунду. Когда телевидение было черно-белым, кадры менялись 30 раз в секунду, но, когда был введен цвет, инженерам понадобилось добавить эту информацию к передаваемому потоку, так что они сократили частоту смены кадров до 29,97 раза в секунду. Компьютеры же должны менять кадры 30 раз в секунду. PAL был изобретен после того, как появился NTSC; там фактически используется 25,000 кадров в секунду. Чтобы в нашем рассказе не осталось пробелов, стоит упомянуть о третьей системй, SECAM, которая используется во Франции, в франкоговорящей части Африке и восточной Европе. Она появилась в восточной Европе из Восточной Германии, чтобы у тех, кто в ней жил, не было возможности смотреть западногерманское телевидение (PAL) и воспринимать чуждые идеи7. Но сейчас многие страны переключаются на PAL.
Вообще-то, для телевещания 25 кадров в секунду — это не достаточно хорошее качество для того, чтобы передавать плавные движения, так что изображения разбиваются на два поля (fileds) по четным и нечетным строкам развертки. Два поля (каждое с половиной разрешения) передаются последовательно, выдавая почти 60 (NTSC) или ровно 50 (PAL) полей в секунду. Такая система известна, как чередование (interlacing). Видео, предназначенное для просмотра на компьютере, последовательное (progressive), то есть чередование не используется, так как на видеокартах мониторов есть буферы, что позволяет помещать в буфер новое изображение 30 раз в секунду, при этом изображение на экране может обновляться 50 или даже 100 раз в секунду, чтобы избежать мерцания. У аналоговых телевизоров нет буфера, такого как у компьютеров. Когда на компьютере отображается видео с быстрыми движениями, использующее чередование, рядом с четко выделенными краями можно увидеть горизонтальные линии — этот эффект называется комбингом (combing).
Размеры кадров, передаваемых через Интернет, сильно варьируются по той простой причине, что для больших фреймов требуется большая ширина полосы пропускания, а это не всегда доступно. Видео в низком разрешении может быть 320 на 240 пикселей, а полноэкранное — 640 на 480. Эти размеры относятся к первым компьютерным мониторам и телевидению в формате NTSC соответственно. Соотношение размеров (aspect ratio) или отношение ширины изображения в пикселях к высоте 4 : 3 такое же как у стандартного телевизора. Видеофайлы HDTV (High-Definition Tele Vision — телевидение в высоком разрешении) могут загружаться в разрешении 1280 на 720 пикселей. У этих широкоэкранных файлов соотношение размеров равно 16 : 9, чтобы более точно соответствовать соотношению размеров для фильмов (3 : 2). Для сравнения можно привести стандартные DVD-видео. У них соотношение размеров обычно 720 на 480 пикселей, а у дисков высокого разрешения Blu-ray (работающих на основе сине-фиолетового лазера) обычно 1080 на 720 пикселей.
В Интернете количество пикселей уже отошло в историю, так как медиаплееры могут выдавать одну и ту же картинку в разных размерах. Видео является просто еще одним окном на экране компьютера, которое можно увеличить или уменьшить. Чем больше пикселей, тем выше качество изображения, так что оно не выглядит размытым при увеличении. Однако многие мониторы могут отображать картинки (а следовательно, и видео) с использованием даже большего количества пикселей, чем в HDTV.
Сжатие видео
Из нашей дискуссии о цифровом видео должно быть очевидно, что сжатие критично для пересылки видео через Интернет. Даже на передачу видео в стандартном качестве с размером картинки 640 на 480 пикселей, 24 битами информации о цвете на пиксель и 30 кадрами в секунду уходит больше 200 Мбит/с. Это серьезно превосходит скорость, с которой большинство компаний подключены к Интернету, не говоря уже о простых пользователях. И ведь пока мы говорим только об одном видеопотоке. Так как передача несжатого видео практически невозможна, по крайней мере через глобальную сеть, остается надеяться лишь на то, что возможно хорошее сжатие. К счастью, за последние несколько лет в этом направлении было проведено множество исследований, так что появилось множество техник и алгоритмов сжатия, которые делают передачу видео возможной.
Для передачи видео через Интернет используется множество форматов, и патентованных, и стандартных. Самая популярная кодировка — это MPEG и ее формы. Это открытый формат использующийся в файлах с расширениями mpg, mp4, так же как и в файлах других контейнерных форматов. В этом разделе мы рассмотрим MPEG, чтобы выяснить, как сжимается видео. Для начала мы рассмотрим сжатие изображений в формате JPEG. Видео — это просто последовательность изображений (вкупе со звуком). Один из способов сжать видео — это сжать каждое из передаваемых изображений. В первом приближении MPEG — это просто сжатие с помощью JPEG каждого из передаваемых кадров и некоторые дополнительные опции, позволяющие исключить избыточность.
Стандарт JPEG
Стандарт JPEG (Joint Photographic Experts Group — объединенная группа экспертов по машинной обработке фотографических изображений) для сжатия полутоновых изображений (например, фотографий) был разработан группой экспертов, давшей ему название, которая работала от ITU, ISO, IEC и других организаций, отвечающих за стандарты. Этот формат широко используется (посмотрите на файлы с расширением jpg) и часто сжимает файлы в 10 и более раз.
JPEG определен в международном стандарте 10918. На самом деле он больше напоминает список покупок, чем отдельный алгоритм, но из четырех входящих в него методов нас в рамках нашего повествования интересует только один, последовательный метод с частичной потерей информации. Кроме того, мы рассмотрим то, каким образом JPEG обычно используется для кодирования 24-битных RGB-видеоизображений, выпустив некоторые детали, чтобы излишне не усложнять наш рассказ.