С бурным развитием в последние годы цифровой техники многие области, раньше доступные лишь профессионалу, теперь могут быть освоены и любителями. В частности, им вполне под силу создание домашней фильмотеки в цифровом формате. Занимаясь этим, очень важно при минимальном объеме файла добиться хорошего качества изображения.
Одна из важнейших характеристик движущегося изображения (видео) и звука (аудио), представленных в цифровой форме, — скорость цифрового потока данных (англ. bitrate). Данные на звуковом компакт-диске (CDDA) хранятся в несжатом виде. Это связано как с небольшой скоростью потока звукового сигнала, составляющей 176,4 кбит/с, так и с тем, что цифровая техника, способная эффективно сжимать его, в период разработки стандарта стоила очень дорого. Да и соответствующих алгоритмов тогда не требовалось, а потому и не было. Цифровое же видео пришлось сжимать с самого момента его появления. Достаточно сказать, что скорость потока несжатого изображения даже для весьма посредственного Video-CD составляет более 60 Мбит/с, а для профессиональной видеозаписи и DVD может достигать 265 Мбит/с. Отводить 170 Гбайт для одного полуторачасового фильма — явное расточительство. Кроме того, столько данных на жестком диске просто не уместится. Благо к тому времени уже были разработаны достаточно эффективные алгоритмы сжатия статических изображений (например, JPEG), а также использовался алгоритм уменьшения объема информации видеоряда путем выделения только отличий последующего кадра от предыдущего.
Все алгоритмы сжатия можно разделить на работающие без потери и с потерей информации. При использовании первых алгоритмов данные после двойного преобразования (т. е. компрессии и декомпрессии) идентичны исходным, а при применении вторых наблюдаются некоторые различия. Во многих случаях потери недопустимы, например, при сжатии текста, числовых данных и т.п. При этом коэффициент сжатия ограничен сверху и зачастую невелик — объем данных уменьшается в 1,5—6 раз. Некоторые данные вообще не поддаются сжатию без потерь (коэффициент меньше единицы). При использовании алгоритмов сжатия с потерями двойное преобразование приводит к изменению исходной информации, что, как правило, влечет за собой ухудшение1 качества. Зато они обеспечивают гораздо более высокую степень сжатия: в 5—10 раз для звука2 и в 5—200 — для видео.
При сжатии с потерями происходит удаление из потока данных от 80 до 99% и более информации. Естественно, если просто снизить частоту дискретизации звука в 10 раз, то существенно пострадает не только тембр, но даже разборчивость речи. Если же с экрана компьютера или телевизора просто выбросить 99 из каждых 100 точек, различить на нем что-либо также окажется весьма затруднительно. В идеале удалению должна подлежать только та информация, которая не воспринимается человеческим слухом или зрением. Поэтому при разработке алгоритмов сжатия один из наиболее важных этапов — создание адекватной психофизиологической модели определенного органа чувств (в данном случае уха или глаза), а точнее — системы, состоящей из соответствующего органа и мозга. Именно с этим связана высокая стоимость разработки подобных алгоритмов.
В большинстве форматов сжатия видео применяется алгоритм, аналогичный JPEG: вся площадь кадра разбивается на квадратики 8х8 пикселов, которые затем сжимаются с использованием дискретного косинусного преобразования. Кратность сжатия этого алгоритма при максимальном качестве примерно равна пяти. Возможна и более высокая кратность, но при этом страдает качество картинки: за счет потери высших гармоник вблизи резких переходов появляется ореол (рис. 1), а в области градиента отчетливо проступают квадратики (рис. 2).
Рис. 1. Артефакты при сжатии изображения с резкими переходами: а — оригинал, б — после сжатия |
Рис. 2. Артефакты при сжатии изображения с плавными градиентами: а — оригинал, б — после сжатия |
Кратко охарактеризуем основные форматы, применяемые для записи и хранения видеоматериалов.
MPEG-1 используется в основном для Video-CD. Гарантирует качество, близкое к тому, которое дает бытовой видеомагнитофон (VHS). Характерный формат — 352х240 точек, типичная скорость потока — 1500 кбит/с.
Час видео занимает объем порядка 700 Мбайт. Используется небольшое количество опорных, или ключевых, кадров (тип I — intra frame), сжимаемых по алгоритму, аналогичному JPEG. Остальные кадры содержат только отличия от предыдущего (существует два типа таких кадров: P — predirected frame и B — bidirectional frame). Именно это позволяет достигнуть высокой степени сжатия, но одновременно ведет к существенному ухудшению качества картинки. Нередко возникающие на изображении дефекты остаются на экране в течение нескольких секунд — до следующего ключевого кадра, после чего внезапно исчезают. Формат подходит только для хранения готового видеоматериала низкого качества, редактирование и монтаж практически невозможны, так как приводят к резкому ухудшению изображения. Но, пожалуй, самый главный недостаток MPEG-1 состоит в том, что даже при посредственном качестве уместить на одном диске полнометражный фильм не удается.
MPEG-2 используется в основном для DVD, качество сравнимо с тем, что обеспечивается профессиональной видеоаппаратурой. Характерный формат — 720х400 точек3, типичная скорость потока — 4000—8000 кбит/с. Час видео занимает 1,5—3 Гбайт. По сути дела формат представляет собой результат экстенсивного развития MPEG-1, при котором повышение качества достигается исключительно за счет увеличения экранного разрешения и скорости потока, поэтому по многим свойствам близок к нему. В частности, также не позволяет безболезненно производить монтаж, редактирование и обработку изображения.
MPEG-4 достаточно универсален, так как поддерживает широкий диапазон скоростей потока и форматов кадра. Применяется как для крохотных роликов размером 80х60 точек, передаваемых через Интернет, так и для перезаписи DVD-дисков на обычные CD. Формат использует более прогрессивный способ сжатия изображения, чем вышеописанные. Если в MPEG-1 и 2 поле кадра всегда разбивается на одинаковые квадратики, то MPEG-4 разделяет его на различные области. Границы между ними вычисляются исходя из особенностей конкретного кадра. Поэтому как резкие, так и плавные переходы при этом способе сжатия прописываются лучше. Более сложный алгоритм кодирования, естественно, требует и гораздо больших вычислительных мощностей. Он постоянно совершенствуется, поэтому существует большое разнообразие различных несовместимых друг с другом кодеков (например, DivX, XviD). Кроме того, MPEG-4, как правило, не поддерживается аппаратными видеоплеерами, поэтому просмотр сжатых в этом формате фильмов возможен только на компьютере. Он также не приспособлен для монтажа и редактирования.
Digital Video используется цифровыми видеокамерами и платами видеомонтажа. Алгоритм кодирования аналогичен JPEG. Каждый кадр обрабатывается независимо от других, из-за чего формат обладает самой низкой степенью сжатия. Зато он позволяет производить монтаж без потери качества и редактирование с минимальным его ухудшением. Для хранения одного часа видео в MPEG-4 требуется 12 Гбайт, что довольно внушительно даже по сегодняшним меркам.
Выбор формата хранения видеоматериала зависит от его назначения. Если фильм планируется просматривать на бытовых проигрывателях Video-CD или DVD, то формат определяется имеющейся аппаратурой. Если материал предполагается редактировать, то лучше оставить его до окончания этого процесса в Digital Video. Когда же материал получен в другом формате (например, оцифровкой с аналоговой видеокамеры с помощью TV-тюнера), для минимизации потерь перед началом обработки видео лучше конвертировать в Digital Video, и только завершив ее, решать вопрос о выборе конечного формата. DVD помимо высокого качества привлекает и некоторыми дополнительными возможностями: работа с несколькими звуковыми дорожками, создание субтитров и т. п. При необходимости их использования имеет смысл предпочесть MPEG-2. Во всех же остальных случаях разумнее остановить свой выбор на MPEG-4/DivX. По крайней мере, именно этот формат обеспечивает наилучшее соотношение между качеством картинки и требуемым объемом.
Свою роль при выборе формата сжатия играют и соображения производительности компьютера. Поскольку окончательный вариант MPEG-4 еще не устоялся, аппаратных кодеков для него не существует. Поэтому вся нагрузка ложится на центральный процессор. Считается, что минимальные требования для просмотра видео в этом формате — Pentium II с частотой 400 МГц при разрешении примерно 512х288 точек и постоянной скорости потока. При разрешении, соответствующем DVD, или переменной скорости потока требования к ПК вдвое выше. Для записи (из эфира или с аналоговой видеокамеры) характеристики минимальной конфигурации находятся в пределах от 700-МГц Pentium III при разрешении 384х288 точек до 2,53-ГГц Pentium 4 при размерах экрана 768х576 точек.
Рис. 3. Эта надпись даст СКО цвета, близкое к показателю чистого белого фона |
Так как формат продолжает совершенствоваться, немаловажное значение имеет и выбор кодека. В целом можно сказать, что по мере увеличения номера версии качество получаемого изображения повышается главным образом благодаря применению более совершенных алгоритмов. Приведу простой пример. Как сказано выше, подавляющее большинство кадров хранят не полное изображение, а лишь его изменения по сравнению с предыдущим кадром. Естественно, если ключевой кадр (типа I) приходится на достаточно статичную картинку, то он практически ничего кроме дополнительного объема в файл не привносит. Если же смена сцены приходится на кадр типа P или особенно B, то начиная с него и до ближайшего ключевого кадра изображение существенно ухудшается. Кроме того, «внезапное» с точки зрения кодека увеличение объема очередного промежуточного кадра может приводить к пропуску кадров. Кодеки первых версий размещали ключевые кадры равномерно, например, каждый трехсотый принудительно делался ключевым. Последние версии кодеков пытаются отследить смену сюжета и размещают ключевые кадры там, где считают необходимым, без определенной периодичности4. Одно это привело к заметному повышению качества получаемой при сжатии картинки и позволило уменьшить скорость потока, а соответственно и размер файла при прежнем уровне качества (примерно на 15—20%). Поэтому если баланс между качеством изображения и объемом файла при кодировании видео имеет для вас значение, своевременно обновляйте кодек.
Конечно, существуют и исключения из этого правила. Если вы хотите, чтобы ваше творение просмотрело как можно больше людей, то кодек последней версии — не самый лучший выбор, так как не у всех он может оказаться. К тому же с увеличением номера версии, как правило, растет и ресурсоемкость кодека. Например, при переходе от вставки регулярных ключевых кадров к синхронизации их появления с изменением сцены кодек стал работать процентов на 15 медленнее. Если вы чувствуете, что конфигурация вашего компьютера с трудом удовлетворяет аппетиты новейшей версии кодека, возможно, имеет смысл «остановить прогресс» на отдельно взятой машине. По крайней мере, до очередной модернизации ПК.
К этому необходимо добавить, что нередко свежие релизы кодека бывают недостаточно отлажены. Особенно этим грешат «нулевые» версии. Впрочем, это замечание справедливо вообще для всех программных продуктов.
Однако не всегда, устанавливая новый кодек, мы получаем улучшение соотношения качества и объема автоматически. Иногда, чтобы добиться этого, выиграть от применения новых возможностей, необходимо приложить и собственные усилия. Примером может служить использование сжатия с переменной скоростью потока.
Строго говоря, режим, называемый кодированием с постоянной скоростью потока, таковым не является. О постоянной скорости потока еще можно говорить применительно к Digital Video, состоящему исключительно из ключевых кадров. Основное преимущество при разделении кадров на ключевые и промежуточные как раз и состоит в том, что объем данных в последних существенно меньше. Поэтому и скорость потока от кадра к кадру меняется очень сильно. Можно вести речь лишь о ее среднем значении. Различие между постоянной и переменной скоростями потока заключается в том, что в первом случае усреднение происходит в интервале примерно от одного ключевого кадра до следующего5, а во втором — по всей продолжительности видеофайла. Это дает возможность увеличить среднюю скорость потока для наиболее динамичных сцен за счет ее уменьшения в статичных. Другими словами, повышение качества изображения при сжатии с переменной скоростью потока достигается не за счет улучшения каждого кадра, а за счет улучшения самых «плохих» при некотором снижении качества самых «хороших». И с точки зрения субъективного восприятия это вполне оправданно.
О целесообразности кодирования с переменной скоростью потока существуют различные мнения, в том числе и такое, что выигрыш если и существует, то не идет ни в какое сравнение с появляющимися при этом минусами. Об одном из них уже было сказано: переменная скорость потока требует для воспроизведения более мощного компьютера. Второй связан со сжатием. Нередко стоит задача не просто добиться максимального соотношения между качеством и объемом видео, а уместить файл в какой-либо фиксированный объем, будь то болванка CD или место на веб-сервере. Бывает очень обидно, когда видеозапись оказывается на несколько мегабайт больше вместимости болванки или, напротив, треть пространства остается неиспользованной. Поэтому при сжатии с переменной скоростью потока обычно надо выдержать ее среднюю величину на протяжении всего видеофайла. В этом случае единственный выход — двухпроходное кодирование. В первом проходе просматривается файл и набирается статистика, а во втором — на основе полученных данных происходит само кодирование. Естественно, такая процедура требует вдвое больше времени. А сжатие видео — процесс длительный. Например, при сжатии двадцатиминутного фрагмента с разрешением 720х380 точек 664-МГц процессор Celeron (FSB 78 МГц) затрачивает более 50 мин на каждый проход. Кроме того, подобный подход возможен только при наличии уже существующего файла. Хорошо, если это видео формата Digital Video или DVD, а как быть, если надо оцифровать сигнал из эфира или с аналоговой видеокамеры? В этом случае нужно сначала записать файл со скоростью потока, существенно превышающей требуемую, а затем применить к нему двухпроходное кодирование. Учитывая расход времени, места на жестком диске для хранения временных файлов и необходимость двукратного преобразования, отнюдь не добавляющего качества, оценить целесообразность таких действий действительно непросто.
Попытаемся выяснить, какого же улучшения можно ожидать от двухпроходного кодирования. В качестве примера используем файл DVD с разрешением 720х380 точек, двадцатиминутный фрагмент (2800 кадров) которого будем сжимать со скоростями потока от 400 до 1600 кбит/с в двух интересующих нас режимах. Затем сравним полученные файлы с исходным и количественно оценим их различие. Для анализа выберем из файла 57 различных кадров с интервалом 500 кадров (около 20 с). Данные обработки содержатся в таблице на с. 143. Кадры каждого из вариантов подвергались анализу, после чего в таблицу заносился результат, либо усредненный по всем кадрам, либо соответствующий кадру с максимальным (минимальным) значением рассматриваемого параметра.
За меру отличия можно принять, скажем, вычисленное по всем кадрам среднеквадратичное отклонение (СКО) цвета каждой точки сжатого изображения от исходного. Но этот критерий нельзя считать объективным. Например, небольшое изменение яркости, контрастности или цветового тона, практически не оказывая влияния на качество изображения, даст большее СКО. В то же время отчетливо читаемая надпись на рис. 3 покажет по этому критерию результат, более близкий к характеристике чистого белого фона, чем лучший вариант сжатия реального изображения. Дело в том, что небольшое изменение цвета или общей яркости изображения практически не улавливается человеческим глазом, тогда как размывание или деформация границ весьма заметны. Но искажение границ — это существенное отклонение цвета от оригинала на очень небольшой доле всей площади кадра, поэтому, хотя эффект от такого изменения хорошо заметен на глаз, общий вклад этих точек в среднее значение СКО цвета крайне незначителен.
Плодотворнее выбрать некий порог и подсчитать в процентах ту долю площади изображения, искажения в которой его превысили. За такой порог естественно принять точность представления цвета, соответствующую режиму True Color (24-разрядная палитра, 16 млн. оттенков), когда каждый пиксел в точности сохраняет свой цвет, и High Color (16-разрядная палитра, 65 тыс. оттенков), что соответствует разнице в 2,3%6. К этим двум величинам были добавлены пороги в 1%, нечто среднее между точностью True Color и High Color, а также в 10% — сильные искажения. В частности, в последнем случае оказывается, что полное отсутствие точек, различающихся по точности отображения цвета более чем на 10%, наблюдается уже при значениях переменной скорости потока в 900 кбит/с, тогда как при постоянной скорости потока для этого недостаточно даже 1600 кбит/с.
Для каждого столбца таблицы была построена параметрическая зависимость, выражающая взаимное соответствие постоянных и переменных скоростей потока, эквивалентных по критерию в том или ином столбце (рис. 4). Полученный пучок кривых можно разделить на четыре группы. В первой кривые проходят под углом около 45?, что говорит об отсутствии разницы по данным критериям. В основном в эту группу попали средние величины при сравнительно небольших отклонениях в цвете точек. Что ж, чудес не бывает — при одинаковой степени сжатия и соответственно одинаковой доле потерянной информации изменений по некоторым критериям происходить не должно. Остается заметить, что эта область включает погрешности, сопоставимые и меньшие, чем при 16-разрядном представлении цвета. Во вторую группу попали в основном максимальные отклонения. Их количество при переходе к переменной скорости потока заметно уменьшилось. Для этой группы характерен наклон кривой примерно 10/8, т. е. одинаковому качеству соответствует различающаяся на 20—25% скорость потока. Третья группа представлена сильными отклонениями цвета точек — более 10%. Это самые неприятные искажения. Они бросаются в глаза, даже если встречаются лишь в наиболее динамичных сценах всего 2—3 раза в течение фильма. Разница в скорости потока здесь достигает двукратной. В четвертую группу попала одна-единственная кривая — среднее процентное содержание точек, не изменивших свой цвет в результате сжатия. По этому критерию переменная скорость потока привела к ухудшению изображения. Вот откуда «ушло качество», чтобы ликвидировать сильные искажения изображения в наиболее динамичных кадрах. Однако такое ухудшение на уровне одной единицы младшего разряда у единственной цветовой составляющей вряд ли может быть обнаружено невооруженным глазом, особенно если речь идет о движущейся картинке.
Итак, сжатие с переменной скоростью потока оказывается очень эффективным средством для уменьшения наиболее заметных на глаз искажений. По этому критерию оно сравнимо лишь с удвоенной постоянной скоростью потока. Несколько слабее проявляется его действие на искажениях средней величины — сопоставимых с искажениями в режиме 16-разрядного цвета (High Color). При этом в среднем доля площади кадра, подверженная им, остается постоянной, но в наихудшем случае (для наиболее подверженных искажениям кадров) она заметно сокращается, что эквивалентно увеличению постоянной скорости потока на 20—25%.
Конечно, приведенная здесь статистика далеко не полна. Во-первых, эти данные получены на основе работы лишь с одним файлом, так что для других конкретные цифры могут измениться. Однако основные тенденции должны сохраниться. Во-вторых, при обработке результатов расчеты проводились лишь по 57 кадрам. При увеличении объема видеоматериала, например, при анализе по нескольким десяткам тысяч кадров максимальные величины должны дальше уйти от средних и результата следует ожидать более впечатляющего.
Но, как уже было отмечено, сжатие с переменной скоростью потока имеет и отрицательные стороны: предъявляются более высокие требования к компьютеру для просмотра, а также больше времени занимает кодирование.
Отдельно следует сказать о случае, когда кодированию с переменной скоростью потока предшествует оцифровка аналогового сигнала с постоянным значением этого параметра. Как уже говорилось, запас по постоянной скорости потока должен быть хотя бы двукратным. Вполне возможно, что увеличение выборки с десятков до тысяч кадров также приведет к возрастанию полученной для искажений средней степени оценки с 20—25% до 200%. Поэтому лучше, чтобы величина постоянной скорости потока превышала требуемое в конечном файле среднее значение переменной в 3—4 раза.
О том, как технически осуществить двухпроходное сжатие с переменной скоростью потока, читайте в разделе «Компьютер дома».
Искажения, возникающие при сжатии изображения
Искажения, возникающие при сжатии изображения: а —исходный вариант; б — изображение, сжатое со скоростью потока 400 кбит/с; в — искажения изображения, сжатого со скоростью потока 400 кбит/с; г — искажения изображения, сжатого со скоростью потока 1000 кбит/с |
При сжатии изображения с потерями предполагается, что его можно аппроксимировать гладкой функцией определенного вида, например рядом Тейлора или Фурье. Последнее время для этих же целей пытаются использовать фракталы. Фактически степень сжатия определяет, сколько коэффициентов в разложении будет сохранено в файле, а сколько — отброшено. Кроме того, поскольку человеческий глаз более чувствителен к изменению яркости, чем цветового тона, дополнительно происходит усреднение цветовой информации. Простейший вариант — квадратику 2х2 пиксела приписывается единственное значение цвета. В более сложном случае берется квадрат побольше — 4х4 или 8х8 пикселов, а то и вообще область сложной формы и кодируется так же, как и яркость, только с меньшим количеством членов в разложении.
Так как изображение при обработке разбивается на области, в каждой из которых сжатие происходит независимо, на картинке появляются артефакты двух видов: деформация и сглаживание резких переходов внутри области за счет утери членов разложения высокого порядка и нестыковка вдоль границ выделенных областей.
Разберем пример. На рис. а приведен исходный кадр из фильма, на рис. б — он же после сжатия с постоянной скоростью потока 400 кбит/с.
Более детально характер искажений можно рассмотреть, если вычесть итоговое изображение из исходного. Поскольку изменение возможно как в сторону увеличения, так и в сторону уменьшения яркости, к результату необходимо добавить постоянную составляющую — серый фон. Если амплитуда искажений невелика, можно дополнительно усилить разницу. Выделенные таким образом искажения, наблюдаемые на рис. б относительно рис. а, увеличенные в 4 раза, показаны на рис. в.
Для сравнения аналогичные операции были проделаны с исходным изображением и файлом, сжатым с постоянной скоростью потока 1000 кбит/с (рис. г).
Отчетливо видно следующее:
- амплитуда искажений при сжатии со скоростью потока 1000 кбит/с существенно меньше, чем при 400 кбит/с;
- если на рис. в ясно выделяются контуры изображения, что говорит об их наибольшей подверженности искажению, то на рис. г искажения распределены по площади кадра равномернее;
- характерный размер неоднородностей при сжатии со скоростью потока 1000 кбит/с существенно меньше, чем при 400 кбит/с, - это следствие присутствия в менее сжатом сигнале более высокочастотных составляющих.
Выделенные таким образом искажения могут быть в дальнейшем подвергнуты анализу на среднее значение и абсолютную величину, на отклонение по яркости и цветовому тону, а также на превышение определенного порога для каждой из приведенных характеристик.
1В отдельных случаях могут наблюдаться и некоторые положительные эффекты, например шумоподавление. При этом, правда, нельзя поручиться, что вместе с шумом не будет потеряна и полезная информация.
2Без потерь как звуковые, так и видеоданные обычно удается сжать раза в полтора-два.
3Вертикальный размер варьируется от 250 до 576 точек.
4При этом, как правило, максимальное расстояние между двумя ключевыми кадрами все равно ограничивается. В противном случае просмотр фильма с произвольно выбранной позиции стал бы довольно затруднителен.
5Иногда эта величина поддается настройке в параметрах кодека.
6100%-ному различию соответствует изменение цвета с черного на белый или наоборот.