¿Cuál es el filtro ffmpeg equivalente a "Niveles automáticos" para los colores?


8

Al observar la documentación sobre los filtros, parece haber un filtro de curva para manipular el color con los siguientes ajustes preestablecidos:

  • color_negativo
  • proceso cruzado
  • mas oscuro
  • Aumentar contraste
  • encendedor
  • contraste_ lineal
  • medio_contraste
  • negativo
  • fuerte_contraste
  • Clásico

Lamentablemente, la documentación no menciona lo que hacen estos ajustes preestablecidos o cuáles son sus parámetros. Estoy buscando una opción simple para tomar un video y nivelar automáticamente los colores para todos los cuadros. ¿Alguno de estos preajustes hace eso?

Respuestas:


5

Aquí están los detalles sobre lo que hacen los presets:

[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 preset, cada x/ypar asigna la entrada xa la salida y, donde está el rango 0-1. Si no se configura, el filtro se configura automáticamente 0/0y, por 1/1ejemplo, entrada negra = salida negra y entrada blanca = salida blanca. Mientras 0/1que significaría establecer los píxeles negros de entrada en blanco en la salida. Cuando tiene varios pares entre comillas, separados por comas, la secuencia es el "R","G","B"mapeo. La interpolación entre los puntos es una spline cúbica natural .


Para la nivelación automática, un método crudo sería usar el autolevelssubfiltro del ppfiltro.

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

Lo que esto hace es estirar la luminancia a rango completo.


Para verificar los niveles antes (y después) de cualquier ajuste que realice, puede generar un desfile RGB para un cuadro como este

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

Para un marco específico, use

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.