Я ищу что-то (prereably программное обеспечение FOSS), который может взять анимацию с изображениями N, как введено, и который произведет анимацию с кадрами M, где M находится в диапазоне 2 Н к 5 Н или около этого.
Я полагаю, что общую технику называют "временной повышающей дискретизацией" или возможно "inbetweening" (или "'вставляющий промежуточные кадры", если коротко). Обратите внимание, что это действительно должно приложить некоторое усилие, чтобы сделать отслеживание движения вещей в сцене ("оптический поток"); просто исчезновение ("распадается") между ключевыми кадрами, не собирается сокращать его. Поиск с помощью Google "временной повышающей дискретизации" поднимает любое количество статей о предмете, но я должен все же обнаружить любой код/программное обеспечение (gstreamer плагин был бы прекрасен), я могу просто использовать для испытания техники.
Какие-либо предложения?
Дополнительная информация: "Интерполяция движения", кажется, более широко используемое имя в телевизионном мире для того, что я ищу. Посмотрите это и видео здесь также. Интересно, некоторые киноманы, кажется, ненавидят то, что эти технологии делают к фильму на 24 фута в секунду: например, комментарий "заставляет Унесенные ветром быть похожими на выстрел мыльной оперы на видео".
Плагин MVTools для AVISynth выполняет интерполяцию кадра. AviSynth (SourceForge) является основанным на сценарии инструментом редактирования видео. Вы определяете операции для выполнения в текстовом файле сценария.
Сценарий я должен был воспроизвести войну Charlie Wilson на уровне 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 фута в секунду.
Короткий ответ:
Требуется большой физический труд с современной технологией, чтобы заставить его работать.
Более длинный ответ:
Обычный метод получения "промежуточного" изображения (к так называемому оптическому потоку) путем отображения точек в обоих изображениях (источник, место назначения) и вычисления преобразования между этими двумя изображениями. Конечно, у нас действительно есть находящие край алгоритмы или алгоритмы прогноза, который отслеживает различные объекты (Блоб, основанный на ядре, контур, и т.д., и т.д.), Но полная автоматизация преобразования "реального" изображения движущихся объектов на высоте экспериментальная.