10

Instagram 最近添加了一个 Lux 按钮,它可以为您拍摄的照片自动对比/调平。

我有一堆图片需要以类似的方式自动调平,让这些图片看起来更好看。如果我想对 Imagemagick 使用批处理命令,要使用什么“秘密成分”?我应该坚持对比度设置,还是玩关卡等?

由于我不知道原始图片是否会变暗、变亮、已经形成对比,所以我需要在处理之前分析图片。

因此有2个问题:

  1. 在为 Imagemagick 创建批处理命令时我应该查看哪些设置以始终输出更好看的图片?

  2. 运行批处理并稍后手动恢复“误报”是否有意义(我有大约 50,000 张图片要处理)?

4

2 回答 2

31

执行“自动对比度”的一种简单线性方式是线性拉伸和偏移图像强度。
这个想法是找到拉伸(对比度)和偏移(强度)校正参数,以便在校正后的图像中,第 5 个百分位将映射到 0,而第 95 个百分位将映射到 255。

我的示例是灰度图像。对于彩色图像,您可以转换为具有单个强度通道和 2 个颜色通道(例如 Lab、HSV、YUV 等)的任何颜色空间,并且仅在强度通道上执行此操作。

  1. 创建图像直方图
  2. 找到第 5 个和第 95 个灰度值百分位数(对直方图值使用累积和)。
  3. 在这两个简单的线性方程中求解 和 :和a,其中和分别是第 5 个和第 95 个灰度值百分位数。b
    a*p5+b=0a*p95+b=255p5p95
  4. a对比度b强度校正。
  5. 现在根据等式映射所有灰色像素强度:g'=a*g+b对于所有g=0..255。

当然,您可能希望对百分位数和实际映射使用不同的值。看看什么对你有用。

于 2012-03-18T20:10:22.697 回答
0

对于那些很长时间没有求解线性方程的人(例如我),这里需要Adi Shavit在公式中的答案中的所需参数(在伪代码中) - 我将 and 重命名p5p95and p1p2因为 5 只是一个建议) :

p_div := float(p1) / p2;
b := -255 * p_div / (1 - p_div);
a := (255 - b) / p2;

我不知道是否可以更轻松地完成,但您可以检查一下:

a * p1 + b  -> 0
a * p2 + b -> 255
于 2019-10-16T05:12:38.607 回答