GetDups плагин для Avisynth

Общая информация

Авторы: (C)2004 Александр Г. Балахнин aka Fizick,
(C)2005 Turyst04, mailto:Turyst04@nextmail.ru - Синхронные режимы и использование звуковой информации
Версия 0.95
Загрузка: http://avisynth.org.ru/
Категория: Телекино
Требования: Avisynth 2.6
Лицензия: GPL


Информация

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

Он предназначен для обработки клипа, получаемого при оцифровке видеокамерой 8 мм кинопленок, проецируемых проектором с удаленным обтюратором. Такой клип содержит группы дублей (очень подобных) оригинальных кинокадров, разделенных преходнвми (не подобными) видеокадрами. Плагин анализирует и выбирает один оригинальный кадр из каждой группы и отбрасывает все другие, чтобы восстановить ряд кинокадров фильма (разновидность телекино).

Поддерживаются два режима пересъемки клипа: несинхронный на малой скорости проекции (обычно не более 8 к/с) и синхронный со стабилированной скоростью проекции 16,67 к/с (20 к/с для мира NTSC).

Он также имеет спциальный аудио режим для использования щелчков грейфера для обнаружения паузы движения кадров.

Параметры функции:

GetDups(clip, int "threshold", int "fade", bool "chroma", bool "tff", int "mode", int "show", int "log", string "logfname", int "audio", int "audio_thr", int "audio_shift", bool "debug", int threshold2, int "diff", clip "mc")

первый параметр - входной клип

threshold - порог отличия между соседними кадрами-дублями (реальное, процент от 0.0 до 100.0, default= 7.0)

fade - максимум коррекции общей яркости (default = 10)

chroma - учитывать цветовую информацию (default = false ). Сейчвс игнорируется.

tff - порядок полей с первым верхним (default = как Avisynt полагает)

mode - режим работы (0, 1, 2 или 4) с учетом особенностей входного клипа :
0 - несинхронный режим (старый режим, единственный в версиях до 0.5 включительно) - выбор первого похожего (по threshold) дубликата после сильно отличающегося (по threshold2) переходного кадра ;
1 - синхронный режим (16,67 к/с), на выход выдается последовательность по два поля (из трех);
2 - синхронный режим (16,67 к/с), на выход выдается только 1 поле (из трех);
4 - несинхронный режим (подобно режиму mode=0) с временным сглаживанием значений межкадровых отличий;
-1 - несинхронный режим с выбором последнего хорошего дубликата;
-2 - несинхронный режим с выбором наилучшего (наиболее похожего на предыдущий) дубликата;
(по умолчанию 0).

show - режим работы и показа информации о разности соседних кадров
(0 - обработка, 1 - обработка и информация, 2 - просмотр и информация, по умолчанию 0)

log - вести лог в файл:
0 - не вести лог;
от 1 до 4 - сохранять статистическую информацию о межкадровых отличиях в одном из выходных форматов либо параметры громкости звука (при audio=1 в 3 колонки: max, min, pow - мощность) для каждого кадра:
1 - Log-файл содержит разницу между всеми соседними полями - Top c Bottom, потом Bottom с Top следующего кадра, в одну колонку,
2 - Log-файл содержит разницу между всеми полями - Top c Top, Bottom с Bottom, соседних кадров
в две колонки - 1-я для Top, 2-я для Bottom, (если mode=4, то содержит сглаженные значения межкадровых отличий),
3 - Log-файл содержит исходную (не сглаженную) разницу между всеми полями - Top c Top, Bottom с Bottom, соседних кадров в две колонки - 1-я для Top, 2-я для Bottom,
4 - Log-файл содержит и исходные и сглаженные значения разницы между всеми полями - Top c Top, Bottom с Bottom соседних кадров в 4 колонки - 1-я для Top, 2-я для Bottom (исходных), затем вновь Top и Bottom (сглаженных),
5 - выводить номера исходных кадров;
по умолчанию 0

logfname - сохранить Log в файл с указанным именем и путем (default = "c:\\gd_stat.log")

audio - режим работы с использованием звуковой информации (звук грейфера или дополнительной "хлопалки"):
0 - не использовать звуковую информацию (единственный вариант до версии 0.8 включительно),
1 - использовать звуковую информацию (определять "хороший кадр" без анализа видео информации),
2 - использовать звуковую информацию (подобно audio=1, но с защитой от ложных срабатываний со звуком грейфера, дающим 2 звуковых всплеска),
(default = 0)

audio_thr - порог срабатывания по абсолютным значениям громкости звука: от 0 до 32768 (default=5000), лучшее значение должно находиться между значениями самого низкого звукового пика и самого высокого шумового провала во всем клипе (используйте режим show для анализа).

