使用 ffmpeg 实现 Adob​​e Photoshop 的 "Levels" 功能

Implement Adobe Photoshop's "Levels" feature using ffmpeg

在 Adob​​e photoshop 中,我使用了 "Levels" 功能来调整图像的阴影、中间调和高光。我需要一个使用 ffmpeg 的优雅解决方案来实现相同的效果。 ffmpeg 实现将帮助我以编程方式执行操作。

我试过使用 ffmpeg 上可用的色彩平衡滤镜。

ffplay -i input -vf colorbalance=rs=-0.75:gs=-0.75:bs=-0.75:rm=-0.875:gm=-0.875:bm=-0.875:rh=-1:gh=-1:bh=-1

在 photoshop 中,我可以通过以下设置达到预期的效果,

Shadows - 199
Midtones - midpoint
Highlights - 255

颜色级别

使用 colorlevels 滤镜并插入值以匹配 Photoshop:



原创,Photoshop,ffmpeg

ffmpeg -i input.jpg -vf "colorlevels=rimin=199/255:gimin=199/255:bimin=199/255" -frames:v 1 output.jpg

由于您只是直接调整输入黑点,因此您只需调整 *min 选项,如示例所示。

曲线

如果您熟悉 Photoshop 中的曲线,您可以保存预设并使用 curves 滤镜加载 ACV 文件:

ffmpeg -i input.jpg -vf "curves=psfile=file.acv" -frames:v 1 output.jpg