基准算法改变感知亮度?
什么是基准算法来改变RGB像素的感知亮度。 如:
如果我有RGB(120,33,213)然后(...使用...(0.299 * R + 0.587 * G + 0.114 * B)....)我得到79.533感知亮度,但我没有可以将同一像素的亮度提高到80,因为有很多可能的值。
我已经搜索了一段时间的解决方案,但无法得到它。 有一些算法可以计算亮度,例如:
确定RGB颜色亮度的公式
但是这些算法是不可逆的。
另外,我不考虑使用HSL或HSV作为正确的方法,除非有人能纠正我?
编辑:使用HSL颜色空间我能够在很大程度上保持颜色的同时控制亮度,但我想知道是否有更好的方法。
谢谢-
你不需要扭转亮度方程,你只需要找出你想要的亮度的比例。
从你的例子:
//target luminance = 80
srcR = 120
srcG = 33
srcB = 213
srcLum = 79.533
destLum = 80
ratio = (destLum / srcLum) = 1.0058717...
destR = (srcR * ratio) = 120.705
destG = (srcG * ratio) = 33.194
destB = (srcB * ratio) = 214.251
你必须决定如何将它们四舍五入以得到int值,但这是一般的想法。 虽然从79.5降到80并没有什么变化,所以你不会看到太多东西。 如果你要到40岁,你最终会得到RGB(60,17,107)。
正如Mark Ransom在下面指出的那样,当你的一个值达到255时,你必须做出选择。 要增加过去那个点的亮度,您要么改变色调或饱和度(或两者)。 他在这里的回答显示了两者之间的差异。
链接地址: http://www.djcxy.com/p/87029.html