Обработка видео: описание дополнительных фильтров
1. Smart Deinterlacing Filter.
Лучший, на мой взгляд, deinterlace фильтр для VirtualDub'а, хотя и не
идеальный. Обеспечивает несколько частично пересекающихся режимов
де-интерлейсинга. Обрабатываются только нестатичные области фильма.
Здесь рассмотрен фильтр версии 2.7b2. (http://sauron.mordor.net/dgraft/index.html)
Основные опции:
Frame-only differencing - опция по умолчанию, в расчет
принимаются различия в цвете точек между кадрами. Если точка
неидентична этой же точке в предыдущем и кадре, она считается
движущейся и подлежит обработке. Самый быстрый способ.
Field-only differencing - в расчет принимаются различия в
цвете точек между полями (т.е. точка сравнивается с точками сверху и
снизу). Если точка неидентична этой же точке в предыдущем и последующем
полях, она считается движущейся и подлежит обработке.
Frame-and-field differencing - комбинирует два предыдущих
метода. Самый медленный способ.
Выбор метода деинтерлейсинга зависит, как показывает практика,
непосредственно от фильма. Идеальный деинтерлейс, особенно для видео с
быстрым движением, практически невозможен. Наша задача состоит в том,
чтобы свести появление артефактов деинтерлейса к минимуму. К сожалению,
невозможно (в достаточно удобной форме) применить различные установки
для разных участков фильма. Для того, чтобы проверить, какие установки
для данного фильма лучше всего, можно выбрать три эпизода из фильма
(статичный, с умеренным перемещением и с быстрым перемещением),
применить на них фильтр и, меняя установки (можно со включенной опцией
Show motion areas only, о ней чуть ниже), выбрать, какой режим
смотрится лучше всего для всех трех эпизодов. Как правило, лучшие
результаты для видео, оцифрованного с видеокамеры, получаются с
использованием первого метода с включенным режимом Blend instead of
interpolate in motion areas, либо с использование третьего метода.
Дополнительные опции:
Compare color channels instead of luma - если опция
выбрана, фильтр будет сравнивать цветовые значения (RGB), тогда как в
случае отключения опции будет сравниваться luminance составляющая.
Включение опции улучшает качество деинтерлейсинга для фильмов, в
которых присутствуют большие области одного цвета (мультфильмы), тогда
как для обычных фильмов эту опцию следует отключать.
Show motion areas only - Опция предпросмотра. Во
включенном состоянии в окне предпросмотра VirtualDub'а будут
показываться только области видео, где будет применен фильтр - т.е.
области, считающиеся движущимися. Полезна для принятия решения, какой
метод использовать и какие значения порога выставлять.
Blend instead of interpolate in motion areas - когда
опция включена, фильтр в движущихся областях использует пикселы только
из одного поля, интерполируя изображение, в статических областях
используются оба поля. Если опция включена, фильтр будет смешивать
цвета линий сверху и снизу, размывая тем самым как артефакты
интерлейсинга, так и само изображение. Какой способ лучше, выбирать вам
- у каждого есть свои недостатки: интерполяция выдает небольшие
"ступеньки" и подчас имеет цветовые артефакты, смешивание цветов, в
свою очередь, немного понижает четкость деталей и образует отражения
(эффект гало) движущихся предметов.
Use cubic for interpolation - используется только для
интерполяции: при включенной опции используется более медленный, но
зато более точный метод интерполяции (по 4м линиям).
Motion map denoising - для того, чтобы избавиться от "ступенек"
желательно использовать низкие значения порога (threshold), но при
низких его значениях цветовой шум начинает восприниматься как движение
- в итоге мы имеем своеобразные искорки в обработанном видео и
уменьшаем эффективное разрешение фильма (так как размер движущихся
областей возрастает). Чтобы избежать этого, включите данную опцию - в
этом случае фильтр будет совершать дополнительные проверки на шум на
стадии определения областей движения. Конечно же, скорость обработки
при этом упадет, причем достаточно заметно.
Motion Threshold - порог, пороговое значение, определяет
разницу сравнения пикселей для определения, статичный ли пиксель или
нет. Чем больше значение порога, тем больше артефактов останется в
итоговом видео, чем меньше значение - тем меньше будет эффективное
разрешение итогового фильма. Приемлемые параметры зависят от
конкретного фильма и составляют 15-25 для использования фильтра с
отключенным Motion map denoising и 10-20 - с включенным. Для того,
чтобы пронаблюдать эффект понижения или повышения порога, включите
опцию Show motion areas only и меняйте значения порога - в окне
предпросмотра увидите производимые изменения.
Scene Change Threshold - иногда смена сцены случается
между полями кадра, в этом случае фильтр может отработать некорректно.
Чтобы избежать этого, введен этот параметр. Если количество пикселей (в
процентах) в движущихся областях кадра превысит это значение, весь кадр
будет расценен как движущийся и подлежащий обработке. Следует заметить,
что данная проверка выполняется до Motion map denoising
"Продвинутые" опции:
Тут необходимо отвлечься для объяснения некоторых технических вопросов.
Как правило, видеоматериал состоит из ряда B1T1-B2T2-B3T3-..., где B -
Bottom Field (нижнее поле), T - Top Field (верхнее поле), число - номер
оригинального кадра, а тире разделяет кадры. При захвате этот порядок
может поменяться, причем в зависимости от ситуации и характерных
особенностей карты захвата, возможны четрые варианта (от ситуации:
начать захват с верхнего или нижнего поля; от карты: располагать в
памяти вначале нижнее поле, а потом верхнее или наоборот):
1. B1T1-B2T2-B3T3...
2. T1B1-T2B2-T3B3...
3. T1B2-T2B3-T3B4...
4. B2T1-B3T2-B4T3...
И все было бы здорово, если было бы всегда так - мы бы просто указали
фильтру, в каком порядке нужно расставить (сдвинуть) поля. Но бывает
ситуация, когда мы имеем дело с "неправильным" потоком, который
выглядит как B1T2-B2T3-B3T4-.... Этот поток будет замечательно
отображаться на чересстрочном телевизоре, но при захвате и последующей
попытке сделать деинтерлейс нам обеспечена головная боль. Для этого в
фильтре предоставлены "продвинутые" опции, которые позволяют нам
исправить входящий поток непосредственно перед деинтерлейсом.
Swap fields on input - поменять поля в кадре на входе.
Shift field phase by one - сдвигает поля вправо на одно
поле. Пример: T1B2-T2B3-T3B4... -> xxT1-B2T2-B3T3...
Swap fields on output - поменять поля в кадре на выходе
(т.е. после первых двух действий).
Disable Motion Processing - не делать деинтерлейс,
использовать фильтр только для упорядочивания потока.