Фильтры Virtual Dub для обработки видео

Мы приступаем к рассмотрению, пожалуй, самой интересной части Virtual Dub — фильтрам. Как уже говорилось в первой статье, фильтров для Virtual Dub существует достаточно большое количество. Более эффективному их применению поспособствуют теоретические знания, полученные, к примеру, на сайте сайт Однако не каждому под силу вникнуть в смысл приводимых там формул. Поэтому, если разбираться с ними откровенно лень, то можно ознакомиться хотя бы с некоторыми понятиями, которые смогут существенно повысить эффективность метода "научного тыка". В Интернете существует немалое количество сайтов, на которых описываются те или иные комбинации фильтров для визуального улучшения качества картинки. В основном, эти комбинации пригодны для "улучшения" слабозашумленных записей и почти не пригодны для VHS. А в общем–то, какой–то единой комбинации для "чистки" VHS и не должно существовать, потому что в каждом отдельном случае "набор" шумов и степень зашумленности будет разной. В самом общем случае, для улучшения качества используются 2 фильтра — Dynamic и Chroma Noise Reduction, для устранения динамического и цветового шума. И даже, зачастую, результат работы этих фильтров вполне удовлетворителен. Однако нередки и случаи, когда желаемого эффекта от применения только этих фильтров получить не удается. Тогда приходится искать альтернативу, порой долго, а порой и вовсе безуспешно. Поэтому, приступая к экспериментам над фильтрами следует иметь ввиду, что качественная работа может потребовать очень много сил и времени.

Применение фильтров Virtual Dub происходит только при включенном режиме Full processing mode. Особенностью этих фильтров является то, что для их применения, Virtual Dub всегда конвертирует цветовое пространство в RGB32. Это вызывает некоторое замедление обработки видео. Кроме того, цветовое пространство RGB не всегда может являться оптимальным для решения тех или иных задач.

На рис.1 показано окно фильтров. Слева от названия фильтра, в списке находится информация о размерах кадров видео до и после применения фильтра. Справа от названия фильтра, в скобках приводится информация о параметрах фильтра. Для каждого фильтра можно дополнительно изменить размеры кадров видео путем обрезки их краев (кнопка Cropping).


Рис.1 Окно фильтров Virtual Dub.

Первые на рассмотрении у нас фильтры деинтерлейса. Напомню, что это эффект "расчески", возникающий при воспроизведении чересстрочного видео. На сегодняшний день можно найти не так уж и мало фильтров, этот эффект устраняющих. Основных методик устранения этого эффекта несколько:
1. Отбрасывание строк одного полукадра и дублирование строк другого.
2. Смешивание строк полукадров.
3. Отбрасывание строк одного полукадра и достраивание его строк на основе другого.
4. Выявление движущихся частей изображения путем анализа ряда кадров и применение алгоритмов устранения эффекта только к этим частям изображения.

В качестве рассматриваемых фильтров я выбрал следующие:
1. Стандартный деинтерлейсер Virtual Dub. Сравнивать его с другими деинтерлейсерами некорректно, поэтому просто рассмотрим его опции (рис.2) : . Blend fields together (best) — смешивать поля. В этом режиме поля смешиваются. В динамичном видео это приводит к размытию картинки. . Duplicate field 1,2 — дублировать поля. Для каждого кадра дублируется поле 1 или 2. То есть четные полукадры выбрасываются и замещаются нечетными или наоборот.
. Discard field 1,2 — исключать поля. То же, что и Duplicate field, только выброшенные полукадры не замещаются. То есть высота каждого кадра уменьшается в два раза.
. Unfold fields side–by–side — разложить на поля. Кадр будет преобразован таким образом, что слева будет первый полукадр, а справа второй. Высота кадра уменьшится, а ширина увеличится в два раза.
. Fold side–by–side fields together — свернуть поля. Эта опция обратна Unfold.


Рис.2 Стандартный фильтр деинтерлейса Virtual Dub.

