Архивы: по дате | по разделам | по авторам

Корректность и надувательство при сравнении видеокодеков

АрхивТехнологии
автор : Дмитрий Ватолин   18.08.2004

Уникальное тестирование видеокодеков.
Тщательному изучению подверглись 33 программы, а суммарное время счёта превысило 11 суток. Зачем? Только так можно было получить точные данные и избежать ошибок, которые допустили все остальные.

Об авторе: Дмитрий Ватолин - К.ф.-м.н., старший научный сотрудник лаборатории компьютерной графики при ВМК МГУ, научный руководитель проекта MSU Video Codecs Comparison.

Сайт compression.ru при ВМиК МГУ провёл уникальное тестирование видеокодеков. Тщательному изучению подверглись 33 кодека, а суммарное время счета составило больше одиннадцати суток (в действительности, времени потребовалось ещё больше, поскольку из-за ошибок часть последовательностей приходилось пересчитывать). PDF с отчётом о тестировании можно найти здесь.

Но зачем тратить столько усилий? Разве недостаточно сравнить пару фильмов (или, в предельном случае, пару кадров из фильмов), чтобы сделать самые категоричные выводы о кодеках? Ведь именно так, как правило, тестируют кодеки в компьютерной прессе. Поясню, в чем порочность такого подхода.

Когда авторы подобных сравнений просто приводят кадры из двух фильмов рядом, они не учитывают, что любой кодек даёт разное качество по кадрам одного и того же фильма, игнорируют особенности кодеков и забывают, что качество сжатия конкретного фильма может сильно зависеть от параметров кодирования.

Каждая из этих причин заслуживает отдельного рассмотрения.

Любой кодек даёт разное качество по кадрам одного и того же фильма

Это связано со многими факторами. Во-первых, в кодеке работает такой механизм, как управление битрейтом, который приводит к колебаниям качества даже у хороших кодеков. Во-вторых, сам пользователь выбирает разные стратегии битрейта, и в случае выбора CBR (или постоянного битрейта) на медленных сценах качество будет высоким, а на быстрых - низким. В-третьих, у кодеков есть так называемые ключевые кадры, качество которых обычно изменяется отдельно и отличается от качества остальных кадров. В-четвертых, на качество влияет предварительная фильтрация (которая есть у всех современных кодеков)... В-пятых... В-шестых... В-седьмых...

Выходит, что среди 150-200 тысяч кадров, которые составляют любой достаточно длинный фильм, не составит труда подобрать как сравнительно хорошие, так и сравнительно плохие кадры. Особенно, если речь идёт о динамичном фильме.

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

Вот пример: график сравнения качества в метрике PSNR (чем выше значение этого показателя, тем лучше качество). Если сравнивать кадры "с пиками", то кодек VP будет лучше кодека DivX, иначе - наоборот.

Разные кодеки "затачиваются" под разные типы фильмов

Многие знают, что в свое время существовали DivX 4.1 LowMotion & DivX 4.1 FastMotion. При том, что оба проигрывали фильмы одинаково, один был лучше приспособлен к воспроизведению видеофрагментов со слабым движением, а другой - с сильным. Из-за этого качество сжатых ими фильмов заметно различалось.

Обратите внимание: формат, в который они жали, был один! А сжатие в него осуществлялось по-разному! В результате, при одинаковом размере файлов качество получалось различным.

Аналогичная заточенность под свой тип данных характерна абсолютно для всех кодеков. Кто-то лучше жмет высокие битрейты. Кто-то, наоборот, низкие. Кто-то затачивается под сильное движение, кто-то под слабое. И даже так: кто-то затачивается под мультфильмы, а кто-то под реальное видео. Кто-то под "шумные" фильмы, кто-то под "чистые" и т.д. Имея исходные тексты кодека, можно, не меняя его формат, то есть не изменяя декомпрессор, приспособить его практически под любой тип фильмов.

Это означает, что для имеющих примерно равное качество кодеков А и Б легко подобрать фильмы, на которых А будет заметно лучше Б, и на которых Б будет заметно лучше А. Интересно, что результат на двух кодеках может заметно различаться при сравнении качественной копии фильма на DVD и "тряпичной" пиратской записи того же фильма. Хотя фильм "один и тот же", но "лучшие" (в мире) кодеки оказываются разными! На одном фильме победит кодек А, а на другом - Б.

На иллюстрациях ниже видно, насколько отличаются кадры, сжатые кодеками Divx 3.1 и Divx 5.1. Черный цвет свидетельствует о том, что разницы нет; синий, зеленый и красный по возрастающей показывают различия имеющиеся в изображениях. Если привести эти кадры в качестве сравнения, то придётся признать, что Divx 3.1 лучше Divx 5.1.


Исходный кадр


Divx 3.1


Divx 5.1

Качество сжатия конкретного фильма может сильно зависеть от параметров кодирования

Большинство об этом не задумываются (ведь авторы кодеков, разумеется, всё предусмотрели!), но у кодеков, как правило, есть множество параметров, позволяющих при одном размере файла добиваться кардинально различающегося качества. В первую очередь, это параметры стратегии битрейта, особенно режимы quality-based & bitrate-based. Немалое влияние оказывают параметры предварительной фильтрации - в частности, deinterlasing (встречаются фильмы, которые сжимали в череcстрочной развертке в MPEG-4), denoising, deflicking и т.д. Существуют параметры управления частотой ключевых кадров, маской использования B-frames, управление зависимости предварительного фильтра от фильма и т.д.

Если установить один кодек в режим Maximum Perfomance, а другой (примерно такого же качества) в режим 2-pass Maximum Quality, то на выходе получится два файла одинакового размера, но существенно разного качества. Что делать дальше - зависит от честности сравнивающего. Многие компании не гнушаются выкладывать результаты подобных трюков на сайты, чтобы все желающие убедились в преимуществах одного кодека перед другим. Информацию о том, что один кодек работал в десять раз дольше другого, они предпочитают оставлять за кадром. Исходный несжатый файл и параметры сжатия при этом, разумеется, тоже скрываются. Зачем людям (тем более, журналистам) знать лишнее?

В кодеке на графике из-за ошибки в rate control на одном из битрейтов резко падает качество (да, ошибки в кодеках тоже случаются). Для этого кодека данный битрейт будет весьма неудачным параметром.

Существуют и другие, более тонкие способы достичь как реального преимущества, так и "преимущества" в плохо скрываемых кавычках. Например, не существует методик, определяющих, насколько пропуск кадров критичен для восприятия и т.д.

Если вникнуть в методы "надувательства" при сравнении двух кодеков, то станет понятно, почему при корректном сравнении не обойтись без глобального тестирования. Как минимум, нужно сравнивать разные по характеру фильмы с разными битрейтами, причем с использованием интегральных (средних) характеристик качества по всему фильму. Именно для этого и проводилось MSU Video Codec comparison.

В качестве тестовых были выбраны девять последовательностей разного характера. Для того чтобы проверить все кодеки на разных битрейтах, пришлось прогнать их более 2400 раз с разными параметрами (и то, фактически, тестировались только параметры по умолчанию).

Результатом и стал двухсотстраничный отчет http://compression.ru/video/codec_comparison/. Несмотря на внушительные размеры, он далеко не полон и со временем будет пополняться информацией о новых доступных кодеках, новыми результатами сравнений и новой аналитикой. В частности, в ближайших планах сравнение последних версий DivX и VP62, а также видеокодеков, служащих для сжатия без потерь.

Успешного подробного сравнения!

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.