5

Я пытаюсь реализовать то, что было предложено здесь: ffmpeg: адаптивно растянуть контраст

Метод, о котором я подумал:

  1. Разделите каналы L, U и V.
  2. Примените histeq к каналу L.
  3. Рекомбинируйте каналы.

Я новичок в ffmpeg, поэтому я смог сделать 1 и 2, но не уверен, как реализовать # 3. То, что я до сих пор это:

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

Который извлекает L-канал и автоконтрастирует его, но я не уверен, как рекомбинировать его с U- и V-каналами. Может быть, использовать mergeplanes?

1 ответ1

2

Использовать этот:

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  

Фильтр извлечения extractplanes должен извлекать каждый канал (y+u+v [y] [u] [v]), который впоследствии можно комбинировать с объединением mergeplanes .

Обратите внимание, что я явно указал формат вывода как yuv420p, потому что мой материал ввода имеет тот же формат.
Обратите внимание, что я использовал ваши сильные стороны и значения для фильтра histeq , что сделало мои "нормальные" кадры совершенно непригодными. Нельзя сказать, что это не будет работать на плохо отснятом материале. Но даже значение histeq=strength=0.1:intensity=0.5 было на грани удобства использования. Это связано с тем, что histeq является глобальным фильтром и применение к одному каналу не является оптимальным процессом. В любом случае вы можете использовать фильтр curves для отдельных каналов.

Но принцип разделения и слияния такой же, как и выше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .