cámara lentaVideo

cámara lentaVideo

Estoy buscando algo (preferiblemente software FOSS) que pueda tomar una animación con N imágenes como entrada y que genere una animación con M fotogramas, donde M está en el rango de 2N a 5N aproximadamente.

Creo que la técnica general se llama "muestreo ascendente temporal" o posiblemente "entremedio" (o "interpolación" para abreviar). Tenga en cuenta que es necesario hacer algún esfuerzo para realizar un seguimiento del movimiento de las cosas en la escena ("flujo óptico"); simplemente desvanecerse ("disolverse") entre fotogramas clave no será suficiente. Al buscar en Google "muestreo temporal", aparecen varios artículos sobre el tema, pero todavía tengo que descubrir algún código/software (un complemento de gstreamer sería perfecto) que pueda usar para probar la técnica.

Alguna sugerencia ?

Información adicional:"Interpolación de movimiento"Parece ser el nombre más utilizado en el mundo de la televisión para lo que estoy buscando. Verestey elvideoaquí también. Curiosamente, algunos cinéfilos parecen odiar lo que estas tecnologías hacen con las películas de 24 FPS: por ejemplo, un comentario "hace que Lo que el viento se llevó parezca una telenovela filmada en vídeo".

Respuesta1

ElMVHerramientascomplemento paraAVISintetizadorrealizainterpolación de cuadros.AviSynth(fuenteforja) es una herramienta de edición de vídeo basada en guiones. Usted define las operaciones a realizar en un archivo de texto de script.

El guión que tuve que reproducir.La guerra de Charlie Wilsona 120 fps:

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)

Sí, destruye elcalidad de la películacuando se convierte a algo superior a 24 fps.

Respuesta2

Respuesta corta:

Se necesita mucho trabajo manual con la tecnología actual para que funcione.

Respuesta más larga:

El método habitual para obtener una imagen "intermedia" (al llamado flujo óptico) es mapear puntos en ambas imágenes (origen, destino) y calcular la transformación entre las dos imágenes. Por supuesto, tenemos algoritmos de búsqueda de bordes o algoritmos predictivos que rastrean diferentes objetos (Blob, basados ​​en kernel, contornos, etc., etc.). Pero una automatización completa de una transformación de una película de la "vida real" es, en el mejor de los casos, experimental.

Respuesta3

cámara lentaVideo

slowmoVideo es un programa OpenSource que crea videos en cámara lenta a partir de su metraje.

Pero no hace que tus vídeos se reproduzcan simplemente a una velocidad de 0,01×. Puede ralentizar y acelerar suavemente el metraje, opcionalmente con desenfoque de movimiento.

¿Cómo funciona la cámara lenta? slowmoVideo intenta descubrir dónde se mueven los píxeles en el vídeo (esta información se llama flujo óptico) y luego utiliza esta información para calcular los fotogramas adicionales.

Complemento de cámara lenta Gstreamer

El complemento utiliza código de slowmovideo, transfiriéndolo desde QT y su propio "marco" de decodificación interno basado en ffmpeg a gstreamer.

información relacionada