Главная страница
Видеосъемка, монтаж фильмов
Deshaker - применение фильтра для VirtualDub, устраняющего "дрожание" изображения


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

    Фильтр, о котором пойдет речь, называется Deshaker (файл "Deshaker.vdf"), он доступен по ссылке Deshaker3 (сайт deshaker). Принцип работы фильтра основывается на том, чтобы сохранить центральную часть кадра, которую пытался отснять оператор. Края кадра при этом утрачиваются. Фильтр также пытается анализировать соседние кадры и в некоторых случаях довольно успешно "дорисовывает" недостающие фрагменты кадра. При этом, иногда можно добиться сохранения исходного размера кадра (не обрезать края). К сожалению, полностью устранить дрожание невозможно, но иногда фильтр окажется полезным. В некоторых случаях, его действие можно применить повторно, загрузив обработанный ранее видеофайл.

    Фильтр прилагается к программе VirtualDub (сайт virtualdub.org). Программа VirtualDub входит в состав каталога WindSoft, представленного на данном сайте. Скачиваемый по ссылке (указанной в начале страницы) файл Deshaker30.zip является архивным файлом. После распаковки, полученный фильтр Deshaker.vdf копируется в каталог программы, например "c:\windsoft\VirtualDub\plugins\". Это каталог с плагинами (plugin - подключаемый программный модуль), поэтому при запуске программы VirtualDub, плагин Deshaker будет обнаружен и добавлен в общий список программных модулей. В сегодняшней сборке Windsoft, "дишейкер" уже включен в состав VirtualDub.

    С первого раза понять принцип работы не удалось, поэтому вместо оригинальной инструкции, предлагаю методику, расположенную ниже.

- Запускается программа VirtualDub и по команде /File/-/Open video file.../ открывается исходный видеофрагмент.
- Командой /Video/-/Filters/, открывается окно с выбранными фильтрами.


- По кнопке "Add.." вызывается список плагинов программы. В списке отыскивается Deshaker, выделяется, после чего по кнопке [OK] окно закрывают.


- При этом сразу же будет вызвано окно настроек фильтра. Необходимо убедиться в том, что переключатель "PASS 1" находится в "утопленном" положении. В настройках рекомендую снять флажок "Detect zoom" (чтобы избежать появления спецэффекта "наезд"). Нажимаем кнопку [OK] справа, в нижней части окна настроек.


- Фильтр выполняет преобразования в два захода. На предыдущем этапе был выбран первый - PASS 1. Для его осуществления, командой /File/-/Run video analysis pass/ вызывается окно декодирования.


- Начнется отслеживание изменений, при котором программа будет отображать направления векторов (движение деталей в кадре).
Векторы рассчитаны и окно закрылось. Теперь, командой /Video/-/Filters/ вызывается окно со списком действующих фильтров и двукратно кликнув по фильтру Deshaker, открываем настройки фильтра, где необходимо "утопить" (нажать) кнопку PASS 2 (вместо двойного клика можно использовать кнопку Options). Работа осуществляется только с одним этим фильтром (добавлять еще один Deshaker кнопкой ADD не нужно).


- Потребуется установить флажки "Use previous and future to fill in borders", "Soft borders. Edge transition width", "Extrapolate colors into border" (на рисунке этот флажок был снят специально).
- С этого момента фильтр начнет работу, поэтому необходимо выбрать видеокодек и сохранить файл.

В меню /Video/-/Compression/ в левой колонке выбирается видеокодек, например x264. Справа имеется кнопка Configure, где задается уровень сжатия (обычно, для x264, 22-23 стандартное качество).


- Вызываем меню сохранения видеофайла /File/-/Save as AVI.../, после чего видеофрагмент окончательно просчитывается и записывается на диск.

    В зависимости от выбранных настроек, размер исходного видеокадра будет обрезан (сверху, снизу, справа и слева) или оставлен нетронутым. В связи с этим, необходимо использовать следующие настройки "Edge compensation":