2. Smart Deinterlace. Фильтр реализует четвертый метод устранения эффекта "расчески". Окно настроек этого фильтра изображено на рис.3. — Зависимые переключатели Frame–only differencing (различия между кадрами), Field–only differencing (различия между полями), Frame–and–field differencing (различия между кадрами и полями) определяют, в каком случае будут применяться алгоритмы устранения эффекта "расчески". — Зависимые переключатели Blend (смешивание), Linear interpolate (линейная интерполяция), Cubic interpolate (кубическая интерполяция), Edge–directed interpolate (выявление контуров) определяют метод устранения эффекта "расчески". Результат устранения эффекта методом по умолчанию Blend практически ничем не отличается от результата стандартного фильтра Deinterlace.
. Compare color channels (instead of luma) — сравнивать цветовые каналы (вместо сравнения яркости). Полезная опция при работе в цветовом пространстве RGB.
. Show motion areas only — показывать только области движения. Отладочная опция.
. Motion map denoising — очистка областей движения от шумов. Автор фильтра настоятельно рекомендует эту опцию для Field–only differencing. . Motion threshold — порог движения. Опция определяет "чувствительность" фильтра к движению Автор рекомендует значение 15–35 в нормальном режиме и 10–20 при включенной опции Motion map denoising.
. Scene change threshold — порог изменения сцены. Эта опция нужна, чтобы при полной смене сцены не были видны остатки предыдущей сцены. . Phase shift — фазовый сдвиг.
. Field swap before/after phase shift — поменять местами поля до/после фазового сдвига.
. Disable motion processing — не применять алгоритмы обнаружения и устранения эффекта расчески.

Фильтр работает более качественно, когда сравниваются только кадры. Мелкий шум может привести к тому, что мелкие линии будут преобразованы фильтром также в шум, то есть линии станут более размытыми и дрожащими. Если вам придется иметь дело с "блочным" видео (видео, в котором из–за слишком низкого битрейта изображение состоит из квадратных блоков), то имейте ввиду, что после применения этого фильтра края предметов на изображении станут более размытыми, а иногда у них могут появиться отражения. Поэтому перед применением этого фильтра желательно применить фильтр устранения блочности (Deblocking) со стандартным деинтерлейсером с опцией fold до деблокинга и unfold после. В случае динамичного видео, внутри предметов на изображении могут появляться пятна фона. В целом, этот фильтр деинтерлейса один из лучших фильтров деинтерлейса для Virtuald Dub.


Рис.3 Фильтр Smart Deinterlace.

3. Area based Deinterlace. Фильтр реализует четвертый метод устранения эффекта "расчески". На рис.4 представлено его окно настроек. . Show deinterlaced areas only — аналогично опции Show motion areas only фильтра Smart Deinterlace.
. Blend istead of interpolate — смешивание вместо интерполяции.
. Threshold — аналогично опции Motion threshold фильтра Smart Deinterlace.
. Edge detect — определение контуров. Вероятно, эта опция отвечает за "степень" интерполяции. Автор рекомендует увеличивать значение при плохом сглаживании контуров.
Все недостатки Smart Deinterlace присущи и этому фильтру. Кроме того, этот фильтр плохо умеет сглаживать контуры.


Рис.4 Фильтр Area based Deinterlace.

4. QS Deinterlace. Фильтр реализует четвертый метод устранения эффекта "расчески". Окно настроек показано на рис.5. Этот фильтр очень похож на Smart Deinterlace, как по настройкам, так и по результатам работы. Судя по авторству, это просто доработанный Smart Deinterlace.


Рис.5 Фильтр QS Deinterlace.

5. AlparySoft Deinterlace, автор Alpary Soft. По утверждению разработчиков, этот фильтр реализует четвертый метод устранения эффекта "расчески". Однако статичные мелкие надписи, как было видно при просмотре видео, также подвергались изменениям. Характер этих изменений позволяет предположить, что фильтр использует третий метод устранения эффекта "расчески". Метод этот не так уж и плох. И описанных
недостатков фильтров типа Smart Deinterlace не наблюдалось, за исключением размытых краев в "блочном" видео. Но было потеряно вертикальное разрешение. Применение этого фильтра дает примерно такой же эффект, как изменение размера прогрессивного видео с 512х384 до 768х576 точек. Окно настроек этого фильтра представлено на рис.6. Особых различий между методами устранения эффекта я не заметил. Думаю, что это просто различные методы достраивания недостающего полукадра. Можно задать различные методы для разных областей кадра. Честно говоря, эта опция кажется мне в этом фильтре бессмысленной.


