slowmoVideo

slowmoVideo

Ich suche nach etwas (vorzugsweise FOSS-Software), das eine Animation mit N Bildern als Eingabe annehmen und eine Animation mit M Frames ausgeben kann, wobei M im Bereich von 2N bis etwa 5N liegt.

Ich glaube, die allgemeine Technik heißt „temporales Upsampling“ oder möglicherweise „Inbetweening“ (oder kurz „Tweening“). Beachten Sie, dass es einige Anstrengungen erfordert, um die Bewegungsverfolgung von Dingen in der Szene durchzuführen („optischer Fluss“); einfaches Überblenden („Auflösen“) zwischen den Keyframes reicht nicht aus. Wenn man nach „temporalem Upsampling“ googelt, findet man jede Menge Artikel zu diesem Thema, aber ich habe noch keinen Code/keine Software gefunden (ein Gstreamer-Plugin wäre perfekt), mit der ich die Technik einfach ausprobieren kann.

Irgendwelche Vorschläge ?

Weitere Informationen:„Bewegungsinterpolation“scheint in der Fernsehwelt der gebräuchlichste Name für das zu sein, was ich suche. SieheDasund dasVideoauch hier. Interessanterweise scheinen einige Cineasten zu hassen, was diese Technologien mit 24-FPS-Filmen machen: z. B. ein Kommentar „lässt Vom Winde verweht aussehen wie eine auf Video gedrehte Seifenoper“.

Antwort1

DerMVToolsPlugin fürAVISynthführtFrame-Interpolation.AviSynth(Quelleschmiede) ist ein skriptbasiertes Videobearbeitungstool. Sie definieren die auszuführenden Operationen in einer Skripttextdatei.

Das Skript, das ich abspielen mussteDer Krieg des Charlie Wilsonbei 120fps:

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)

Ja, es zerstört dieFilmqualitätbei einer Konvertierung auf mehr als 24 fps.

Antwort2

Kurze Antwort:

Damit es mit der aktuellen Technologie funktioniert, ist viel Handarbeit erforderlich.

Längere Antwort:

Die übliche Methode, ein „Zwischenbild“ (den sogenannten optischen Fluss) zu erhalten, besteht darin, Punkte in beiden Bildern (Quelle, Ziel) abzubilden und die Transformation zwischen den beiden Bildern zu berechnen. Natürlich gibt es Algorithmen zur Kantenfindung oder prädiktive Algorithmen, die verschiedene Objekte verfolgen (Blob, kernelbasiert, Kontur usw.). Aber eine vollständige Automatisierung der Transformation eines „echten“ bewegten Bildes ist bestenfalls experimentell.

Antwort3

slowmoVideo

slowmoVideo ist ein OpenSource-Programm, das aus Ihrem Filmmaterial Zeitlupenvideos erstellt.

Ihre Videos werden damit jedoch nicht einfach mit 0,01-facher Geschwindigkeit abgespielt. Sie können Ihr Filmmaterial auch sanft verlangsamen und beschleunigen, optional mit Bewegungsunschärfe.

Wie funktioniert Zeitlupe? slowmoVideo versucht herauszufinden, wohin sich Pixel im Video bewegen (diese Information wird als optischer Fluss bezeichnet) und verwendet diese Information dann, um die zusätzlichen Einzelbilder zu berechnen.

Gstreamer Slowmo-Plugin

Das Plugin verwendet Code von slowmovideo und portiert ihn von QT und seinem eigenen internen Dekodierungs-„Framework“ basierend auf ffmpeg zu gstreamer.

verwandte Informationen