我有一张照片的灰度图像。我已经确定图像的某些部分是欠发光的,并且具有亮度Y = 0.8的像素实际上应该被调整为90%灰度,即该像素应该被赋予亮度0.9。我的问题是如何缩放附近的其他像素?我很确定将所有亮度乘以9/8是错误的,因为我依稀记得听到这个以便看起来均匀,缩放必须是非线性的。但我很难找到一个可以让我取得进步的等式。 (当然,我实际上正在编写一个程序来对很多照片进行调整。)
我的像素来源是pbmplus PGM格式,手册页上写着:
每个灰度值是与强度成比例的数字 像素,由CIE Rec调整。 709伽马传递函数。 (那 传递函数指定伽马数为2.2并具有线性 小强度部分)。因此,零值为黑色。 Maxval的值表示CIE D65白色和最强的值 在图像和图像可能比较的任何其他图像。
如果我更好地理解这一点,我可能会更好地了解如何继续。
我在making an image of uniform brightness上找到了相关问题。
感谢Shmoopty让我走上正轨。我接受了你的回答然后添加了一些信息。
答案 0 :(得分:6)
你可能想要gamma correction,它会保持真正的黑色和真正的白色正确,同时弯曲它们之间的值。
当输入在范围(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的伽玛值。
请注意,这是很多公式中的一个 - 它在数学上最简单,将黑色和白色保留为独特的颜色(有些人会认为很重要) - 但是没有一个正确的公式可以给出你是什么“真实”。
附录:我确认伽马校正可以应用于已经进行了伽马编码的值。在降价时很难记下数学,但关键的代数定律是
(y**a)**b == y**(a*b) == y**(b*a) == (y**b)**a
如果您应用此法律,您可以确定伽马校正通勤,因此可以将伽马校正应用于已校正的值。 -NR