Рис.6 Фильтр Alparysoft Deinterlace.

6. Deinterlace MAP. Он реализует четвертый метод устранения эффекта расчески. Его окно настроек изображено на рис.7.
. Edge detect — аналогично соответствующей опции фильтра Areabased Deinterlace.
. Threshold — аналогично опции Scene change threshold фильтра Smart Deinterlace.
. Smooth Map — аналогично опции Blend instead of interpolate фильтра Areabased Deinterlace.
. Show effected — аналогично опции Show motion areas only фильтра Smart Deinterlace.

В отличие от фильтров типа Smart Deinterlace, он оказался менее чувствительным к шуму и поэтому тонкие линии так и остались тонкими и почти без шума. В остальном, этот фильтр очень похож на Areabased Deinterlace, за исключением того, что игра с настройками позволяет получить более сглаженные контуры.


Рис.7 Фильтр Deinterlace MAP.

Следующие на рассмотрении — шумоподавители. До сих пор нет единого мнения, каков порядок использования шумоподавителей и деинтерлейсеров. Одни применяют шумоподавители после деинтерлейса, другие используют опции fold, unfold стандартного деинтерлейсера, применяют шумоподавители, а потом уж выполняют деинтерлейс. Я предпочитаю второй вариант для сильно зашумленного видео и, соответственно, в иных случаях — первый вариант. Фильтры шумоподавления, пожалуй, отнимают больше всего времени при подборе фильтров. Само понятие шума — довольно обширное. По существующим на сегодня фильтрам, я бы разделил это понятие на такие категории:
1. Цветовой шум. Это попросту цветные пятна на изображении.

2. Динамический шум. Это то, что мы и привыкли называть шумом на бытовом уровне.

А вот по способам определения и подавления шума, фильтры совершенно объективно делятся на три категории — две основные и одну дополнительную.

1. Пространственные фильтры "ищут" шум в определенной области одного отдельно взятого кадра, то есть сглаживают некоторую область кадра, не задаваясь вопросом, как эта же область будет сглажена в следующем кадре или была сглажена в предыдущем. Характерная особенность этих фильтров состоит в том, что при слишком сильной фильтрации могут теряться детали изображения.

2. Временные фильтры наоборот, анализируют изменения характеристик точек в ряде кадров и делают эти изменения менее резкими. Что при этом происходит с областями отдельных кадров, для таких фильтров не "интересно". Слишком сильная фильтрация может привести к тому, что
движущиеся объекты будут смазаны.

3. Пространственно–временные фильтры, как следует из названия, выполняют функции как временных, так и пространственных фильтров. По поводу их недостатков однозначно высказаться трудно.
Фильтров шумоподавления гораздо больше, чем деинтерлейсеров. Рассмотрим некоторые из них.

Для устранения цветового шума:

1. Chroma Noise Reduction. Окно настроек представлено на рис.8. Смысл диаграмм в состоит в следующем: ось Х обозначает некоторую
последовательность кадров. Движок по этой оси устанавливает количество кадров, на протяжении которых будет проводиться анализ изменений яркости и цветоразностей; движок по оси Y устанавливает чувствительность фильтра по каждой составляющей. Опция Wide меняет характер кривой.

 

Рис.8 Фильтр Chroma Noise Reduction.

2. VHS, автор flaXen. Как видно из названия, фильтр предназначен для обработки видео с VHS–кассет. Как видно из рис.9, в окне настроек собраны 3 фильтра — цветовой и динамический шумоподавители и фильтр увеличения резкости. К сожалению, не удалось найти описания его настроек. . Группы Stabilize и Chroma shifting — это фильтры для устранения цветового шума.
. Группа Noise reduction — фильтр для устранения динамического шума. Опции Pre–filter, Post–filter включают этот фильтр до и после
цветового шумоподавителя. Threshold — порог изменения яркости точки (или точек в радиусе Radius) между разными кадрами. То есть этот фильтр — пространственно–временной.
. Группа Sharpen — фильтр для увеличения резкости. Effect — эффективность фильтра. 8–directed filter — некий медленный алгоритм
увеличения резкости.

В общем–то, зачастую вполне хватает и одного этого фильтра вместо набора соответствующих фильтров. Главное, не слишком увлечься игрой с настройками, иначе фильм может превратиться в мультик.