1. "None (large borders)" - кадр не обрезается. Черная рамка "ходит" по карям изображения (необходимо использовать совместно с "Use previous and future to fill in borders" ,"Soft borders. Edge transition width" и "Extrapolate colors into border").
2. "Adaptive zoom average (some borders)" - масштабирует кадр (немного обрезает края!) Для устранения черной рамки также потребуется выставить флажки "Use previous and future.....".
3. "Adaptive zoom full (no borders)" - убирает черную рамку и при этом старается не обрезать кадр полностью (анализирует кадры).
4. "Fixed zoom (no borders)" - полная обрезка безо всяких размышлений кадра соответствии с произведенными в "Pass 1" расчетами.

"Use previous and future to fill in borders"- используется предыдущий кадр с целью поиска сохранившегося по краям изображения. Иногда помогает устранить дрожание, полностью сохраняя картинку.
"Soft borders. Edge transition width" - происходит размытие вставляемых фрагментов изображения. Искажений по краям почти не видно.
"Extrapolate colors into border" - пытается так подобрать цвет точек, чтобы размытие краев было практически незаметным.

    В каждом конкретном случае необходимо экспериментировать, подставляя значения. Например, вместо 30 кадров (Future frames) поставить 60. А параметр "Edge transition width" более десяти. Мне удобнее использовать"None (large borders)", поскольку чаще всего требуется весь кадр без обрезки. В отдельных случаях, когда по краям "достаточно места" использую "Fixed zoom (no borders)". Примерно так работает современный фотоаппарат (функция "Оптический стабилизатор"). Матрица, куда попадает изображение через объектив, в действительности имеет больший размер кадра, чем в получающемся видео. Дрожание убирается программно, т.е. фактически кадр "ездит" по большой площади матрицы, поэтому отпадает необходимость кадрировать результат. Фактически, камера снимает видео с гораздо большим разрешением, чем мы имеем в результате на флеш-карте. Установка фильтра PASS 2 "Adaptive zoom average (some borders)" может пригодиться в случаях, когда при монтаже фильма важным является качество, а не содержимое "обрезанного" кадра - вид деревни, озеро и другие общие планы.

    Также, можно задать качественное "отслеживание" исходного видео. Для чего в первом заходе PASS 1 в правой верхней части параметров (Pass 1 parameters) в опциях "Scale:", где по умолчанию установлено "Half", выбирается "Full (most precise)", медленно но точно. Вероятно Scale, это масштабирование, хотя установка Full как раз и устраняет масштабирование, которого в исходном изображении может не оказаться. Параметр чуть ниже - "Use pixels" с исходной настройкой "Every 4th", можно сменить на "All (most robust)" как более точный. В остальных случаях будет производиться отслеживание каждого четвертого, девятого и шестнадцатого пикселя в каждом обрабатываемом блоке (16 - быстро и с меньшим качеством). В заключение продемонстрируем несколько видеозаписей:


Исходный, необработанный фрагмент - скачать файл deshaker-src.webm



Устранено дрожание - Adaptive zoom average (some borders) - скачать файл deshaker-zm-avr.webm



Обрабатываем края. Adaptive zoom average (some borders). Use previous and future to fill in borders. Soft borders. Edge transition width - скачать файл deshaker-zm-avr-prev.webm



Края видео обрезаны, изображение масштабировано (отрезали полголовы;). Опция Fixed zoom (no borders) - скачать файл deshaker-zm-fixed.webm



Запись, выполненная с большим зумированием (наездом), отображающая сильное дрожание в начале видеоролика и фиксацию картинки в конце - скачать файл deshaker-vorob.webm


В качестве образца взят видеосюжет статьи "Заонежский хоровод в зале Благородного собрания" в Интернет-журнале "Лицей" по адресу "gazeta-licey.ru". Автор видеозаписи Ирина Ларионова. Былину "Добрыня и Змей" исполняет Олег Скобелев, старший научный сотрудник музея-заповедника "Кижи".


(C) Бовин В.Б.
Внесение изменений: 08.11.2011, 19.03.2012, 23.09.2012, 28.07.2014, 05.08.2015