【发布时间】:2011-09-22 15:00:56
【问题描述】:
例如,我有一个具有这些值的像素:
CGFloat red = 34 // 0 - 255
CGFloat green = 128
CGFloat blue = 190
我想增加亮度,使蓝色为 255。 注意:“亮度”是指 Photoshop 在 LAB 色彩空间中的 L 分量。看图片!
必须有一个特殊的公式来计算增加亮度的 RGB 值,因为 R G B 值是以非线性方式修改的!
证明:我在 Photoshop 中进行了测试并创建了相同的颜色,然后打开颜色选择器进行检查:
然后我激活了 LAB 颜色空间的 L 分量,它控制亮度(至少这是我在说的 - 我的意思是由 L 分量控制的亮度。猜猜那是亮度)。
所以在激活 L 的情况下,我向上拖动左侧的滑块直到 B 达到 255:
现在读取生成的 R G B 值:
CGFloat newRed = 112 // 0 - 255
CGFloat newGreen = 188
CGFloat newBlue = 255
它们之间的区别是:
newRed - red = +78
newGreen - green = +60
newBlue - blue = +65
百分比是:
red shift: +38.42%
green shift: +29.55%
blue shift: +32.01%
这与从 R G B 计算亮度的已知公式不对应,该公式接近 luminance = (red * 0.3) + (green * 0.6) + (blue * 0.1)。
显然,它们已以非线性方式移动。
有没有一种已知的方法来计算 newRed、newGreen、newBlue 的红色、绿色、蓝色,其方式与 Photoshop 的计算方式相似吗?
【问题讨论】:
标签: math image-processing formula luminance