Рис.9 Фильтр VHS.

Для устранения динамического шума:
1. Dynamic Noise Reduction. Этот очень простой фильтр имеет всего одну настройку — Threshold — порог изменений яркости точки в разных кадрах. Большое значение Threshold может привести к тому, что в последующих кадрах будут оставаться контуры из предыдущих.

2. Random Noise Remover. Это довольно необычный пространственно–временной фильтр. Само понятие шума уже включает в себя "непредсказуемость". На рис.10 показано окно настроек этого фильтра. Принцип действия его таков.
. анализируются точки предыдущего и следующего кадра, и если изменения яркости составляющих не превышают соответствующих порогов в
группе Scene Threshold 1, то сравниваются точки в текущем и предыдущем кадрах. В этом случае, если изменения яркости превысят
пороговые значения, указанные в группе Scene Threshold 2, то данная точка будет считаться "шумной" и обрабатываться соответствующим образом. Чтобы фильтр не принял за шум движущиеся объекты, анализируются точки в радиусе, задаваемом движком Radius. Кнопка Copy
threshold 1 to 2 делает одинаковыми настройки соответствующих групп.
. Опция Show replaced pixels включает показ точек, которые обрабатывает фильтр.
. Опция DNR включает режим Dynamic Noise Reduction.
. Опция Replace Spot Perimeter предназначена для "крупного" шума, то есть шумовых пятен.


Рис.10 Фильтр Random Noise Remover.

3. Video Denoise. Фильтр аналогичен Dynamic Noise Reduction, за исключением того, что порог изменений устанавливается не для яркости, а для каждого цветового канала. Включенная опция Use fast speed processing увеличивает скорость работы фильтра, но снижает качество. Особенность фильтра в том, что с этой опцией эффективно устраняется мелкий шум.

4. Wavelet Noise Reduction. Этот фильтр считается одним из самых передовых. Окно настроек показано на рис.11. К сожалению, не удалось найти описание настроек для этого фильтра. А вот "правильная" игра с настройками приведена по этой ссылке
сайт Там же приведено описание "технологии" вейвлетов. Фильтр может использоваться также и для подавления мелкого цветового шума.


Рис.11 Фильтр Wavelet Noise Reduction.

5. 2d cleaner. В отличие от Dynamic Noise Reduction, это пространственный фильтр. Threshold — порог изменения яркости точек в некоторой области кадра. Есть две дополнительные опции. Если включена опция Show sharp edges, то фильтр не будет применяться к контурам, оставляя их резкими. Опция interlaced video предназначена для чересстрочного видео. Действие фильтра в этом режиме аналогично его действию без этой опции со стандартным деинтерлейсером с опциями fold, unfold.

6. MSU Denoise. Опции Spatial/Temporal denoising включают пространственный и временной фильтр. Эффект от применения этого фильтра показался мне очень слабым. Фильтр подходит, скорее, для чистки DVD–записей.

7. VHS.

Последними фильтрами в "классической" схеме, обычно являются фильтры увеличения резкости (sharpen). Эти фильтры надо использовать очень осторожно, т.к. их действие практически обратно действию шумоподавителей. То есть с увеличением резкости, увеличится и зашумленность, что повысит минимальный битрейт, с которым данное видео можно сжать без заметных искажений. Так что, в идеале, лучше отказываться от таких фильтров. Приведу описание настроек нескольких таких фильтров:
1. MSU Smart Sharpen. Это очень мощный фильтр. Доступны только предустановленные настройки. По характеру изменений, этот фильтр очень похож на FFT3D — один из лучших фильтров шумоподавления и увеличения резкости программы AviSynth.
2. Sharpen (стандартный). Этот фильтр имеет единственную настройку эффективности.

Мы рассмотрели, так сказать, основные группы фильтров. Кроме них, существует много вспомогательных фильтров. Назначение их самое разное. Приведу описание нескольких фильтров, к помощи которых часто прибегал.

