Qual é o filtro ffmpeg equivalente a "Níveis automáticos" para cores?


8

Observando a documentação sobre filtros, parece haver um filtro de curva para manipular cores com as seguintes predefinições:

  • color_negative
  • processo cruzado
  • mais escura
  • Aumentar contraste
  • mais leve
  • linear_contrast
  • medium_contrast
  • negativo
  • strong_contrast
  • vintage

Infelizmente, a documentação não menciona o que essas predefinições fazem ou quais são seus parâmetros. Estou procurando uma opção simples para gravar um vídeo e cores de nível automático para todos os quadros. Alguma dessas predefinições faz isso?

Respostas:


5

Aqui estão os detalhes sobre o que as predefinições fazem:

[PRESET_COLOR_NEGATIVE] = {
    "0/1 0.129/1 0.466/0.498 0.725/0 1/0",
    "0/1 0.109/1 0.301/0.498 0.517/0 1/0",
    "0/1 0.098/1 0.235/0.498 0.423/0 1/0",
},
[PRESET_CROSS_PROCESS] = {
    "0.25/0.156 0.501/0.501 0.686/0.745",
    "0.25/0.188 0.38/0.501 0.745/0.815 1/0.815",
    "0.231/0.094 0.709/0.874",
},
[PRESET_DARKER]             = { .master = "0.5/0.4" },
[PRESET_INCREASE_CONTRAST]  = { .master = "0.149/0.066 0.831/0.905 0.905/0.98" },
[PRESET_LIGHTER]            = { .master = "0.4/0.5" },
[PRESET_LINEAR_CONTRAST]    = { .master = "0.305/0.286 0.694/0.713" },
[PRESET_MEDIUM_CONTRAST]    = { .master = "0.286/0.219 0.639/0.643" },
[PRESET_NEGATIVE]           = { .master = "0/1 1/0" },
[PRESET_STRONG_CONTRAST]    = { .master = "0.301/0.196 0.592/0.6 0.686/0.737" },
[PRESET_VINTAGE] = {
    "0/0.11 0.42/0.51 1/0.95",
    "0.50/0.48",
    "0/0.22 0.49/0.44 1/0.8",
}

Para cada predefinição, cada x/ypar mapeia a entrada xpara a saída y, onde está o intervalo 0-1. Se não estiver definido, o filtro definirá automaticamente 0/0e, por exemplo, 1/1entrada preta = saída preta e entrada branca = saída branca. Considerando 0/1que significaria definir pixels pretos de entrada como brancos na saída. Onde você tem vários pares de aspas, separados por vírgulas, a sequência é "R","G","B"mapeada. A interpolação entre os pontos é spline cúbico natural .


Para o nivelamento automático, um método bruto seria usar o autolevelssubfiltro do ppfiltro.

ffmpeg -i input.mp4 -vf pp=al output.mp4

O que isso faz é aumentar a luminância para toda a gama.


Para verificar os níveis antes (e depois) de qualquer ajuste que você fizer, você pode gerar um desfile RGB para um quadro como esse

ffmpeg -i input.mp4 -vf "format=rgb24,waveform=c=7:d=parade,scale=1200x512" -vframes 1 frame1parade.png

Para um quadro específico, use

ffmpeg -ss 12.4 -i input.mp4 -vf "format=rgb24,waveform=c=7:d=parade,scale=1200x512" -vframes 1 frameNparade.png

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.