câmera lentaVídeo

câmera lentaVídeo

Estou procurando algo (preferencialmente software FOSS) que possa receber uma animação com N imagens como entrada e que produza uma animação com M quadros, onde M está no intervalo de 2N a 5N ou mais.

Acredito que a técnica geral é chamada de "upsampling temporal" ou possivelmente "intermediário" (ou "'interpolação", para abreviar). Observe que é necessário fazer algum esforço para rastrear o movimento das coisas na cena ("fluxo óptico"); apenas desaparecer ("dissolver") entre os quadros-chave não vai resolver o problema. Pesquisar "upsampling temporal" no Google revela uma série de artigos sobre o assunto, mas ainda não descobri nenhum código/software (um plugin gstreamer seria perfeito) que eu possa usar para testar a técnica.

Alguma sugestão ?

Informações adicionais:"Interpolação de movimento"parece ser o nome mais usado no mundo da TV para o que procuro. Veressee avídeoaqui também. Curiosamente, alguns cinéfilos parecem odiar o que estas tecnologias fazem aos filmes a 24FPS: por exemplo, um comentário "faz E o Vento Levou parecer uma novela filmada em vídeo".

Responder1

OFerramentas MVplug-in paraSintetizador AVISexecutainterpolação de quadros.AviSynth(sourceforge) é uma ferramenta de edição de vídeo baseada em script. Você define operações a serem executadas em um arquivo de texto de script.

O script que eu tive que reproduzirA 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)

Sim, isso destrói oqualidade do filmequando convertido para algo superior a 24fps.

Responder2

Resposta curta:

É preciso muito trabalho manual com a tecnologia atual para que funcione.

Resposta mais longa:

O método usual de obter uma imagem "intermediária" (para o chamado fluxo óptico) é mapear pontos em ambas as imagens (origem, destino) e calcular a transformação entre as duas imagens. É claro que temos algoritmos de localização de bordas ou algoritmos preditivos que rastreiam diferentes objetos (Blob, baseado em kernel, contorno, etc., etc.). Mas uma automação completa de uma transformação de um filme da "vida real" é, na melhor das hipóteses, experimental.

Responder3

câmera lentaVídeo

slowmoVideo é um programa OpenSource que cria vídeos em câmera lenta a partir de suas filmagens.

Mas isso não faz simplesmente com que seus vídeos sejam reproduzidos na velocidade de 0,01×. Você pode desacelerar e acelerar suavemente sua filmagem, opcionalmente com desfoque de movimento.

Como funciona a câmera lenta? slowmoVideo tenta descobrir onde os pixels se movem no vídeo (essa informação é chamada de Fluxo Óptico) e então usa essa informação para calcular os quadros adicionais.

Plug-in Gstreamer Slowmo

O plugin usa código do slowmovideo, portando-o do QT e sua própria "estrutura" de decodificação interna baseada em ffmpeg para gstreamer.

informação relacionada