Что значит стабилизировать видео
Adobe Premiere Pro позволяет стабилизировать видео за несколько минут
Узнайте, как быстро устранить дрожание камеры и стабилизировать видео с помощью видеоредактора.
Стабилизация видео сделает ваши клипы более профессиональными
Дрожание камеры неизбежно, особенно при видеосъемке с большим увеличением. Обработка видео в той или иной степени требуется даже при использовании стедикама. Если говорить о программной стабилизации видео, Adobe Premiere Pro — действительно полезный инструмент. Эффект Warp Stabilizer позволяет быстро сгладить дрожание камеры, а точная настройка обеспечивает желаемый результат. Узнайте, как стабилизировать размытые видео, снятые на камеру GoPro, смартфон, ручную камеру или с помощью дрона.
Пошаговое руководство по стабилизации видео в Premiere Pro
Импортируйте видеоклипы, которые нужно стабилизировать, в Premiere Pro. Это можно сделать одним из трех способов.
Если последовательность уже создана, перетащите клип на временную шкалу. Если нет, нажмите правую кнопку мыши и выберите «Создать последовательность из клипа».
Для удобства разделите клип на маленькие рабочие области
Применение Warp Stabilizer требует больших ресурсов памяти и занимает много времени. Можно продолжать работу в Premiere Pro, но производительность может немного снизиться. После завершения стабилизации производительность Premiere Pro восстанавливается. Рекомендуется сначала найти искаженные части видео, а затем разделить клип и изолировать их. Затем запустите Warp Stabilizer только для этих укороченных клипов.
Чтобы разделить клипы, переместите курсор воспроизведения в нужные точки на дорожках. Убедитесь, что выделены каналы, которые нужно разделить. Если нужно разделить видео со звуком, убедитесь, что аудиодорожка также выделена. Разделение и перемещение видео без звука может привести к рассинхронизации звука.
Если несколько клипов или дорожек пересекаются на временной шкале, переключитесь на временную шкалу в режиме эксперта. Перетащите маркер, чтобы выбрать клипы на разных дорожках, пересекающихся по времени. Затем перетащите курсор воспроизведения на кадры, которые нужно разделить.
Нажмите Command/Control + K (для macOS и Windows соответственно) или выберите «Временная шкала» › «Разделить клип». Теперь два клипа из одного и того же файла можно редактировать отдельно.
Примените Warp Stabilizer к клипу с искажениями
Сначала выберите клип, который нужно стабилизировать. Затем на панели «Эффекты» выберите «Искажение» › «Warp Stabilizer». Примените эффект: дважды нажмите на значок эффекта или перетащите его на клип на временной шкале или на панели «Элементы управления эффектами».
После добавления эффекта начинается анализ клипа, он выполняется в фоновом режиме. Это может занять некоторое время в зависимости от размера клипа. Вы можете следить за ходом выполнения анализа на панели проекта. После запуска анализа на первых двух баннерах отображаются значки выполнения анализа. После завершения анализа второй баннер перемещается, показывая, что идет стабилизация. Во время выполнения стабилизации можно продолжить работу с видеорядом или перейти к другому месту проекта.
Настройте стабилизацию для достижения желаемого результата
После завершения стабилизации можно проверить результат и внести изменения.
Warp Stabilizer — мощный инструмент, но после его применения может потребоваться дальнейшая настройка стабилизации. После стабилизации с чрезмерным сглаживанием клип выглядит нечетким или размытым. Однако это можно исправить. Если при стабилизации были потеряны важные детали по краям кадра, можно настроить кадр и вернуть их.
Warp Stabilizer отслеживает различные точки в кадре и выполняет сложные встречные перемещения видеоряда. Это означает, что кадры могут вращаться, подниматься, перекрываться или опускаться. Warp Stabilizer также поможет увеличить масштаб, чтобы совместить кадры клипа. Если результаты приемлемы, стабилизация завершена. Если вас не устраивает результат, выполните следующие действия.
Если этого недостаточно, возможно, потребуется более точная настройка.
Точная настройка стабилизации
Настройка стабилизации позволяет получить более точный результат при редактировании видео.
Сначала отрегулируйте степень стабилизации и кадрирования с помощью ползунков. Вы увидите соотношение между кадрированием и сглаживанием. Более низкие значения сглаживания ближе к исходному движению камеры, а выбор более высоких значений дает большую плавность. При выборе значений свыше 100 требуется большее кадрирование изображения. Это может привести к созданию двух типов видеоряда:
Можно также управлять встречными движениями Warp Stabilizer в кадре, настроив параметр «Метод», позволяющий использовать различные методы трекинга для стабилизации с различными уровнями сложности. При изменении настроек стабилизация перезапускается, но анализ запускается не всегда. Ниже перечислены методы стабилизации видео с помощью Warp Stabilizer.
Этот метод, используемый на любом взятом кадре, может меняться на протяжении всего клипа в зависимости от точности отслеживания. На это изменение может потребоваться некоторое время.
И наконец, можно проверить, как границы стабилизированного видео отображаются при кадрировании. В зависимости от типа клипа может быть доступно больше или меньше настроек. При выборе стабилизации, которая сглаживает границы, но не изменяет общее движение камеры, в клипе появляются черные артефакты. Значение по умолчанию — «Стабилизация, кадрирование, автомасштаб». При этом обрезаются движущиеся границы и масштабируется изображение для заполнения кадра. Автоматическое масштабирование управляется с помощью настройки различных параметров в разделе «Автомасштаб».
Когда клип будет готов, можно перейти к следующему или экспортировать завершенный проект. Warp Stabilizer позволяет быстро исправить размытое видео, сохраняя задуманное движение камеры и естественность изображения. Именно поэтому Adobe Premiere Pro прекрасно подходит для стабилизации видео. Независимо от способа съемки, вы можете экспериментировать с настройками до тех пор, пока не достигнете желаемого результата.
Стабилизация видео
Введение
Данная статья посвящена исследованию вопроса о программной стабилизации видео. Не секрет, что одно из основных отличий профессиональной съёмки (в частности, кино) от любительской заключается в том, что профессионалы, как правило, снимают со штативами, кранами, тележками и прочими приспособлениями, обеспечивающими неподвижность или плавное движение камеры, тогда как любители обычно об этом не задумываются. Как следствие, часто в любительской съёмке происходит такое мельтешение в кадре, что после нескольких минут просмотра начинает болеть голова, или во всяком случае пропадает желание смотреть на экран. Рецепт профессионалов, конечно, годится и для нас, простых видеолюбителей — надо учиться снимать со штативом. Однако не всегда он есть под руками, да и некоторые сюжеты нельзя толком снять с использованием штатива (а кран и тележка уже, увы, для любителей практически недоступны). Что же делать с таким видеорядом? Существуют достаточно мощные возможности по стабилизации изображения уже на этапе компьютерной обработки, и о них пойдёт речь в этой статье (во второй её части). Но сначала некоторое теоретическое введение.
Теоретическая часть
Для начала определим фундаментальный механизм работы любой системы стабилизации. Он имеет как минимум две составляющие: определитель «дрожания» и собственно механизм восстановления кадра без дрожания. При этом под дрожанием обычно подразумевается нежелательное беспорядочное движение самой камеры. А точнее, вращение камеры относительно любой из трёх осей, проходящих через её центр. Вращение относительно главной оптической оси (той, которую протирают спиртом:) приводит к вращению кадра (впрочем, это редко заметно), остальные две оси дают смещение по горизонтали и вертикали. Нужно иметь в виду, что помимо движения кадра как целого (движения фона), обусловленного в том числе и дрожанием камеры, часто ещё движется и объект в кадре относительно фона. Это создаёт одну из главных проблем при стабилизации в сколько-нибудь сложных случаях.
Стабилизаторы в видеокамерах
Перед тем, как перейти к разговору о программных стабилизаторах, вспомним, как осуществляется стабилизация при съёмке. Об одном, самом надёжном методе — механическом — я уже упомянул; помимо него, есть ещё два: оптический и цифровой стабилизатор. Их механизм работы отличается в обоих составляющих.
Оптический стабилизатор состоит из детектора движения (вращения) камеры — системы гироскопов, регистирующих ускорение, и компенсирующей линзы, которая может смещаться перпендикулярно оптической оси и отклонять лучи света в противофазе к обнаруженному смещению, так что они попадают в одну и ту же область на матрице. Снятие показаний с датчиков ускорения и соответственно смещение линзы происходит несколько сот раз в секунду, т.е. много раз за время экспонирования кадра, что позволяет избежать не только нежелательного сдвига картинки между кадрами, но и размытия её в пределах одного кадра (при сильном рывке). Кстати, аналогичную функцию выполняют оптические стабилизаторы в фотоаппаратах, где нет проблемы «межкадрового сдвига».
Цифровой стабилизатор определяет смещение по анализу изображения, получаемого с матрицы. Для этого, разумеется, её реальный размер должен быть существенно больше эффективного, чтобы при небольших смещениях кадр не вылетал за пределы матрицы. Записывается же на носитель изображение с меньшей по размеру области, которая «прыгает» по матрице от кадра к кадру согласно определённому вектору смещения. Недостатки у этого метода по сравнению с оптической стабилизацией очевидны: во-первых, используется не вся площадь матрицы, что приводит к ухудшению соотношения сигнал/шум при недостаточной освещённости, во-вторых, нет возможности устранить внутрикадровое размытие (которое, впрочем, досаждает только при длинных выдержках и достаточно сильной трясучке). Кроме того, стабилизатор не может предугадать, является ли смещение случайным дрожанием либо началом целенаправленного движения камеры (например, панорамы). Это иногда приводит к эффекту «залипания», когда при начале панорамирования кадр некоторое время удерживается на месте стабилизатором, а при достижении предела (края матрицы) может резко прыгнуть. В оптической системе стабилизации такого эффекта почему-то не наблюдается, хотя возможности предсказать движение камеры нет и там.
Эффект от стабилизатора в камере очень велик, особенно при длиннофокусной съёмке (большом «зуме»). Однако стабилизатор гасит только высокочастотные колебания не слишком большой (в силу конструктивных ограничений) амплитуды. Чтобы оценить эффект от накамерной стабилизации, взгляните на следующий график:
На нём представлены частотные спектры смещений камеры, определённые с помощью анализа движения в фильтре Deshaker, о котором мы поговорим во второй части статьи. Съёмка с рук удалённого неподвижного объекта производилась камерой Canon XM-2 на максимальном (20х) приближении с включённым и выключенным оптическим стабилизатором. Надо сказать, что камера эта достаточно тяжёлая (1,5 кг) по сравнению с современными «пушинками», которые, следовательно, больше подвержены тряске. Видно, что оптический стабилизатор подавляет колебания с частотой выше 1-2 герц, что, безусловно, положительно сказывается на изображении, однако недостаточно для комфортного восприятия — картинка субъективно остаётся неприятно плавающей. После программной обработки фильтром Deshaker с параметрами, подобранными для визуально приятного результата, амплитуда колебаний уменьшилась ещё в несколько раз, а колебания с частотами больше 0,5 гц вовсе исчезли. То есть и при наличии стабилизатора в камере программная обработка часто бывает очень полезна. Рассмотрим же подробнее, что она нам может дать.
Программная стабилизация: основные принципы
Принцип действия программного стабилизатора, с одной стороны, напоминает цифровой стабилизатор в камере (в том смысле, что он тоже может оперировать только уже имеющимся изображением), но есть и ряд существенных отличий. Сначала о негативном: поскольку «лишней» площади матрицы у нас уже нет, то приходится вырезать кусок из имеющегося изображения и растягивать его на весь кадр, неизбежно теряя в чёткости. Впрочем, на этом негатив заканчивается, и начинаются плюсы:) Во-первых, траекторию движения камеры можно определить в спокойной обстановке, анализируя сколько угодно прошедших и будущих кадров, и оптимально сглаженная траектория будет лишена любых рывков и залипаний. Во-вторых, хорошо спроектированный стабилизатор умеет использовать адаптивный зум для «попадания в кадр», т.е., например, если в каком-то отрывке дрожание было невелико, то вырезается участок кадра, близкий по размеру ко всему кадру, который, в силу малости колебаний, не вылетает за его пределы. Размер этого участка может варьироваться во времени (главное, чтобы не слишком быстро) — это и есть адаптивность (в накамерном стабилизаторе размер кадра всегда составляет постоянную долю от размера матрицы). Наконец, в ещё более продвинутых программах можно даже позволить вырезать участок кадра, частично вылезающий за пределы кадра в исходном изображении. Однако недостающие части не остаются пустыми, а заполняются или приграничными пикселами (что, в общем-то, смотрится не очень хорошо), или соответствующими фрагментами из соседних кадров, надлежащим образом сдвинутых до совпадения с текущим кадром. Если движение в кадре (точнее, на его краях) отсутствует, то такое заполнение краёв работает очень хорошо: можно снимать далёкий неподвижный объект с дрожанием хоть в полкадра — процесс стабилизации как бы склеит из этого множества кадров единую «панораму» и будет медленно перемещать по ней взгляд. Конечно, этот приём не всегда работает хорошо, но в идеале позволяет вообще не уменьшать размер кадра (не терять в разрешении, за вычетом неизбежной переинтерполяции картинки при сдвиге, и в угле обзора, что тоже важно).
Методы определения движения, как правило, работают аналогично методам, применяющимся при MPEG-подобном сжатии. То есть кадр разбивается на блоки, для каждого из них находится наиболее похожий блок в предыдущем кадре и смещение относительно него. По построенной карте смещений определяются усреднённые характеристики для всего кадра. Как правило, это две-четыре величины: смещение по горизонтали и вертикали и часто поворот и изменение масштаба. (Хотя в реальной съёмке регулятор зума не дрожит, тем не менее удобнее аппроксимировать карту смещения четырьмя, а не тремя величинами). При этом можно отбрасывать те блоки, которые движутся в явном несогласии с общим направлением, т.к. они наверняка соответствуют движению отдельных объектов в кадре относительно фона, либо же просто неправильно отождествлены в предыдущем кадре. Есть и другие (не-поблочные) подходы, например, применённый в фильтре DePan фурье-анализ, но на выходе обычно получаются те же величины. Дальше в действие вступает модуль собственно стабилизации, который строит оптимальную траекторию камеры путём сглаживания имеющейся «хаотической», выполняет смещение, поворот и масштабирование кадров на соответствующие величины, заполняет края и т.д. Выбор оптимальной сглаженной траектории похож на применение низкочастотного фильтра к «сигналу», образованному векторами смещения, т.е., по сути, убираются колебания с частотами выше частоты среза, задаваемой пользователем. Низкочастотные колебания, как правило, соответствуют более-менее целенаправленному движению камеры. (В качестве примера рассмотрим следующий видеосюжет: камера некоторое время неподвижно смотрит в одну точку, а затем резко начинает панорамирование с постоянной скоростью. Оба интервала соответствуют нулевой частоте «колебаний», а переход между ними и есть «дрожание»: чем ниже частота среза, тем плавнее после стабилизации будет начало движения).
Хочу подчеркнуть, что для полноценного использования всех возможностей программной стабилизации фильтр должен быть эффективно двухпроходным: на первом этапе строятся вектора смещения для всех кадров клипа, на втором — вычисляется оптимальная траектория и выполняется стабилизация. На самом деле необязательно обрабатывать весь клип, достаточно «заглянуть вперёд» хотя бы на несколько секунд. Но и этим могут похвастаться далеко не все фильтры, а ведь без этого их работа будет не сильно интеллектуальнее накамерного стабилизатора.
Возможные артефакты стабилизации
Конечно, программная стабилизация может давать и сбои или просто некрасивые результаты. Рассмотрим возможные причины неприятностей.
Во-первых, это группа вопросов, связанных с компенсацией границ (заполнением краёв). Конечно, можно совсем от неё отказаться и обойтись адаптивным или даже фиксированным зумом, но в этом случае мы проигрываем в разрешении и, что даже более заметно, в угле обзора: если мы пытались снять объект так, что он занимал почти весь кадр, но из-за дрожания периодически частично вылетал за его пределы, то после стабилизации с увеличением центральной части мы увидим только середину этого объекта. (Поэтому лучше снимать «с запасом», оставляя по краям кадра место). Если же мы обратимся к методикам заполнения краёв, то может получиться, что в соседних кадрах объект находился в другом положении, чем в текущем, и после компенсации мы будем наблюдать странноватую картину с искажёнными краями.
Чтобы этого не происходило, опять-таки лучше стараться взять в кадр целиком движущийся объект, если это позволяют условия и цель съёмки. Аналогичное, хотя и менее заметное, нарушение происходит из-за различия в яркости соседних кадров (если автоматический экспонометр вздумал увеличить или уменьшить её). Впрочем, как сказано в статье про основные правила съёмки, лучше вообще отключить автомат и регулировать экспозицию вручную. Кроме того, некоторые камеры склонны затемнять углы кадра (виньетирование), что тоже будет слегка заметно при компенсации краёв.
Ещё одна неприятность полностью унаследована из цифрового накамерного стабилизатора: при недостаточно короткой выдержке и достаточно резком смещении кадр «поплывёт», будучи даже смещён обратно в нужное положение при стабилизации. Это выглядит как резкая кратковременная расфокусировка, хотя размытие и происходит только в одном направлении. Впрочем, большинство зрителей посчитают это менее неприятным, чем исходный рывок кадра. Чтобы минимизировать этот эффект, лучше сразу при съёмке установить выдержку поменьше (автомат камеры, как правило, при уменьшении освещённости сначала поднимает выдержку до 1/50 секунды и лишь затем открывает диафрагму; мы же желаем сделать наоборот, поставить выдержку, скажем, на 1/200 или хотя бы 1/100, а диафрагма пусть будет пошире).
Наконец, ещё один эффект возникает, когда мы стабилизируем видео, снятое на широком угле (при минимальном зуме). Спрашивается, разве такое нужно? В некоторых ситуациях — да, см. ниже. Здесь мы сталкиваемся с той же ситуацией, что и фотограф, пытающийся просто склеить панораму в Photoshop’е: в соседних кадрах будет различная перспектива, и без компенсации перспективных искажений панорама не склеится.
Все программы для работы с фотопанорамами используют компенсацию перспективных искажений, но для этого нужно знать фокусное расстояние (или угол обзора кадра), что в фотографии достигается простым чтением EXIF-параметров файла (или задаётся вручную), а в случае с видео практически недостижимо. Поэтому при стабилизации такого видео мы можем наблюдать странные «покачивания» картинки, как будто кратковременно одна сторона кадра к нам приблизилась, а другая удалилась.
Способ борьбы с этим, по сути, один — не увлекаться плавностью стабилизации, пусть лучше будут колебания некоторой амплитуды, на их фоне искажения станут незаметны.
Ну и, наконец, упомянем об очевидной вещи: если планируется использование стабилизатора, то не стоит впечатывать в кадр дату и время:) (иначе придётся лицезреть танец пляшущих цифр в углу экрана). На самом деле сейчас это уже почти никто не делает (эти данные сохраняются в видеопотоке и при необходимости могут быть извлечены и добавлены на кадр при монтаже или просто как субтитры). А вот менее очевидно, что аналогичный эффект, хотя и в меньшей степени, возникает при наличии пятен, капель или даже бликов на объективе, так что не поленитесь протереть его перед началом съёмки и встать так, чтобы солнце не создавало бликов. Конечно, это относится и к съёмке без последующей стабилизации.
Короче говоря, вы видите, что возможность использования программной стабилизации лучше предусмотреть ещё при съёмке.
Режимы применения стабилизаторов
Программную стабилизацию имеет смысл применять во многих различных случаях, которые тем не менее поддаются некоторой классификации (достаточно субъективной). Условно разделим все случаи применения на три категории.
1. Съёмка на максимальном зуме более-менее неподвижного объекта, или же панорама (при большом и не очень приближении, а то и вовсе на минимальном зуме). Отличительные особенности — всё нерегулярное движение в кадре относится на счёт дрожания камеры, а после стабилизации мы должны получить почти неподвижную картинку или равномерно прокручивающуюся панораму. Кстати, случай с панорамой, пожалуй, не менее важен — с рук, да и с обычного недорогого штатива, практически невозможно снять её равномерно и без рывков даже на самом широком угле; смотрится это довольно удручающе, но после стабилизации комфортность восприятия улучшается кардинально. Этот случай — самый простой для стабилизатора, с применением компенсации краёв мы практически ничего не теряем.
Соответственно, тестировать качество работы стабилизаторов мы будем на подборке из трёх сюжетов, согласно описанной классификации. Первый — панорама, второй — скатывающийся по склону лыжник, третий — съёмка от лица лыжника 🙂
Итак, настала пора закончить с теорией и перейти к практическому рассмотрению нескольких фильтров стабилизации.
Практика стабилизации
Deshaker — фильтр для VirtualDub
Фильтр Deshaker — это, на мой взгляд, самый мощный инструмент для стабилизации. Дело в том, что у него огромное количество настроек, при правильном применении которых (в том числе с разными настройками для разных участков клипа) можно добиться почти чего угодно (в смысле стабилизации). Фильтр относится к числу двухпроходных, как и положено всякой серьёзной программе такого рода. На первом этапе производится анализ движения (поблочный), и вычисленные для всего кадра величины сдвига, поворота и масштабирования записываются в текстовый log-файл. На втором проходе выполняется собственно стабилизация с использованием адаптивного зума, заполнения краёв и прочими вкусностями. Фильтр разрабатывается человеком по имени Gunnar Thalin и доступен по адресу www.guthspot.se. Итак, будем предполагать, что вы уже знакомы с VirtualDub (если нет, читайте соответствующую статью). Загружаете исходный клип в программу и в диалоге фильтров добавляете Deshaker. Открывается окно с большим количеством настроек, которые мы сейчас разберём подробно.
Как можно видеть, настройки собраны в три группы: общие для обоих проходов и отдельно для первого и второго (переключается кнопками Pass 1 и Pass 2 вверху). Из общих надо выставить Source pixel aspect — параметр «неквадратности пиксела»: для видео 4:3 с miniDV или другой камеры стандартного разрешения это будет Standard PAL, для широкоэкранного с такой же камеры — Anamorphic PAL, для видео с камер высокого разрешения или фотоаппарата, как правило, оставить вариант по умолчанию Square pixels. Не менее важно задать тип чересстрочного сигнала — для камер miniDV это Interlaced, lower field first, для большинства камер High definition – upper field first, для фотоаппарата и прогрессивного режима (или frame mode) в видеокамерах — Progressive scan. Также нужно обратить внимание на опцию Camcorder has a rolling shutter (это утверждение справедливо для большинства современных устройств, оснащённых матрицами CMOS, и не подходит для камер на матрицах CCD). Сам термин rolling shutter обозначает особенность работы электронного затвора матрицы, состоящую в том, что сигнал считывается последовательно, начиная, как правило, с верхней строчки кадра. Таким образом, изображение в пределах одного кадра на самом деле относится к разным моментам времени, что может вызвать искажения в случае быстро перемещающихся объектов либо самой тряски камеры (в народе известные под названием «желе»). При включении этой опции движение кадра будет интерполироваться построчно между двумя крайними значениями, что позволяет частично бороться с артефактами rolling shutter’а (хотя это не всегда работает хорошо, см. ниже в разделе «сложные случаи»). Также нужно задать величину временной задержки между первой и последней строкой (в процентах, значения для некоторых распространённых моделей камер и рецепт по самостоятельному её вычислению приведен на странице автора фильтра).
Настройки первого прохода
Настройки первого этапа в основном призваны улучшить качество определения движения на первом проходе. Мы рассмотрим их чуть позже, а пока обратим внимание на верхнее поле: Video output можно установить в none — тогда на выходе будет чёрный квадратик 8×8 пикселей (это удобно для пакетной обработки через VirtualDub Job control), или же оставить значение по умолчанию Motion vectors, что позволит любоваться векторами движения поверх картинки (и не только любоваться, а и делать соответствующие выводы, правильно ли работает анализатор движения). Если что-то идёт не так, то настала пора менять настройки из группы Image matching parameters. А пока закроем окно фильтра и запустим первый проход. Поскольку результат всё равно никуда не нужно сохранять (только разве смотреть на экране), то имеет смысл запускать либо Preview output from start (F5), либо кнопку , либо просто прокручивать стрелкой влево, если нам нужен только небольшой фрагмент. (Вообще обычно log-файл очищается при каждом начале работы первого этапа, но это можно изменить включением галки Append to log file). На протяжении первого этапа вы будете наблюдать на экране подобную картинку:
(Если видео было чересстрочным, то кадр разбивается на два поля и все параметры определяются отдельно для них, а изображаются они друг под другом соответственно сплюснутыми вдвое по вертикали). Итак, белые стрелки показывают вектора движения, определённые для каждого блока (его размер задаётся в графе Block size параметров первого прохода и по умолчанию равен 30 пикс.) Если стрелка красная, то данный блок отбраковывается и не участвует в определении общего движения кадра (блок настроек Discard motion of blocks that..), потому что либо его движение слишком противоречит общему направлению (графа Move >X pixels in wrong direction), либо просто слишком велико (Move >X pixels (absolute motion)). Некоторые блоки вообще не имеют векторов движения, если их не удалось надёжно отождествить в предыдущем кадре (например, равномерно синее небо). Их отбраковкой управляют первые два пункта из раздела Discard motion of blocks. Если количество нормальных (белых) блоков недостаточно (задаётся параметром Skip frame if Настройки второго прохода
Пункт Edge compensation управляет режимом использования дополнительного зума: None (large borders) отключает эту функцию, Adaptive zoom (два режима – average и full) использует плавно меняющийся (адаптивный) зум, Fixed zoom выбирает наиболее подходящее постоянное значение зума, которое полностью убирает пустые края. В режиме адаптивного зума для каждого кадра выбирается необходимое значение увеличения (с учётом уже стабилизированного движения и поворота), после чего эти величины сглаживаются по времени, чтобы не было резких рывков между соседними кадрами (степень сглаживания регулируется параметром adaptive zoom smoothness), в результате чего пустые края всё-таки могут появиться в режиме adaptive zoom average. Adaptive zoom full отличается тем, что в участках с резким движением добавляет несколько больше увеличения, чтобы края не возникали даже после сглаживания. А в режиме adaptive zoom average + fixed zoom это дополнительное увеличение просто постоянно в пределах сцены (т.е. в среднем несколько больше, чем при adaptive zoom full).
Дополнительно можно задать метод заполнения краевых пикселей, которые не могут быть зарисованы иным образом, путём экстраполяции значений граничных пикселей (галка Extrapolate colors into border). Впрочем, смотрится это не так здорово, как компенсация из соседних кадров, и обычно в ней не возникает нужды. Кроме того, если размазанные края всё-таки мешают, то можно задать дополнительный зум в графе Extra zoom factor, например, величину 1.05 или что-нибудь в этом духе. Это тоже не самый лучший выход — стоит попытаться сначала поварьировать параметры плавности.
Степень стабилизации регулируется параметрами плавности (Motion smoothness) — отдельно для горизонтального и вертикального движения, поворота и масштабирования. В отличие от других фильтров, где, как правило, регулируется частота среза высокочастотных колебаний, в Deshaker применён иной подход: перед началом второго прохода для всего клипа вычисляется оптимальная траектория камеры, т.е. минимизирующая одновременно и кривизну траектории, и отклонение её от реальной (создающее пустые края). Эти параметры являются весовыми коэффициентами в минимизирующей функции. Они могут варьироваться в широких пределах (от 0 до 100000), большее значение соответствует большей плавности. Величины по умолчанию (1000) вполне подходят для большинства сюжетов, хотя их можно и увеличить в несколько раз (зависимость «плавности» от них, видимо, довольно пологая). При выборе значений можно руководствоваться следующим эмпирическим правилом: чем больше плавность движения в исходном видео, тем большие значения можно безболезненно задавать. Т.е. для панорам вполне сгодятся значения 10000, а для съёмок стремительного спуска с горы, держа камеру в руках, такая плавность приведёт, во-первых, к неоправданно большим областям по краям кадра, требующим заполнения (что чревато артефактами в случае такого сложного движения), и во-вторых, уменьшит зрелищность сюжета:). Для таких динамичных съёмок подойдут величины порядка 1000. Если вы видите, что при заданных значениях остаются слишком много областей по краям, требующим заполнения, то плавность стоит уменьшить (или включить дополнительный зум). Впрочем, есть ещё средство для урегулирования быстрых рывков: группа параметров Max correction limits, задающая пределы смещения/поворота при вычислении оптимальной траектории. Их действие состоит в том, что при резких рывках, когда невозможно обеспечить одновременно и плавность траектории, и невыход за пределы смещения, параметры плавности на короткое время уменьшаются по сравнению с заданными. Ещё нужно отметить, что траектория рассчитывается по кадрам, а не по времени (для интерлейсного видео — по полукадрам). Т.е. для получения той же плавности в случае интерлейсного видео нужно установить вдвое большие значения, чем для прогрессивного с той же частотой кадров.
Итак, параметры второго прохода настроены, можно запускать. Устанавливаем кодек для видео — и в путь. Перед началом второго этапа происходит вычисление оптимальной траектории камеры для всего клипа, что может занять продолжительное время (особенно при больших параметрах плавности), но обычно сам второй проход длится намного дольше. В это время на экран выводится табличка «Deshaking». Когда вычисления готовы, можно начинать второй проход.
Резюме по применению
Сложные случаи
Бывают, конечно, случаи, когда Deshaker выдаёт не совсем устраивающий результат. Сила этого фильтра не в том, что он всегда работает хорошо, а в том, что почти всегда его можно заставить работать неплохо. То есть регулированием различных параметров добиться вполне удовлетворительного, а иногда — и отличного результата. Сейчас мы поговорим о таких сложных случаях.
Прежде всего, если что-то не устраивает, то надо определить причину. Их может быть две: неподходящие настройки второго этапа проявляются в основном в том, что возникают артефакты по краям изображения, связанные с компенсацией границ при наличии заметного движения около них между кадрами. Ещё раз подчеркну, что применяемый в Deshaker метод заполнения границ не имеет аналогов среди доступных фильтров, но и он не всегда даёт хороший результат. В таком случае надо просто уменьшить эти границы либо введением дополнительного зума, либо снижением плавности (в т.ч. и кратковременным, за счёт Max correction limits). Это было рассмотрено в секции про второй проход.
Другая причина связана с неправильным определением движения на первом проходе для отдельных кадров или групп кадров. Проявляется это в дёрганиях в соответствующих местах (это может быть смещение кадра, резкий наклон или прыгание увеличения). В этом случае надо регулировать настройки первого прохода и переделывать его целиком или частично. Если число моментов дёрганий невелико, то есть смысл пройтись по ним непосредственно: запомнив номера кадров, на которых этот эффект проявляется, и переключившись обратно на первый проход, чтобы посмотреть на определяемые вектора движения. В большинстве случаев на первом проходе в эти моменты происходит что-то неправильное — либо движение вообще не определяется (слишком мало валидных векторов), и кадр считается началом новой сцены, либо же «фокус внимания» фильтра перескакивает с одного объекта на другой (в частности, фон).
В приведённых последовательных кадрах движение камеры было примерно одинаковым, но в первом случае оно определилось правильно по движению фона, а во втором — неправильно, захватив объект и вынужденно выкинув часть фона. На самом деле в последних версиях Deshaker такая ситуация, скорее всего, не возникнет благодаря более «интеллектуальной» системе слежения за объектом на фоне, выраженной в галке Remember discarded areas to next frame. По умолчанию она включена и призвана сосредоточиться на движении фона, даже если объект, постепенно увеличиваясь, занимает бОльшую часть кадра. Другая полезная «ручка», применение которой может дать нужный эффект, но сильно замедлить работу, — Deep analysis if С этими установками связаны настройки отбрасывания векторов движения, не подходящих под общую картину. Discard motion of blocks that move > X pixels in wrong direction управляет отбраковкой таких блоков (они становятся красными). Если камера находится в одной точке и общий фон не движется существенно (как, например, листва в лесу на ветру), то движение блоков фона должно очень хорошо описываться общими значениями смещения/поворота, поэтому этот параметр можно снизить до 1, выкидывая т.о. всё что не относится к фону. (При этом можно и задать размер блока (Block size) поменьше, например, 16-24 пикс.) С другой стороны, если камера движется относительно фона, то можно и задать побольше значение в этой графе, чтобы «ловить» побольше векторов движения.
Если фон малоконтрастный (небо, снег), то для многих блоков не могут быть достоверно вычислены вектора движения, т.к. не удаётся точно отождествить их в предыдущем кадре. Такие блоки вообще не будут иметь векторов движения. Если хочется как-то ослабить эту отбраковку, можно поиграть значениями в полях Discard motion of blocks that have match value best — Y. Если определённых векторов движения слишком мало (особенно если меньше, чем задано в графе Skip frame if Окно настроек Mercalli
Здесь мы сразу нажали кнопку Further settings, открывающую доступ ко всем настройкам. Как видно, почти все они даются в «условных величинах», но их физический смысл более-менее ясен. В середине находится блок настроек определения движения на первом проходе. Точность определения движения (Motion detection) может варьироваться от быстрой (more quickly) до точной (more valid) — нет причин не ставить её на максимум, просчёт всё равно идёт довольно быстро (хотя авторы утверждают, что среднее положение вполне достаточно в большинстве случаев). Important picture area управляет, на что больше ориентироваться при анализе движения — на центр кадра или его края, т.е., по большому счёту, на объект или фон. Настройки Special video analysis дают дополнительные возможности по учёту векторов движения: Detect shapeless content — в малоконтрастных областях (например, в облаках); Fast motions — с большими смещениями (обычно игнорируются), Micro motions — с очень малыми смещениями (тоже обычно игнорируются; включение сильно замедляет работу и может дать худший результат при большой зашумлённости картинки). Нижнее поле (Particular distinguishing characteristics) тоже управляет «вниманием» детектора движения: только силуэт (крупные детали) / контуры объекта / мелкие детали.
Справа находятся настройки стабилизации, т.е. второго прохода. Camera stabilization управляет степенью стабилизации — от лёгкой (Soft), устраняющей только сильную тряску, до Static, создающей эффект неподвижной камеры. Настройка Camera balance управляет «инерционностью» движения стабилизированной камеры; обычная установка in balance оптимальна для большинства случаев. Настройка Camera motion определяет, какие движения стабилизировать: только смещения (inclination), также повороты (tilt), также увеличение (zoom). Далее идут настройки компенсации краёв изображения. К сожалению, Mercalli не умеет заполнять их так, как Deshaker, так что остаются два варианта: или оставлять их чёрными, или заполнять пикселами с краёв картинки (галка Fill up border region). Кроме того, можно задать увеличение центральной части кадра для устранения бордюров (регулируется ползунком Scaling, либо включением режима Without borders(upscaled) для полного устранения бордюров). Адаптивным зумом фильтр, по-видимому, также не обладает, так что выбирается максимальная фиксированная часть кадра, не дающая пустых краёв. Вероятно, upscaled — единственная более-менее визуально приемлемая установка.
Кроме отдельных настроек, можно выбирать пресеты под конкретную задачу — съёмка с рук, с плеча, со штатива, с сильным дёрганием и т.д., а также пресет общего назначения (versatile).
После настройки и нажатия OK запускается первый проход фильтра, на экран при этом выводится окошко с исходным видео, раскрашенным в разные цвета и с различными линиями поверх. Видимо, для конечного пользователся это служит только средством внушения уважения к мощи фильтра, поскольку никаких комментариев по содержанию окошка разработчики не дают.
После этого можно перемещаться по timeline и наблюдать уже результат работы фильтра, что очень удобно. При необходимости можно пойти и отрегулировать значения параметров (если затрагивались параметры первого прохода, то он пересчитывается).
В целом, фильтр хорошо справляется и с определением движения, и со стабилизацией, но отсутствие заполнения краёв пикселами из соседних кадров и адаптивного зума вынуждают уменьшать поле зрения, иногда довольно существенно, что неизбежно сказывается и на чёткости изображения. При этом явно видно, что разработчики хотели создать максимально простой и интуитивно понятный интерфейс, оставив за скобками всю математику, а также более точные средства контроля за процессом. То есть если результат работы не устраивает и это не лечится изменением настроек, то, видимо, пора переходить на Deshaker. Зато работать с Mercalli можно, не выходя из своей любимой монтажной программы.
Прочие программы и фильтры для стабилизации
Кроме описанных здесь, существует ещё множество других программ и фильтров для стабилизации видео. Можно упомянуть Dynapel SteadyHand, 2d3 SteadyMove, фильтр Motion stabilize в пакете BorisRED, фильтр Track/Stabilize motion в Adobe AfterEffects. Первые два имеют минимум настроек, а в последних двух сходу тяжело разобраться, хотя профессионалы вовсю используют и Boris RED, и After Effects. Качество определения движения у них приемлемое, но из-за более простой — однопроходной — реализации возникают большие поля, которые можно убрать только зумом (заполнять края эти фильтры не умеют). В общем, некоторая область применимости у них есть, но универсальными их никак не назовёшь.
Сравнение работы стабилизаторов
Всё это хорошо, но что же выбрать? Для ответа на этот вопрос можно сравнить поведение программ в типичных ситуациях, с которыми приходится иметь дело, чем мы сейчас и займёмся. В конце будет дана сводная таблица особенностей программ и их субъективная оценка.
Тестирование на нескольких сюжетах
Чтобы столкнуть нос к носу рассмотренные фильтры стабилизации, мы выбрали несколько сюжетов, подчёркивающих те или иные сложности процесса. Все отрывки имеют длину 200 кадров (8 секунд) и прогрессивный источник видео (чересстрочное обрабатывается более-менее так же).
Сюжет 1
Первый сюжет — панорама, снятая на широком угле, с заметными рывками (в т.ч. и вращением камеры вокруг оси), с малоконтрастными объектами в кадре.
Для Deshaker настройки первого прохода стандартные, ему вполне хватало, за что зацепиться взглядом (в более сложных случаях прежде всего выставляются на максимум Use pixels и Scale, затем уменьшается отбраковка малоконтрастных блоков). На втором проходе ставится Adaptive zoom only, 30 соседних кадров, параметры плавности побольше (10000).
В Mercalli включаем Detect shapeless content, Also detect details, ручку Camera stabilization в среднее положение, компенсацию поворотов (also tilt compensation), а края приходится убрать установкой Without borders(upscaled). В результате поле зрения меньше, а картинка более размытая.
Сюжет 2
Второй сюжет — съёмка спускающегося на лыжах человека. Особенности: временами малоконтрастный фон, заметное и нерегулярное движение фигуры относительно фона, зуммирование камеры.
Deshaker: настройки первого этапа стандартные, второго такие же, как раньше, добавили Soft borders (в прошлом сюжете это не потребовалось, даже если было бы включено), уменьшили плавность до 2000. В середине сюжета несколько кадров, когда фон почти отсутствует, и движение определяется по фигуре, а не по фону — в этом месте для остальных фильтров заметен некоторый рывок в скорости движения. Тщательно поработав с настройками первого этапа и совмещая log-файлы от разных настроек, можно добиться полной плавности, что и было сделано. Ещё в паре мест видна неидеальность компенсации краёв.
Depan: порог чувствительности снижаем до 2.0, используем DepanEstimate (вращение несущественно на фоне быстрых движений), частота среза — 1.0 по умолчанию.
Mercalli: смещаем ручку Importance area левее (к borders), Stabilization — к Soft (обе на пару делений от края); включаем Detect fast motions.
Сюжет 3
Третий сюжет — съёмка в движении с рук, спускаясь на лыжах. Движение камеры относительно пейзажа, и как следствие, неравномерное движение в кадре разноудалённых объектов.
Deshaker: на всякий случай на первом проходе отключаем анализ для нижней четверти кадра (Ignore area outside), всё равно там быстро движущаяся навстречу земля. На втором проходе плавность снижаем до 1000, а то драйв пропадает:)
Depan: болтанка камеры по всем направлениям, поэтому используем MVAnalyse для учёта вращения; остальные настройки такие же. Дёргания уменьшаются, но остаются заметно сильнее, чем после Deshaker — это «заслуга» DepanStabilize: если с log-файлом от MVdepan запустить deshaker, то движение будет намного плавнее.
В Mercalli выбираем пресет Improve helmetcam while racy drive (как раз для нашего случая), опять убираем бордюры (и зачем их там оставляют по умолчанию, раз замазывают всё равно скверно?). Плавность движений адекватная, но опять угол обзора меньше (впрочем, это не особо заметно).
В целом, можно сделать следующие выводы: Mercalli уверенно стабилизирует практически любую болтанку, но при этом приходится уменьшать размер кадра, что часто нежелательно. Depan хорошо работает в несложных случаях, при наличии вращения камеры лучше пользоваться анализом движения из MVTools; в сложных случаях стабилизация недостаточная; заполнение краёв смотрится не слишком хорошо. Deshaker хорошо работает практически во всех случаях, хотя иногда бывает полезна ручная настройка отдельных кадров; заполнение границ реализовано наиболее правильным способом, если оно всё же даёт артефакты — можно использовать дополнительный зум.