Устранение "расчески"
Судя по вашим письмам, уважаемые читатели, для многих при работе с видео актуальным является устранение артефактов чересстрочности, возникающих при просмотре интерлейсного видео на мониторе компьютера. В этой статье я попытаюсь обобщить некоторые методы работы с интерлейсным видео.
Способы отображения видео на телевизоре и мониторе компьютера сильно отличаются. Телевизор имеет фактическую частоту обновления экрана 25 герц, чего совершенно не достаточно для комфортного восприятия изображения. С целью обойти данную проблему видео отображается не целыми кадрами, а полукадрами - полями. В каждый момент времени на экране телевизора отображается два поля, что позволяет получить эффективную частоту обновления в 50 герц. Иными словами, чересстрочное видео на самом деле представляет собой последовательность полей (поле - совокупность четных или нечетных строк кадра в чересстрочном видео, четные и нечетные поля чередуются в потоке последовательно, с промежутком в 1/25 секунды, со сдвигом по вертикали в одну строку) с разницей в 1/50 секунды.
Пока мы смотрим телевизор - все замечательно, но как только мы станем просматривать захваченное видео на мониторе компьютера, появляется пресловутая "расческа". Как от нее избавиться? Есть несколько методов.
1. Деинтерлейс
Превращение чересстрочного видео в прогрессивное. Наиболее популярный прием - деинтерлейс. Функции деинтерлейса встроены практически во все программы обработки видео. Существуют сотни подключаемых фильтров деинтерлейса для популярных программ семейства VirtualDub. Отличаются они качеством и скоростью обработки. Среди них можно выделить SmartDeinterlace, QS Deinterlace, Deinterlace "Muksun", существуют и платные фильтры деинтерлейса, в том числе от AlparySoft. Ничего выдающегося в платных фильтрах я не заметил, по крайней мере, платить там не за что.
2. Создание DVD-видео
Конечно, это не метод борьбы с интерлейсом. Скорее, это способ сделать его вполне уместным. При просмотре DVD на телевизоре никаких проблем, естественно, не возникнет. При просмотре на компьютере - тоже, так как все софтовые плееры умеют производить деинтерлейс. То есть, если вы решили сделать собственный DVD-диск - делать деинтерлейс нет надобности.
3. Захват видео с разрешением 288 по вертикали (например, 352х288) для PAL/SECAM
Самый простой способ избавиться от "гребенки". При захвате в таком разрешении захватываться будет только одно поле, никакой чересстрочности нет. При всей простоте данного способа его можно сравнить с лечением головной боли топором. Мало того, что вы потеряете 50% информации, так еще такое видео будет мало пригодным для дальнейшей обработки - вам придется увеличивать разрешение (а не уменьшать, что более благоприятно сказывается на качестве), картинка будет выглядеть замыленной, шумы и артефакты сжатия будут более заметны.
4. Создание видео 50 кадров/с
Наиболее изящный способ. Фактически, никаких деструктивных воздействий на видео в таком случае не производится. Каждое поле мы превращаем в кадр, получая при этом реальных 50 кадров в секунду! Зачем это нужно? После произведения конвертации в прогрессивное видео путем деинтерлейса мы получим последовательность кадров с разницей в 1/25 секунды, т.е. в два раза уменьшим разрешение по времени. И если на спокойном вялотекущем эпизоде это будет незаметно, то очень динамичные сцены, имеющие большую межкадровую разность (спортивные, любительские съемки с постоянным "болтанием" камеры, игры с зумом и пр.), фильтр деинтерлейса обработает далеко не идеально. Итак, рассматриваемый метод будет работать, если видео при захвате было сжато кодеком Motion JPEG. При открытии видеофайла VirtualDUBMod'ом необходимо поставить галку напротив опции "Ask for extended options after this dialog". В открывшемся окне нас будет интересовать группа Motion-JPEG (MJPEG) Options.
Отмечаем опцию "Split interlaced frames into two fields and double framerate". Порядок полей (unswapped или swapped) подбирается экспериментально - если после открытия файла с выбранной опцией объекты в кадре движутся рывками, стоит выбрать другой вариант. После открытия таким образом видеофильма вам останется увеличить его разрешение по вертикали в два раза, одновременно избавившись от дрожания полученных кадров. Для этого предназначен фильтр SmartBOB.
Threshold - чем большее значение имеет данный показатель, тем больше информации будет взято из предыдущего кадра. Если значение данного параметра составляет 0, фильтр при создании кадра не будет использовать информацию из предыдущих кадров, т.е. будет сделано простое масштабирование. Автор фильтра рекомендует использовать значения 10-25, однако ничто не мешает подобрать параметры экспериментально. Motion Map Denoising - функция динамического подавления шумов. Рекомендуется всегда включать эту опцию, однако следует учесть, что она замедляет работу фильтра. Show Motion Areas only - при включении данной опции фильтр покажет только движущиеся участки изображения. Не забудьте выключать данную опцию при финальном сжатии видео! Иначе результат вас не порадует.
Even-numbered frames (0-based) contain top fields - сообщает фильтру порядок полей. Необходимо для удаления вертикального тремора. Если после наложения фильтра картинка "прыгает вверх-вниз", измените эту опцию. Итак, после наложения SmartBob мы получаем видео 720х576, 50fps. Все бы хорошо, но.... у этого метода есть и недостатки. Во-первых, для такого видео необходимо значительно увеличить битрейт при финальном кодировании (в полтора-два раза). Во-вторых, нужен достаточно мощный процессор для декодирования такого видео. Насколько серьезны эти недостатки, решать вам. С учетом того, что в качестве основного носителя сегодня выступает DVD, увеличение размера нельзя назвать непреодолимой проблемой. А по поводу мощности процессора - с декодированием созданного нами фильма справится любой современный процессор, начиная со старших Pentium III.
В заключение добавлю, что существует, как минимум, еще один способ создания 50 fps-видео, лишенного указанных недостатков, с использованием фрейм-сервера Avisynth, но об этом методе, как и о самом Avisynth, поговорим в другой раз.
Андрей АЧИНОВИЧ,
BOPOX@TUT.BY
Комментарии
Если не сложно, может вы можете подсказать, где можно почитать на эту тему? А именно, меня интересуют такие вопросы:
- возможности AviSynth по работе с чересстрочным видео (лишённое упомянутых в статье недостатков)
- есть ли аналог QS Deinterlace (VDub plugin) для AviSynth?
- каким AviSynth плагином можно сдвинуть изображение (влево/вправо/...)?
Спасибо!