Usando o ffmpeg para esticar o contraste de um vídeo

5

Estou tentando implementar o que foi sugerido aqui: ffmpeg: contraste de alongamento adaptativo

O método em que pensei é:

  1. Separe os canais L, U e V.
  2. Aplique histeq ao canal L.
  3. Recombine os canais.

Sou novo no ffmpeg, então consegui fazer 1 e 2, mas não sei como implementar o # 3. O que eu tenho até agora é:

ffmpeg -i in.mkv -vf extractplanes=y,histeq=strength=0.3:intensity=1 out.mkv

Que extrai o canal L e o autocontraia, mas não tenho certeza de como recompô-lo com os canais U e V. Talvez use mergeplanes ?

    
por Pickles 02.01.2015 / 21:58

1 resposta

2

Use isto:

ffmpeg -y -i in.mkv -filter_complex "extractplanes=y+u+v[y][u][v];   \
[y]histeq=strength=0.3:intensity=1[lumaeq];   \
[lumaeq][u][v]mergeplanes=0x001020:yuv420p[out]" -map "[out]" out.mkv  

O filtro extractplanes precisa extrair cada canal (y + u + v [y] [u] [v]), que pode ser combinado posteriormente com mergeplanes .

Note que afirmei o formato da saída explicitamente como yuv420p, porque meu material de entrada é do mesmo formato.
Observe que usei seus pontos strongs e valores para o filtro histeq , o que tornou minha gravação "normal" completamente inutilizável. Isso não quer dizer que não funcionará em filmagens mal filmadas. Mas até mesmo um valor de histeq=strength=0.1:intensity=0.5 estava bem no limite da usabilidade. Isso ocorre porque histeq é um filtro global e aplicar a um canal não é um processo ideal. Em qualquer caso, você pode usar o filtro curves para segmentar individualmente os canais também.

Mas o princípio de divisão e mesclagem é como acima.

    
por 06.01.2015 / 15:50

Tags