cómo determinar la tolerancia al ruido para usarlo en el filtro de detección de congelación en ffmpeg

cómo determinar la tolerancia al ruido para usarlo en el filtro de detección de congelación en ffmpeg

Estoy intentando utilizar el filtro de detección de congelación en ffmpeg.

ffmpeg -i Trial.mp4 -vf "freezedetect=n=-60dB:d=0.5,metadata=mode=print:file=freeze.txt" -map 0:v:0 -f null -

Se utilizó el comando anterior y el resultado dice que no se congela. Pero el vídeo es un vídeo detenido tomado con un móvil.

Si ajusto el nivel de ruido a 0,05, se informan congelaciones.

¿Cómo determinar este valor?

Respuesta1

Puede determinar esto sólo mediante prueba y error.

El filtro calcula la diferencia entre dos fotogramas como la relación entre su suma de diferencias absolutas (TRISTE). En pseudocódigo:

is_frozen(reference, frame) {
    sad = 0
    count = 0
    for plane in planes[frame] {
        sad += sad_of_plane(plane, reference, frame)
        count += width[plane] * height[plane]
    }
    ratio = sad / count
    return ratio <= noise
}

Dado que la diferencia real entre dos fotogramas está determinada por su ruido, dependerá en gran medida del contenido. Tenga en cuenta que incluso si el sujeto no cambió, "ruido" podría significar ruido de la cámara/sensor, que siempre será diferente entre dos fotogramas capturados.

Sólo para contenido generado por ordenador la diferencia entre fotogramas con el mismo sujeto será cero (o muy cercana a cero).

información relacionada