Прочитал в форуме опыты Alf_Zetas с кодеками и очень удивился
результатам. Дело в том, что я года 2 назад лично для себя проводил
подобное тестирование с кодеками и тогда у меня победил MainConcept, и
где-то на уровне с ним Cаnopus. Кодеков было протестировано штук 8, из
них Microsoft, Pinnacle и Matrox попали у меня в разряд «полный
отстой». После этого я спокойно работал с MainConcept и был доволен.
Однако данные опыты все это опровергали, и я решил снова взяться за
дело.
Прежде Всего решил сгрузить новые версии кодеков, какие смог найти. И
с каждым из них вышел казуз.
1. MainConcept. На их сайте последняя версия ProDV 3.0.16 Тем
не менее странно, т. к. файл mcdv_pro.dll их предыдущей версия 3.0.9
имеет дату создания 28.11.2003 а новая версия ProDV 3.0.16 дату
31.10.2003. Тем не менее, будем пользоваться последней версией.
2 Сanopus. Файл Кодека hlcdvc.dll Canopus_DV_CODECv3.2 имеет
дату 07.05.2004. Тем не менее, до этого у меня в системе стоял кодек
Сanopus с датой создания 10.06.2002, имел точно такой же размер
376 832 байт и имел точно такую же версию файла 1.0.0.4.
3 Matrox. Здесь вообще полный улет. Файл, который я сгрузил
под видом Matrox.4.0.0.92 установил мне кодек DigiVCap.dll созданный
27.07.2002, а сам файл имел версию 2.5.0.63. После этого я для
гарантии сгрузил еще 3 файла с кодеками с разных мест,в том числе
официальные Matrox VfW от Digisuite 7.1. Все они содержали одну и ту
же версию файла.
У меня сложилось впечатление, что все эти новые версии кодеков -
просто приписанные кем то цифры. И больше ничего.
Ну, а теперь непосредственно к тестам.
Прежде всего, надо правильно подготовить исходную картинку. Надо
понимать, что если мы попытаемся сжать однотонную серую картинку, а
потом сравнить с оригиналом, то и искажений получим 0, т. к. любой
кодек сожмет это «на ура». То есть количество искажений зависит еще и
от исходного сигнала. Поэтому картинку готовим соответствующую.
Методика профессиональных испытаний была как-то давно подробно описана
в журнале «Мультимедиа и видео». Там создавали композиционное
изображение, где в центре кадра в круге помещалась полезная картинка,
а вокруг подавался сигнал с генератора шума. Такой сигнал очень трудно
сжать, т. к. он содержит огромное количество мелких, хаотически
меняющихся точек и очень сложно поддается анализу для кодера. В
процессе эксперимента размеры круга уменьшали, увеличивая площадь
сигнала шума и смотрели, когда кодек «сломается», т. е. искажения
выйдут за допустимый предел. Нечто подобное попробуем сделать и мы.
Кстати, по поводу программ, меряющих степень искажений. Как-то у меня
была подобная программа, но толку я с ней не дал, и по времени она
была утеряна за ненадобностью. К сожалению, программу, которую
использовал Alf_Zetas, я выкачать не смог, т. к. ссылка умерла.
Поэтому мерять будем «на глаз».
Итак, исходное изображение. Я взял картинку из фотошопа с утенком,
приделал к ней альфаканал, и кроме того, убрал цвет. все это положил
на 2 дорожку в Previere 6.5. Это будет наша полезная картинка. Для
дорожки 1 создал Color Matte серого цвета и применил к ней фильтр
Noise 100%. Получился цветной, хаотичный шум. Установки проекта и
экспорта - некомпрессированное AVI и без полей, чтобы они, не дай бог,
чем нибудь помешали. В результате имеем такую вот картинку.
http://rushal.russian.ru/original.jpgЗаметьте, я намереено сделал утенка однотонным, т.к. на ровном оттенке
легче будет заметить искажения. Фон же, наоборот, как можно более
контрастный и цветной (ведь погрешности цвета мы тоже хотим оценить,
неправда ли?). Так легче понять, как фон будет влиять на утенка.
Теперь - кодирование. Установки проекта и экспорта ставим на
соответствующий кодек и просчитываем соответственно Matrox.avi,
MainConcept.avi, Сanopus.avi. Перед сменой кодека Preriere выгружаем,
чтобы исключить возможное влияние.
Теперь самое главное - сравнение. Создаем новый проект с установками
проекта и экспорта - некопмрессированное видео. На дорожку 1 кладем
наш исходный некомпрессированный файл и применяем к нему фильтр Invert
RGB, получая таким образом, негатив. Теперь сложим его с одним из
закодированных файлов. На дорожку 2 кладем один и файлов и
устанавливаем для него уроверь прозрачности. Что должно получитья в
результате на выходе, если кодер не внес искажений? Правильно,
равномерный серый фон. Все же то, что мы увидим в результате, и будут
искажения, которые внес кодер. Чтобы сделать все это более наглядным
для глаза, создадим из композиции виртуальный клип и наложим на него
эффект Contrast c уровнем 70. Просчитаем 3 файла для каждого из
кодеков. Не забываем перед каждой сменой кодека выгружать Preriere.
Итак, вот результат:
http://rushal.russia...Mainconcept.jpgMainConcept
http://rushal.russian.ru/Canopus.jpgСanopus
http://rushal.russian.ru/matrox.jpgMatrox
На MainConcept у утенка мы можем увидеть глаза. Это означает некоторую
неравномерность преобразаваний по яркости. Вокруг утенка, кодек,
конечно же, «сломался». В реальном изображении то что у нас шум, -
это резкие цветные и яркостные переходы, и там «неправильность»
каждого пиксела на несколько значений гораздо менее заметна, чем на
обнотонных участках. Тем не менее весь утенок равномерно серый,
влияние шума минимально. Результат можно признать очень хорошим.
Сanopus. Окружающий шум имеет примерно одинаковую с MainConcept
величину, а вот глаза превратились в рассадник артефактов, тоже самое
клюв. Как повлиял шум на равномерные участки, хорошо видно в самом
низу утенка (сравните у MainConcept). Оощая оценка - хорошо.
Matrox Тут и говорить особенно нечего - и так все видно. Шум имеет
большую амплитуду, а также частицы шума более крупные. Это означает,
что реальное изображение будет «замыливаться»(может этим и объясняются
хорошие полученные результаты Matrox в других тестах - картинка
становится более «мягкой»). Сам же утенок в видеоварианте выглядит
ужасно - если у MainConcept и Сanopus просто присутствуют, то на
Matrox они шевеляться! Впечатление дикое. В реальном видео это значит,
что статичные предметы в кадре будут шевелиться в зависимости от
перемащений других. Общая оценка - плохо.
Вот вобщем то и все. Если что не так - товарищи меня поправят.