我正在尝试实现这里的建议:ffmpeg:自适应拉伸对比度
我想到的方法是:
- 分离 L、U 和 V 通道。
- 将 histeq 应用于 L 通道。
- 重新组合频道。
我是 ffmpeg 的新手,所以我可以做到 1 和 2,但不确定如何实现 #3。到目前为止,我所做的是:
ffmpeg -i in.mkv -vf extractplanes=y,histeq=strength=0.3:intensity=1 out.mkv
它提取 L 通道并自动对比它,但我不确定如何将其与 U 和 V 通道重新组合。也许使用mergeplanes
?
答案1
用这个:
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
也可以使用过滤器单独定位渠道。
但分裂与合并原则同上。