5

Я ищу что-то (предварительно программное обеспечение FOSS), которое может принимать анимацию с N изображениями в качестве входных данных и которое будет выводить анимацию с M кадрами, где M находится в диапазоне от 2N до 5N или около того.

Я полагаю, что общая техника называется "временным повышением частоты дискретизации" или, возможно, "промежуточным" (или "твинингом" для краткости). Обратите внимание, что необходимо приложить некоторые усилия для отслеживания движения объектов в сцене ("оптический поток"); просто исчезновение ("растворение") между ключевыми кадрами не приведет к его сокращению. Погуглив "временную повышающую дискретизацию", можно найти любое количество статей на эту тему, но я еще не обнаружил какой-либо код / программное обеспечение (плагин gstreamer был бы идеальным), который я мог бы просто использовать, чтобы опробовать эту технику.

Какие-либо предложения ?

Дополнительная информация: "Интерполяция движения", кажется, наиболее широко используемое имя в мире телевидения для того, что я ищу. Смотрите это и видео здесь тоже. Интересно, что некоторые киноманы, похоже, ненавидят то, что эти технологии делают с фильмом 24FPS: например, комментарий «делает" Унесенные ветром "похожим на мыльную оперу, снятую на видео».

3 ответа3

3

MVTools плагин для AVISynth выполняет интерполяцию кадра. AviSynth (sourceforge) - инструмент для редактирования видео на основе сценариев. Вы определяете операции для выполнения в текстовом файле сценария.

Сценарий, который я должен был воспроизвести в «Войне Чарли Уилсона» со скоростью 120 кадров в секунду:

cyia.avs:

source = DirectShowSource("Cyia Batten - Charlie Wilson's War.avi")

# assume progressive NTSC Film 23.976 source

# Fast Search
#============
# we use explicit idx for more fast processing
#backward_vec = source.MVAnalyse(blksize=16, isb = true, chroma=false, pel=1, searchparam=1, idx=1)
#forward_vec = source.MVAnalyse(blksize=16, isb = false, chroma=false, pel=1, searchparam=1, idx=1)


# Slow Search
# ===========
# Use block overlap, halfpixel accuracy and Exhaustive search
backward_vec = source.MVAnalyse(overlap=4, isb = true, pel=2, search=3, idx=1)
forward_vec = source.MVAnalyse(overlap=4, isb = false, pel=2, search=3, idx=1)


#double framerate
#source.MVFlowFps(backward_vec, forward_vec, num=2*FramerateNumerator(source), den=FramerateDenominator(source), idx=1)

#triple framerate
#source.MVFlowFps(backward_vec, forward_vec, num=3*FramerateNumerator(source), den=FramerateDenominator(source), mask=0, idx=1)

#120fps
source.MVFlowFps(backward_vec, forward_vec, num=120, den=1, mask=0, idx=1)

Да, это ухудшает качество фильма при преобразовании во что-либо выше, чем 24fps.

2

Короткий ответ:

Требуется много ручной работы с современными технологиями, чтобы заставить это работать.

Более длинный ответ:

Обычный метод получения промежуточного изображения (так называемый оптический поток) заключается в отображении точек на обоих изображениях (источник, место назначения) и вычислении преобразования между двумя изображениями. Конечно, у нас есть алгоритмы поиска краев или алгоритмы прогнозирования, которые отслеживают различные объекты (Blob, на основе ядра, контур и т.д. И т.д.) Но полная автоматизация преобразования "реальной жизни" кинофильма в лучшем случае является экспериментальной.

1

slowmoVideo

slowmoVideo - это программа с открытым исходным кодом, которая создает замедленное видео из ваших видеороликов.

Но это не просто заставляет ваши видео воспроизводиться со скоростью 0,01 ×. Вы можете плавно замедлять и ускорять отснятый материал, возможно, с помощью размытия в движении.

Как работает замедленная съемка? slowmoVideo пытается выяснить, где пиксели перемещаются в видео (эта информация называется Optical Flow), а затем использует эту информацию для вычисления дополнительных кадров.

Gstreamer slowmo плагин

Плагин использует код из slowmovideo, портируя его из QT и свою собственную внутреннюю "структуру" декодирования, основанную на ffmpeg, на gstreamer.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .