我正在尋找一些東西(以前是 FOSS 軟體),它可以將 N 個圖像作為輸入,輸出一個具有 M 幀的動畫,其中 M 的範圍是 2N 到 5N 左右。
我相信一般技術稱為“時間上採樣”或可能是“中間”(或簡稱“補間”)。請注意,它確實需要付出一些努力來對場景中的物體進行運動跟踪(“光流”);僅僅在關鍵影格之間淡入淡出(「溶解」)並不能消除它。谷歌搜尋「時間上採樣」會發現很多關於該主題的論文,但我還沒有發現任何程式碼/軟體(gstreamer 外掛程式將是完美的)我可以用來嘗試該技術。
有什麼建議 ?
附加資訊:“運動插補”對於我正在尋找的內容來說,似乎是電視界更廣泛使用的名稱。看這和影片這裡也。有趣的是,有些影迷似乎討厭這些技術對 24FPS 電影的影響:例如,有評論「讓《亂世佳人》看起來像一部用影片拍攝的肥皂劇」。
答案1
這MV工具外掛AVI合成器施行幀插值。阿維合成器(來源鍛造)是一個基於腳本的影片編輯工具。您可以在腳本文字檔案中定義要執行的操作。
我必須播放的腳本查理威爾森的戰爭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、基於核心、輪廓等)的邊緣查找演算法或預測演算法,但「現實生活」電影變換的完全自動化充其量只是實驗性的。
答案3
慢動作視頻
SlowmoVideo 是一個開源程序,可以根據您的素材創建慢動作視頻。
但它並不只是讓您的影片以 0.01 倍的速度播放。您可以平滑地減慢並加快您的鏡頭速度,也可以選擇使用運動模糊。
慢動作如何運作? SlowmoVideo 嘗試找出像素在影片中移動的位置(此資訊稱為光流),然後使用此資訊來計算附加影格。
Gstreamer 慢動作插件
該插件使用來自 SlowmoVideo 的程式碼,將其從 QT 及其基於 ffmpeg 的內部解碼「框架」移植到 gstreamer。