Проведем расчет, который покажет, какой же объем будет иметь обычный двухчасовой фильм в разрешении 640х480 с частотой 25 Гц(PAL). Пусть каждая точка принадлежит стандартной компьютерной палитре RGB из 16 миллионов цветов. 640x480x3=900 Кб - размер одного кадра, 22500 Кб - размер одной секунды видео, 154 Гб!!! - размер всего фильма. Ясно, что такие огромные объемы информации хранить и передавать очень сложно, даже пропускная способность дискового накопителя компьютера может быть ниже. Поэтому сразу же с появлением цифрового видео остро встал вопрос окомпрессиивидеоданных. Причем эта компрессия должна быть очень сильной. Скажем, если мы хотим поместить фильм из примера на один компьютерный компакт-диск объемом в 650 Мб, то фильм нужно сжать в 243 раза! Это очень много. Напомню, что звук удается скомпрессовать только раз в 10-20, даже используя самые совершенные алгоритмы. Понятно, что для такой сильной компрессии видео придется пожертвовать качеством. К сожалению, провести компрессию без потери качества можно не более чем в 2-3 раза.
Как же осуществляется компрессия видео?
Прежде всего, учитываются особенности зрения человека. В глазу присутствует 2 вида чувствительных элементов - "трубочки", которые отвечают за определения яркости света, и "колбочки", которые, в свою очередь, определяют цвет. "Трубочек" в глазу в несколько раз больше, чем "колбочек". Поэтому чувствительность глаза к яркости намного выше, чем к цвету. Вследствие этого в видео, вместо обыкновенного представления цвета точки RGB, используется YUV, где Y - яркость, а U и V содержат информацию о цветовой окраске точки. Далее информация о яркости сохраняется полностью, а информация о цветовой окраске кодируется либо меньшим числом бит, либо, более часто, хранится не об одной точке, а сразу о группе соседних точек - 2, 4 или даже 16. Этим достигается, за счет почти незаметного ухудшения качества, существенная экономия.
Дальнейшая компрессия кадров осуществляется с помощью сложных математических алгоритмов, которые группируют похожие области изображения и проводят всевозможные округления и приближения. Особенно широко используется Discrete Cosine Transformation - дискретное преобразование косинусов (это одна из разновидностей преобразования Фурье) и Сжатие Хаффмана. На подобном алгоритме работает и популярный формат сжатия статических изображений JPEG.
Рассмотрим упрощенную схему сжатия такого типа подробней на изображении этого попугая, вся картинка будет разбирта на квадраты 8Х8 пикселей:
Возьмем исходную картинку:
Выберем на ней зону 8Х8 пикселей:
Покажем ее в увеличении:
Выбираем средний, наиболее используемый цвет
Теперь весь квадрат 8Х8 пикселей будет окрашен в этот(один) цвет, что значительно уменьшит размеры файла при компрессии. И так, компрессия произойдет для каждого квадрата изображения.
Левый верхний квадрат:
Выбираем средний, наиболее используемый цвет:
Вот примерный результат сильной компрессиии:
И так далее каждый квадрат 8Х8 пикселей получает равномерную общуюю закраску.
Конечно, эта схема значительна упрощена, но все же она дает понятие об этом виде компрессии.
Посмотрим на результирующую картинку. Мы видим, что комрпрессия такого типа не может проходить без потери качества. Кончно, для большей наглядности, мы выставили очень высокую компрессию. Использование сжатия вовсе не означает резкое ухудшение качества исходного изображения. Зато размер видеообъекта при сжатии заметно уменьшается. Тут необходимо найти золотую середину между качеством видео ролика и его размерам.
Но ведь в видео кадры содержат не произвольную последовательность изображений! Обычно каждый кадр отличается от предыдущего совсем незначительно. Этой особенностью и воспользовались некоторые разработчики методов компрессии. Таким образом, все методы видеокомпрессии разделились на два больших класса: Intraframe (все кадры компрессуются независимо друг от друга) иInterframe(при компрессии используется схожесть соседних кадров). ХотяIntrafram-методы значительно менее эффективны, они обладают рядом преимуществ - кодеки легко аппаратно реализуемы, требуют меньше ресурсов и видео в этом формате редактируется намного легче. Тем не менее для хранения больших фильмов сейчас используются только межкадровые(interframe) методы компрессии.
Посмотрите одинаковые отрезки одного и того же мультфильма с разной компрессией:
Нажмите на картинку.
Нажмите на картинку.
Interframeметодзаключается в том, что каждая запись содержит в себе ключевые кадры- кадры содержащие основное изображение. В последующих же кадрах перерисовываются лишь изменения предыдущего ключевого. За счет этого происходит экономия ресурсов компьютера.
Ключевой кадр:
Изменение в кадре:
Изменение в кадре:
Изменение в кадре:
Ключевой кадр:
Благодаря компрессии отдельные кадры могут быть подмыты:
Однако благодаря этому в фильме с небольшим числом кадров в секунду движение получается плавным:
Очень важная характеристика скомпрессованого видео -поток(Data Rate). Чем она больше, тем выше качество, но и размер файла больше. Измеряется в битах (или байтах) в секунду. В VideoCD поток постоянен и равен 1150 kbps. Поток приблизительно можно оценить, если разделить размер видеофайла на его длительность (здесь мы не учитываем звуковой поток).