Проблемы чередования полей

Доброго времени суток, друзья!
Сегодня мы рассмотрим проблемы, причиной которых становится чередование полей в видео. Это и не настоящая чересстрочность и бич многих монтажистов – строб.

Кто-то, прочтя первые две темы, может спросить: “А зачем это нужно? Сколько лет монтирую, и никогда не сталкивался ни с какими проблемами”. И в самом деле, если вы сбрасываете на компьютер материал с цифровой камеры, монтируете и выводите готовый фильм на DVD (VSD, SVCD), который потом просматриваете на телевизоре, подключенном к аппаратному DVD-плееру, то вероятнее всего вы не столкнетесь с описываемыми здесь проблемами. Однако если вы готовите фильм к показу на компьютере или занимаетесь оцифровкой аналогового сигнала, вы просто обязаны разбираться особенностях прогрессивной и чересстрочной развертки.

Первая проблема это тривиальная ошибка (которую вы никогда не сделаете, зная особенности чересстрочной развертки) – изменение размеров кадра без предварительного диентерлейса, что приводит к тому, что я назвал не настоящей чересстрочностью. На рисунке 1 показан результат подобного преобразования.

Рис 1. Не настоящая чересстрочность

 Фрагмент 1 – исходный кадр, фрагмент 2 – получен изменением размеров исходного кадра, на нем так же видна “гребенка”, но она уже ре раскладывается по полям, информация из разных полей была смешана при изменении размеров. Если такое видео теперь подать на телевизор “гребенка” будет заметна и на нем. Применение фильтра деинтерлейса (фрагмент 3) так же не даст хороших результатов по той же причине смешивания полей. При более быстром движении в кадре картинка будет еще страшнее. Для сравнения в четвертом фрагменте приведен пример правильной последовательности действий: деинтерлейс а затем изменение размеров.

Справедливости ради следует заметить, что существуют фильтры, выполняющие масштабирование не всего кадра целиком, а по полям, т.е. масштабируется каждое поле в отдельности. Так в VirtualDub фильтр Resize умеет делать масштабирование по полям, для чего нужно в настройках фильтра выбрать опцию «Interlaced». Так же, работая с чересстрочным видео, поступают и монтажные программы при манипуляциях приводящих к изменению размеров видео: картинка в картинке, различные 3D переходы и т.п. В других случаях необходимость изменения размеров чересстрочного видео вообще представляется мне весьма сомнительной т.к. при показе на телевизоре в системе PAL изображение должно быть разложено на 576 видимых строк, по 288 в каждом поле. В других случаях видео следует в начале преобразовать в прогрессивное, т.е. выполнить деинтерлейс.

Если вышеописанная проблема встречается достаточно редко, то следующая, судя по появлению вопросов на различных форумах, встречается достаточно часто. И имя ее - Строб – дерганое, прерывистое движение. Вообще строб может возникать из-за пропущенных при захвате кадров и из-за недостаточной производительности компьютера или конфликтов устройств и т.п. Но есть еще одна причина, сразу не заметная ни при монтаже, ни при просмотре на компьютере, но проявляющая себя во всей красе, когда мы, переполненные чувством гордости, устраиваем первый просмотр готового, записанного на DVD, фильма, усадив перед телевизором все семейство, а еще хуже – заказчика.

Итак, захват аналогового сигнала. Вспомним, что видео представляет собой последовательность полукадров – полей. На рисунке 2 представлено разложенное по полям видео катящегося колобка. В каждом кадре присутствуют два поля “Н” – нижнее и “В” – верхнее. На рисунке 2а можно видеть последовательный показ всех 12 полей.


Рис 2.


Рис 2а.

Так вот, дело в том, что при захвате, показанный выше порядок полей может поменяться. Две причины могут повлиять на это: во первых – нет гарантии, что захват начнется с нижнего поля, может и с верхнего; а во вторых – одни карты располагают в памяти сначала нижнее поле, а потом верхнее, в то время как другие наоборот. И тогда, из оригинальной последовательности (Н1В1-Н2В2-Н3В3…) можем получить 4 варианта:

1. Н1В1-Н2В2-Н3В3… - без изменений
2. В1Н1-В2Н2-В3Н3…
3. В1Н2-В2Н3-В3Н4…
4. Н2В1-Н3В2-Н4В3…

А после, при просмотре, например 2-го варианта, увидим следующую картину (рис. 3, 3а).

Рис 3.
 

Рис 3а.

Здорово? А вы заметили, что кадры по прежнему состоят из тех же полей, что и в оригинальном видео? Следовательно, при монтаже и просмотре на компьютере, где используется прогрессивная развертка, и кадр отображается целиком за один проход, никакой разницы мы не увидим. “Гребенка на месте, ну и ладно, все равно на телевизоре ее не будет!” Ее и в самом деле на телевизоре не будет, но все движение будет жутко “стробить” (рис. 3а).

Что делать? Для начала необходимо определить каков же порядок полей в исходном видео. Самый простой и надежный способ записать фрагмент на DVD-RW и прогнать на DVD-плеере, если строб есть – непорядок с полями. Если есть карта захвата аналогового сигнала, которые, как правило, умеют и выводить видео, раскладывая его по полям, тогда можно вывести на телевизор через нее (однако, надо точно знать, как работает с полями ваша карта). Я лично использую фильтр Deshaker для VirtualDub. Сам фильтр предназначен для стабилизации изображения, но он при работе раскладывает кадр на два поля и показывает вектора смещения блоков, направления векторов в разных полях должны совпадать, если вектора направлены в разные стороны, значит, выбрана не правильная очередность полей.

Вторым этапом следует решить: исправлять очередность полей или оставить как есть. В самом деле, многие монтажные программы позволяют явно указать очередность полей, да и DVD-плееру все равно – они умеют выводить как нижнее, так и верхнее поле первым. В самом деле, MPEG2 содержит два значения с информацией о полях: первое значение указывает реальную очередность полей, а второе – в каком порядке плееру их выводить. Т.е. мы можем управлять очередностью вывода полей. Я все же предпочитаю приводить все видео «правильному» виду – нижнее поле первое. Это позволяет в дальнейшем не беспокоиться, что в один проект попадут фрагменты видео с разным чередованием полей, а так же не ломать голову о том какие поля выставлять при подготовке видео к записи на DVD. Studio9 от Pinnacle вообще не позволяет указать очередность полей. И что же, если у вас в проекте используется видео в котором верхнее поле – первое, то при использовании переходов, Studio9 просчитает их, сделав первым нижнее поле. Т.о. строб вам обеспечен или на всем видео или на переходах.

Как изменить очередность полей? Я использую для этих целей все тот же VirtualDub и его встроенный фильтр – «field swap». Если же поля не просто поменяны местами (как в вариантах 1 и 2), а еще присутствует смещение полей (варианты 3 и 4), можно воспользоваться фильтром «QS Deinterlace». Этот фильтр позволяет, отключив выполнение деинтерлейса, воспользоваться его расширенными возможностями по работе с полями (менять поля до сдвига, сдвигать поля, менять поля после сдвига).

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

материал любезно предоставлен Александром Шустиковым
ales74@idknet.com