audio_shift - смещение относительно находимого по умолчанию "хорошего кадра" - положительное или отрицательное значение (разумные значения для скорости проекции 4-8 к/с находятся в пределах от -2 до 2); если значение по умолчанию audio_shift=0 дает плохой результат, попробуйте подобрать этот параметр: смещение звука относительно "стоячего кадра" зависит от конкретной механики проектора и способа реализации генератора дополнительных хлопков (в случае его применения при нечетком звуке грейфера).

debug - режим вывода отладочной информации для утилиты DebugView (default=false)

threshold2 - порог разницы между непохожими (переходными) кадрами, рекомендуемое значение коло threshold*5, по умолчанию = threshold (для совместимости со старыми версиями, где был единый порог.)

diff - вид межкадровой разности:
0 - максимум абсолютной разности для блока 8x8 (по умолчанию).
1 - средняя обсолютная разность на кадр (менее чуствительно к движению волосков).

MC - второй клип, с компенсацией. Подразумевается компенсация движения, подгоняющая предудущие кадры к текущим для противодействия тряске аппарата. По умолчанию - исходный клип.

Особенности и ограничения

1. Работает только в цветовых форматах YUY2, YV12 и других планарных (с версии 0.9.4).

2. Разработан для чересстрочных видео, но работает и с прогрессивными клипами.

3. Тестирован с Avisynth 2.6.0.

4. Произвольный доступ к кадрам не реализован. Плагин правильно работает только при последовательном прогоне кадров, начиная с самого начала, до конца клипа.

5. GetDups использует метод и код поблочного сравнения кадров, заимствованный из плагина Dup (by Donald Graft/Klaus Post).

6. С версии 0.2 изменен метод со сравнения кадров целиком на сравнение соответствующих полей соседних кадров. Это позволяет уменьшить число требуемых дублей и увеличить допустимую скорость проекции. В случае нахождения подобных полей (дублей), в качестве выходного используется кадр со вторым полем, расположенным во времени между ними. Поэтому важно правильное задание плагину порядка полей в клипе (по умолчанию или через параметр) для чересстрочного видео.

7. С версии 0.6 добавлен режим (автор Turyst04), учитывающий особенности входного клипа, захваченного PAL камкордером на стабильной скорости 16,6 к/с, и соответствующий параметр mode для его выбора. Видео должно быть разбито на поля. Метод позволяет увеличить скорость захвата (и соответственно уменьшить размер входного файла) без явных потерь качества результирующего клипа. Вы можете также попробовать использовать современные камеры с прогресивным режимом 50 к/с.

8. С версии 0.9 добавлен режим (автор Turyst04) использования звуковой информации (частично использован код из плагина AudGraph by Richard Ling) для альтернативного метода детектирования, работающий со входным клипом, содержащим четко-различимый звук грейфера (или дополнительной "хлопалки"); соответственно добавлены параметры: audio, audio_thr, audio_shift.

Простые примеры скрипта:

1) Для несинхронного режима:

loadplugin("GetDups.dll")
AssumeTFF()>
fc=Framecount()
GetDups(mode=-2, threshold=2.0)
AssumeFps(16)
Trim(0,fc/3)

2) Для синхронного режима 16,67 к/с:

Avisource("input.avi")
loadplugin("GetDups.dll")
fc=Framecount()
AssumeTFF()
SeparateFields()
GetDups(mode=1)
Weave(AssumeFieldBased)
AssumeFps(16)
Trim(0, fc*2/3)

3) Для режима с использованием звука:

Avisource("input.avi")
loadplugin("GetDups.dll")
AssumeTFF()
GetDups(audio=1)
AssumeFps(16)
#Trim(0,999)

Использование

Предназначен для реализации одного из способов оцифровки кинопленок (не для прямой пересъемки без доработки проектора, не для покадровой оцифровки).

1) Дорабатываем кинопроектор путем удаления обтюратора для отсутствия колебаний яркости;

2) устанавливаем небольшую частоту проекции около 4-6 кадров в секунду (несинхронный режим) либо стабилизированную 16,67 к/с (синхронный режим);

3) снимаем изображение на устойчиво установленную видеокамеру и производим оцифровку (видеозахват) в файл;

4) делаем предварительную проверку видео фильтром GetDups в отладочном режиме (show=2),

проверяя наличие дублей кадров и их детектирование. При плохих результатах стоит проанализировать Log-file, подстроить порог, проверить соответствие tff, попробовать альтернативные режимы (со сглаживанием mode=4 или с использованием звука audio=1) или сделать повторный захват с меньшей скоростью.

5) делаем обработку в нормальном режиме, записываем результат в выходной файл.

При этом можно задать правильную частоту 16 или 18 кадров в сек командой AssumeFps.

6) удаляем из результата лишние кадры в конце, оставляем только начало.

Дополнительная информация

Обсуждение методов оцифровки кинопленок и плагина ведется на форуме ixbt.com в ветке

"Пара вопросов освоившим покадровый захват с 8мм кинопленки." http://forum.ixbt.com/topic.cgi?id=29:160884

