замедленная съемкаВидео

замедленная съемкаВидео

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

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

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

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

решение1

TheMVToolsплагин для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)

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

решение2

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

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

Более развернутый ответ:

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

решение3

замедленная съемкаВидео

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

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

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

Плагин Gstreamer Slowmo

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

Связанный контент