Decomb плагин для AviSynth
(Версия 5.2.1)
Учебное пособие по использованию

от Дональда Графта (Donald A. Graft)


Содержание:


Введение

Эта инструкция является учебным пособием по использованию плагина Decomb. Она содержит инструкции применения функции Telecide() и Decimate() для правильной обработки вашего клипа. Здесь не описана функция FieldDeinterlace(), поскольку она просто описана в описании "Справочном руководстве по Decomb".

Для подробного описания функций Decomb обратитесь к описанию в "Справочном руководстве по Decomb".


Telecide()

Telecide() восстанавливает прогрессивную картинку (методом поиска и выравнивания совпадающих полей). Не используйте Telecide() с потоками не содержащими прогрессивной картинки (с эффектом Telecide), таких как чисто чересстрочное видео.

Шаг 1 Определение и установка порядка полей

Очень важно правильно установить правильный порядок полей для правильного просчёта. Порядок полей устанавливается принудительными параметрами. Установите order=1 для порядка полей с первым верхним полем или установите order=0 для порядка полей с первым нижним полем. Так как эта установка очень важна, не стоит устанавливать порядок полей предположительно, для проверки правильности установки порядка полей, используйте следующую процедуру проверки.

Что бы определить порядок полей, создайте Avisynth скрипт, который позволит просмотреть ваш клип без дополнительной обработки. Если вы используете AVI файл, то используйте AviSource(). Для наших примеров мы будем использовать AviSource(). Для проверки на "верхнее поле первое" создайте скрипт со следующими строками:

AviSource("ваш_клип.avi")
AssumeTFF().SeparateFields()

Теперь просмотрите ваш клип в VirtualDub и найдите участок с движением. Теперь посмотрите видео покадрово. Обратите внимание, как происходит движение в кадре, оно должно плавно продвигаться, но может дергаться вперед-назад. Например, если порядок полей не правильный, то объект, который перемещается слева направо, переместился бы вправо, потом перескочил бы назад, переместился вправо, назад и т.д. Если порядок полей правильный, происходит устойчивое перемещение вправо.

Если движение происходит правильно при AssumeTFF().SeparateFields(), то ваш порядок полей с первым полем верхним и вы должны установить order=1. Если движение происходит неправильно, то ваш порядок полей с первым полем нижним и вы должны установить order=0. Если вы хотите произвести повторную проверку, то используйте AssumeBFF.SeparateFields() для правильности проверки на нижнее поле первое.

Давайте в следующих шагах предполагать, то у нас клип с верхним полем первым. Вы конечно использовали бы правильный порядок полей относительно вашего клипа. Итак, наш скрипт получился следующим:

AviSource("ваш_клип.avi")
Telecide(order=1)

Шаг 2 Настройка типа поиска шаблона, если имеется

Зачастую вы знаете из характера клипа, какого типа шаблон (структура, pattern) телелекино преобразования был использован (если был), соответственно вы знаете, какие операции с полями нужно произвести. Использование этой информации при настройке telecide() улучшает сравнение (подбор) полей. Тип поиска шаблона (pattern guidance) управляется дополнительным параметром guide. Он имеет 4 возможных положения: guide=0 означает не задавать тип поиска; guide=1 означает поиск 3:2 pulldown преобразования (24fps->30fps); guide=2 означает поиск 2:2 преобразования (PAL); и guide=3 означает поиск 3:2:3:2:2 преобразования (25fps->30fps).

Сначала убедитесь, что ваш клип системы PAL. Если это так, и изображение прогрессивное, вы наверняка можете выставить guide=2 для использования поиска шаблона PAL. Если же ваш клип не имеет прогрессивных кадров, то это вам ничем не поможет и вы не должны использовать Telecide() вообще! Итак, для клипа в системе PAL, мы можем пропустить Шаг 3 и ваш скрипт будет выглядеть так:

AviSource("ваш_клип.avi")
Telecide(order=1,guide=2)

Если вы имеете клип в системе NTSC с частотой кадров 29.97 или 30, то тут уже есть хитрости. Сначала вы должны определить, присутствует ли в нём обработка 3:2 pulldown. Для этого можно применить несколько тестов. Сначала откройте клип (скрипт безо всякой обработки) в VirtualDub. Посмотрите покадрово участок, где есть движение. Если вы видете повторение из 3 чисто-прогрессивных и затем 2 чересстрочных кадров, то это сделано при помощи технологии 3:2 pulldown. Обычно, фильмы проходят обработку 3:2 pulldown.

Данный способ поиска технологии 3:2 не является безошибочным. Некоторые мультфильмы содержат кадры-дубликаты, которые могут вызвать затруднение при поиске четкого 3:2 шаблона.

Второй способ определения технологии 3:2 pulldown заключается в просмотре следующего скрипта в VirtualDub. Просмотрите, что Telecide() сообщит о вашем клипе (не забудьте правильно выставить порядок полей, который вы определили выше).

AviSource("ваш_клип.avi")
Telecide(order=1,guide=1,post=0,show=true)
Откройте этот скрипт в VirtualDub и просмотрите несколько типичных участков вашего клипа. Если Telecide() сообщает "in-pattern", или "in-pattern*", это указывает на обнаружение шаблона (pattern) 3:2 pulldown. Если сообщается "out-of-pattern" или постоянно прыгает "in-pattern" и "out-of-pattern", значит функция не находит согласованный шаблон 3:2 pulldown.