Информация о реализации синхронного режима на скорости 16,67 к/с приведена в прилагаемой статье Turyst04: " Метод пересъемки 8мм пленок на скорости 16,67 к/с".

Лицензия

Данная программа представляет собой свободно распространяемый программный продукт; вы можете распространять ее далее и\или изменять на условиях Стандартной публичной лицензии GNU, опубликованной "Free Software Foundation" -- либо ее версии номер 2, либо (по вашему выбору) любой более поздней ее версии. Распространяя данный программный продукт, мы надеемся что он окажется полезным, но НЕ ДАЕМ НИКАКИХ ГАРАНТИЙ, даже подразумеваемой гарантии ПРИГОДНОСТИ К КУПЛЕ-ПРОДАЖЕ или ИСПОЛЬЗОВАНИЮ В КОНКРЕТНЫХ ЦЕЛЯХ (см. "Стандартную публичную лицензию GNU"). Вместе с данной программой вы должны были получить копию "Стандартной публичной лицензии GNU"; если это не так, напишите в Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
(Суть: Вы можете модифицировать и программу и ее исходный код, но все модификации должны распространяться на таких же условиях, с исходными кодами, свободно).

Документация распространяется на условиях лицензии CreativeCommons BY-SA 3.0 license.

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

Изменения версий:

Версия 0.1, 2 ноября 2004 -первая публичная. Благодарность Eugen65 за идею фильтра и обсуждение.

Версия 0.2, 3 ноября 2004 - Раздельный анализ полей, коррекция общей яркости, замена параметра Show на целый, игнорирование ложных дублей из-за пропущенных при захвате кадров (дропов).

Версия 0.3, 7 ноября 2004 - Непохожесть кадров теперь определяется по одному полю (было по обоим),
последние лишние кадры теперь копия последнего дубликата.

Версия 0.4, 8 ноября 2004 - Дубликат выбирается по наиболее похожему полю, если обе разницы ниже порога.

Версия 0.5, 8 ноября 2004 - Размер блока сравнения уменьшен до 8 вместо 32.

Версия 0.6, 13 марта 2005 (Turyst04), версия отладочная, не публикуется - Добавлен параметр mode и режим работы с входным клипом, захваченным на стабильной скорости 16,67 к/с.

Версия 0.7,23 марта 2005 (Turyst04) - Изменен метод определения выдаваемых на выход полей в режимах mode=1 и mode=2: значение параметра threshold не учитываетя (в отличии от mode=0), просто находятся все локальные минимумы и максимумы значений отличий между соседними полями (поля с минимальными различиями и выдаются на выход).

Версия 0.8, 10 апреля 2005. Изменения Turyst04: добавлен вывод Log-файла(для дополнительного анализа)и mode=4 для активизации режима временного сглаживания (сглаживаются только значения межкадровых отличий, не картинка), он комбинирован с несинхронным режимом (с порогом threshold, как в mode=0).

Изменения Fizick: скорректирован алгоритм для mode=0 - теперь плагин НЕ детектирует кадр как (ложный) дубликат, если малая разница найдена только для хронологически первого поля в кадре, и эта же разница была мала также и на предудущем шаге.

Версия 0.5.2, 6 апреля 2005 - не публиковалась, выпущена 6 июля 2005 главным образом для исторических целей. Это специальная версия основана на версии 0.5 и содержит мой вклад в версию 0.8 (должна производить тот же результат, что и 0.8 в режиме mode=0): Скорректирован алгоритм для mode=0 - теперь плагин НЕ детектирует кадр как (ложный) дубликат, если малая разница найдена только для хронологически первого поля в кадре, и эта же разница была мала также и на предудущем шаге.

Версия 0.9, 21 июня 2005 (Turyst04) - добавлено использования звуковой информации для альтернативного метода детектирования, добавлены параметры: audio, audio_thrm, audio_shift.

Версия 0.91, 20 сентября 2005 (Turyst04) - исправлены некоторые ошибки, добавлен метод audio=2.

Версия 0.92, 13 марта 2014 (Fizick) - исправлена ошибка с неявным TFF,
- добавлен режим лога log=5 как просил Dan

Версия 0.93, 25 октября 2015 (Fizick) - добавлен режим mode=-1

Версия 0.94, 03 марта 2016 (Fizick) - добавлены параметры threshold2, diff, MC . Avisynth 2.6.0 со всеми планарными форматами.

Версия 0.95, 3 мая 2016 (Fizick)
- изменил значение threshold2 по умолчанию с threshold*5 на threshold для совместимости со старыми версиями до 0.93,
, - исправил показываемые номера кадров в редиме show=1,
- допустил одиночный отличающийся кадр в режиме mode=-1 (как v0.93).

Версия 0.96, 8 мая 2016 (Fizick)
- добавил режим mode=-2 с наилучшим (наиболее похожим) дубликатом.

Загрузка

Download GetDups version 0.96

Возврат на главную страницу