5

我有一张照片的灰度图像。我已经确定图像的某些部分照明不足,并且亮度 Y = 0.8 的像素实际上应该调整为 90% 灰度,即,该像素的亮度应为 0.9。我的问题是如何缩放附近的其他像素? 我很确定将所有亮度乘以 9/8 是错误的,因为我隐约记得听说为了看起来均匀,缩放必须是非线性的。但是我很难找到一个能让我取得进步的方程式。(当然,我实际上正在编写一个程序来对大量照片进行这种调整。)

我的像素来源是 pbmplus PGM 格式,手册页上说:

每个灰度值都是一个与像素强度成比例的数字,由 CIE Rec. 调整。709 伽玛传递函数。(该传递函数指定 2.2 的伽马数,并且具有小强度的线性部分)。因此,零值是黑色的。Maxval 的值表示 CIE D65 白色和图像中最强烈的值以及该图像可能与之比较的任何其他图像。

如果我能更好地理解这一点,我可能会更好地了解如何进行。

我发现了一个有关制作亮度均匀图像的相关问题。


感谢 Shmoopty 让我走上正轨。我接受了你的回答,然后添加了一些信息。

4

1 回答 1

6

您可能需要伽玛校正,这将保持真正的黑色和真正的白色正确,同时弯曲两者之间的值。

当输入在 (0.0, 1.0) 范围内时,伽马调整公式为:

output = pow( input, gamma )

...gamma当小于 1.0 时会变亮,当高于 1.0 时会变暗。

要将 0.8 推高到 0.9,您需要计算log(0.9)/log(0.8)得到0.4722的 gamma 。

请注意,这是非常多的公式之一——它是数学上最简单的,将黑色和白色保留为独特的颜色(有些人认为这很重要)——但是没有一个正确的公式可以给你什么是“真实的”。


附录:我验证了伽马校正可以应用于已经伽马编码的值。Markdown 中的数学很难记下来,但关键的代数定律是

(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a

如果您应用此定律,您可以确定 gamma 校正通勤,因此可以将 gamma 校正应用于已校正的值。——NR

于 2009-12-15T02:47:58.070 回答