ffmpeg: адаптивное растяжение контраста

ffmpeg: адаптивное растяжение контраста

Рассмотрим (цветное) видео, записанное в плохих условиях. Самые яркие пиксели его кадров значительно ниже чистого белого, самые темные — значительно выше чистого черного. Можно ли растянуть контрастность каждого кадра ближе к полному диапазону яркости, как аудиокомпрессор/ограничитель? Можно ли это сделать в ffmpeg, используя некоторые из его многочисленных фильтров?

Конечно, если просто сжать самые яркие значения каждого кадра до белого, а самые темные до черного, экспозиция будет дергаться, как будто снято в 1910 году. Насколько растянутькаждыйКонтраст кадра должен зависеть от самых ярких и самых темных значенийокружающийкадров, вероятно +-10 секунд.

Можно было бы извлечь все кадры, получить белые и черные точки каждого кадра с помощью imagemagick, сохранить их в массиве, сгладить массив, снова растянуть контраст каждого кадра с помощью imagemagick и перестроить видео. Но это выглядит определенно средневековым.

решение1

Theхистекблизко к тому, что вам нужно. Но вы также можете посмотреть на различные разновидности фильтров LUT, а также lut3d.

Фильтры lut более настраиваемы, поскольку вы можете фактически посмотреть на кадр и определить, какие значения использовать. Более того, если есть большая дисперсия в уровнях яркости входного материала, то есть, ви-ви-виз, выход может дрожать при применении коррекции "по кадру". Применение одинаковой силы коррекции ко всем кадрам даст более плавный результат.

Связанный контент