Если вы решите, что ваш клип содержит много материала 3:2 pulldown технологии, то вы должны установить guide=1. Если у вас клип не содержащий много материала 3:2 pulldown технологии, или вы сомневаетесь в происхождении своего клипа, тогда установите guide=0. Для следующих шагов мы предположим, что у нас клип с использованием 3:2 pulldown технологии. Скрипт для обработки такого клипа будет выглядеть так:

AviSource("ваш_клип.avi")
Telecide(order=1,guide=1)

Шаг 3 Настройка окончательной обработки

Окончательная обработка - это процесс, который производит обнаружение и деинтерлийс чересстрочных кадров, которые остались после процесса поиска совпадающих полей. Режим окончательной обработки управляется параметром post: post=0 отключает окончательную обработку; post=1 производит начальные расчёты, но не производит деинтерлейс; post=2 производит начальные расчёты и деинтерлейс; и post=3 производит начальные расчёты, деинтерлейс и показывает карту движения для кадра, в котором обнаружена чересстрочность. Так же, есть два более продвинутых способа, которые описаны в "Справочном руководстве по Decomb".

Мы установим стандартную процедуру настройки окончательной обработки. Сначала мы включим начальные расчёты и просмотрим на это (напоминаем, вы должны использовать ранее определённые настройки для order и guide):

AviSource("your_clip.avi")
Telecide(order=1,guide=1,post=3,vthresh=25,show=true)
Загрузите этот клип в Virtualdub и включите просмотр для анализа кадров и показа уровня vmetric. Уровни, соответствующие согласованным кадрам, выводятся в скобках "chosen=", например," [chosen=27] ". Будем называть этот параметр vmetric. Если параметр vmetric больше параметра vthresh, кадр будет определён как чересстрочный. Вам нужно определить уровень параметра vthresh, при котором будут правильно различаться прогрессивные кадры от чересстрочных. Вы легко определите чересстрочные кадры для последующей обработки: a) уровень vmetric больше уровня vthresh, b) индикатор progressive/interlaced будет сообщать "interlaced" (чересстрочный) и c) для кадра будет построена карта движения и деинтерлейса. При этом, вы никак не пропустите их!

Ваш выбор vthresh может быть несовершенен и лучше сделать выбор в сторону перестраховывания. Лучше отловить прогрессивные кадры, чем пропустить чересстрочные.

Давайте предположим, что уровень vthresh, при котором различаются чересстрочные и прогрессивные кадры, равен 30. Теперь создадим скрипт с post=2 (как всегда, перенеся ранее определённые значения):

AviSource("your_clip.avi")
Telecide(order=1,guide=1,post=2,vthresh=30,show=true)
Загрузим и просмотрим этот клип в Virtualdub. Просматривая пошагово, мы увидим что, прогрессивные кадры проходят нетронутыми, а чересстрочные проходят деинтерлейс.

Если вы недовольны результатами деинтерлейса, вы можете "ударить посильнее", для этого нужно уменьшить параметр dthresh. Так же, если вы предпочитаете интерполяцию смешиванию чересстрочных областей, вы можете изменить параметр blend. Для правильного использования этого параметра, обратитесь к справочному руководству.

Наш скрипт пока выглядит так:

AviSource("your_clip.avi")
Telecide(order=1,guide=1,post=2,vthresh=30)

У окончательной обработки есть две важных вещи, о которых нужно сказать прежде, чем мы пойдём дальше. Первое, есть небольшое отличие между post=2 и post=4, которое может коснуться вас. Справочное руководство затрагивает эти различия подробно. Установка post=2 будет часто избегать смешивания больших сцен при их смене, но это может сделать картинку дёрганной. При установке post=4 деинтерлейс выглядит гладко, но это может смешивать кадры при смене сцен.

Во вторых, вы можете обнаружить, что для разных частей клипа нужны различные установки уровня vthresh. В этом случае,  для определения уровней различных диапазонов кадров, обратитесь к руководству по Telecide. Для подробной информации обратитесь к справочному руководству.

Decimate()

Как побочный эффект полевого сравнения для 3:2 pulldown, Telecide() выделяет дублированные кадры и оставляет оригинальную частоту кадров. Decimate() определяет, удаляет эти дубликаты и устанавливает соответствующую частоту кадров.

Шаг 4 Настройка прореживания

Если ваш клип системы PAL, прореживание вам не нужно!

Если ваш клип обработан 3:2 pulldown, вам нужно прореживание клипа. Просто добавьте Decimate(). Ваш окончательный скрипт будет выглядеть так:

AviSource("your_clip.avi")
Telecide(order=1,guide=1,post=2,vthresh=30)
Decimate()
Ещё одно нужно знать, вам не всегда нужно прореживать 30 кадровый материал. Например, если ваш клип содержит смесь прогрессивного (обработанного 3:2 pulldown) и чересстрочного видео. Если вы произведёте прореживание этого видео, то оно будет периодически дёргаться. Для таких клипов лучше оставлять оригинальную частоту кадров, минуя Decimate().

Тонкости

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

Вот один пример необходимой обработки с дополнительными параметрами: вы произвели шумный захват с обычной телевизионной антенны и у вас не правильно производится детектирование совпадающих полей. Вы можете добавить некоторую шумовую терпимость для Telecide(), которая уменьшит уровень nt параметра. В справочном руководстве вы найдёте множество таких драгоценных камней.


Copyright © Donald A. Graft, All Rights Reserved.

Для получения обновлений и других фильтров/средств, посетите мой web сайт:
http://neuron2.net/

$English Date: 2004/08/13 21:57:25 $
Русский перевод 14.10.2005 Eugen65

Редакция 11.12.2006 Fizick