GetDups  - Выделение уникальных дублированных кадров

Плагин для Avisynth 2.5

Copyright (C)2004 Александр Г. Балахнин aka Fizick. http://bag.hotmail.ru/

Copyright (C)2005 Turyst04, mailto:Turyst04@nextmail.ru  - Синхронные режимы и использование звуковой информации

Версия 0.91 от 20 сентября 2005 года

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

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

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

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

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


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


первый параметр - входной клип
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 включительно);

1 – синхронный режим (16,67 к/с), на выход выдается последовательность по два поля (из трех);

            2 - синхронный режим (16,67 к/с), на выход выдается только 1 поле (из трех);

            4 – несинхронный режим (подобно режиму в mode=0) с временным сглаживанием значений межкадровых отличий;

            (default = 0).

show - режим работы и показа информации о разности соседних кадров

     (0 - обработка, 1 - обработка и информация, 2 - просмотр и информация,    default = 0)

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

    0 - без Log-файла (единственный вариант до версии 0.7 включительно),

    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 (сглаженных),
     default = 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)  

 

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

  

  1. Работает только в цветовых форматах YV12 и YUY2.

  2. Работает с прогрессивными клипами.
  3. Тестирован с Avisynth  2.55.

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

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

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

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

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

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

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

 

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

 

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),

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

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

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

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

 

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

 

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

"Пара вопросов освоившим покадровый захват с 8мм кинопленки." http://forum.ixbt.com/0029/016088-8.html#234

Информация о реализации синхронного режима на скорости 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=1,
добавлены параметры:  audio, audio_thr  и audio_shift.

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

Download GetDups version 0.52

Download GetDups version 0.91

 

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