Как убрать логотип из видео?

VxWorks

Вопрос по поводу удаления лого вызвал достаточно большое количество писем. Настолько много, что мне стало интересно самому, насколько хорошо это можно сделать. Так как большинство приславших письма упоминали фильтр Logoaway, то и тест я провел именно с ним. В качестве тестового ролика я выбрал сцену из Мексиканца, на которой уже было странное лого, причем мне абсолютно непонятно его значение и смысл расположения в таком странном месте. Также я решил проверить, насколько большой участок может исправить фильтр, и посадил на картинку еще одно лого в виду довольно большого глобуса. Чтобы не было претензий по поводу некорректной проверки фильтра, скажу, что я специально пытался заставить фильтр испортить видео :)
На возмущенные вопросы - зачем я это делаю, отвечаю: Ни один фильтр не может восстановить информацию, которой физически нет в кадре. Лого уничтожает то, что находится под ним, так что фильтр может попытаться восстановит картинку - но никогда не вернет ее полностью! Подобным образом работает цифровая видеокамера - как известно, на CCD матрице бывают т.н. "битые" пиксели, а также те, у которых неадекватное восприятие (ну и написал - в психиатры уже можно идти :) ) изображения. Так вот, их "ремонтируют" именно с помощью таких фильтров в режиме реального времени. Проблема начинается, когда эти пиксели находятся в группе, а не поодиночке. Так вот, насколько я помню, если в группе есть больше 10 смежных пикселей, матрица бракуется.

То есть, не надо ждать от фильтра чуда - надеюсь, это понятно? А теперь давайте посмотрим, что у меня получилось: :)

user posted image

Слева хорошо видно лого NB (чтобы это значило? Nota Bene?). Справа видно большой глобус - я его подключил с помощью фильтра Logo, на который есть ссылка здесь

А вот что получилось при попытке отфильтровать только NB лого:

user posted image

Если не обращать внимания на нефильтровавшийся глобус, а сконцентрироваться на NB лого, то можно увидеть проблему - размытость на том месте, где оно было. Причину этого я объяснял выше. К слову, такой эффект будет только если через лого проходит линия стыка двух неоднородно закрашенных областей - в данном случае - стены и щеки водителя. Можно, конечно, водителя влепить щекой в эту стену, тогда они будут одного цвета и проблема исчезнет, но я сильно сомневаюсь, что фильтр будет способен на это :)

user posted image

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

Как работать с фильтром? Сначала надо пойти сюда и скачать его. Потом выполнить следующие действия:
1) Открыть архив с фильтром и скопировать файл logoaway.vdf в директорию, где Virtual Dub ищет фильтры: plugins.
2) Запустить Virtual Dub
3) Открыть файл с видеороликом (File -> Open video file -> Browse ->OK)
4) Добавить фильтр в список (Video -> Filters -> Add -> Logoaway 3.01 ->OK)
5) В открывшемся окне нажать - Show Preview.

user posted image

Вот что должно быть на экране (примерно так:)). Вкратце пробегусь по опциям:

Logo Border Position - место где находится лого. Чтобы увидеть квадратик, в котором будет работать фильтр, желательно включить опцию Visible Borders (справа).
Logo Border size - размер лого.
XY - включить алгоритм XY - на мой взгляд - работает лучше, чем UGLARM
UGLARM - включить алгоритм UGLARM
Solid Fill - просто закрасить лого, используя цвет, заданный в Solid fill color
XY weight - вес по X и Y. Здесь задается доминанта по координате.
Blur power - величина размыва картинки на месте лого.
Все изменения очень хорошо видно на картинке предварительного просмотра.

Все что теперь осталось - нажать на ОК и вернуться в главное меню. Теперь надо выбрать кодек в Video -> Compression и записать файл.

Просто, правда? Скажу честно, у меня заняло больше времени написать эту статью, чем поиграться с фильтром :)