1. rmPAL. Этот фильтр без настроек. Как видно из названия, предназначен он для записей PAL. Фильтр "выполняет" обратный фазовый сдвиг, который применяется в стандарте PAL для устранения цветовых искажений. В результате, на изображении исчезают характерные цветные полосы (если они есть). Если же таких полос вы не наблюдаете, то, скорее всего, у вашего устройства захвата есть такой аппаратный фильтр и он включен. 2. MSU Smart Deblocking. Фильтр устранения "блочности". Окно его настроек показано на рис.12. Не буду лукавить — разобраться в настройках этого фильтра по названию опций нельзя. И дабы откровенно не плагиатить, вместо описания этого фильтра я предлагаю вам ссылку на сайт автора этого фильтра: сайт .


Рис.12 Фильтр MSU Smart Deblocking

3. logo, стандартный. Фильтр для тех, кто хочет поместить на свои записи "водяной знак". Окно настроек изображено на рис.13. Расположение задается параметром Justify: одной из девяти кнопок задается базовое положение картинки "водяного знака" в кадре, параметрами X;Y задается отклонение от базового положения. Файл картинки может иметь тип Bitmap (BMP), Targa (TGA), JPEG. Возможно и задание прозрачности отдельных участков картинки, используя информацию альфа–канала. Если такого канала в вашей картинке не "оказалось", то можно использовать опцию Use gray channel of secondary image for alpha channel, которая позволит подгрузить черно–белую картинку маски. В качестве цвета альфа–канала используется черный. Опция Use pre–multiplied alpha channel, включает предварительную фильтрацию, то есть для альфа–канала используется черный цвет не только точек изображения–маски, но и изображения "водяного знака".


Рис.13 Стандартный фильтр logo.

Если вас интересуют какие–либо другие фильтры, не описанные здесь, задавайте свои вопросы по e–mail.

На рис.1 показан один из примеров цепочки фильтров. Этот пример можно назвать "классическим". Он годится для большинства записей VHS "стандартного" любительского качества. Как видно, все фильтры, за исключением Resize и Deinterlace, можно заменить одним фильтром VHS toys. Коротко опишу, что делает эта цепочка. Null transform — фильтр, который ничего не делает, — нужен для обрезки краев кадра. Конечно, можно обойтись без дополнительного фильтра и задать обрезку для фильтра Deinterlace, но представленный вариант удобнее, если придется подбирать параметры. Deinterlace устраняет эффект "расчески". Chroma Noise Reduction устраняет цветные пятна. Random Noise Remover устраняет динамический шум. Еще раз напомню, что желательно избегать применения фильтров типа Sharpen. Ну, а если вас такая схема не устроила, "берите бубен и пускайтесь в пляс".

Что касается обработки аудио, то об этом лучше расскажет Кристофер в одной из своих будущих статей.

В следующий раз мы поговорим о современных MPEG4, и сравнимых с ними, кодеках.

Ссылки:
Smart Deinterlace (2.8 beta) — сайт (бесплатный, автор Donald Graft).
Alparysoft Deinterlace (2.0.295.0604130) — сайт (платный, автор Alpary Soft R&D).
QS Deinterlace (1.0b) — сайт (бесплатный, авторы Виктор Томилов, Donald Graft).
Deinterlace MAP (1.0) — сайт (бесплатный, автор Shaun Faulds).
Area based Deinterlace (1.4) — сайт (бесплатный, автор Gunnar Thalin).
Chroma Noise Reduction (1.1) — сайт (бесплатный, автор Gilles Mouchard).
Dynamic Noise Reduction — сайт (бесплатный, авторы Avery Lee, Steven Don).
Random Noise Remover (1.07b) — сайт (бесплатный, автор Михаил Розов).
Wavelet Noise Reduction (0.1) — сайт (бесплатный, автор).
2d cleaner (0.6 beta) — сайт (бесплатный, автор Jim Casaburi).
Video Denoise (2.0) — сайт (бесплатный, автор Александр Чирков).
MSU Denoiser (1.6.2) — сайт (бесплатный, авторы С. Путилин, Д. Ватолин).
VHS (1.0) — сайт (бесплатный, автор flaXen).
rmPAL — сайт (бесплатный, автор ttyras).
MSU Smart Deblocking (0.5) — сайт (бесплатный, автор MSU Graphics & Media Lab).

Продолжение следует.

Maxe Erte the Mad maxe.erte@gmail.com
irc://Maxe_Erte_the_Mad#virtualdub@irc.mgts.by



Компьютерная газета. Статья была опубликована в номере 27 за 2006 год в рубрике софт

©1997-2024 Компьютерная газета