以类似于Photoshop中L分量的方式增加图像亮度的公式是什么?

| 例如,我有一个具有以下值的像素:
CGFloat red = 34 // 0 - 255
CGFloat green = 128
CGFloat blue = 190
我想增加亮度,使蓝色为255。 注意:“亮度”是指LAB色彩空间中Photoshop的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的工作方式如何?     
已邀请:
        因此,您想将RGB颜色转换为Lab颜色空间吗?当然可以。 但是,有许多不同的标准都以通用名称“ Lab”为参考。编写算法时,您需要选择一个要使用的算法。 Photoshop特别使用CIELAB D50标准,因此,如果需要精确模拟其处理,则可以使用该标准。 您还需要记住的另一件事是,RGB模型是与设备相关的,这意味着要从RGB转换为Lab,您首先需要从RGB转换为某些与设备无关的绝对色彩空间。 Adobe使用其\“ Adob​​e RGB \”格式执行此操作,但是您可以使用sRGB之类的标准格式。调整过程考虑了RGB颜色的设备相关性,但将颜色转换为与设备无关的颜色。一旦有了这些,您就可以完成将颜色转换为Lab颜色空间的最后一步。 Wikipedia文章在编写转换算法时提供了一些背景信息和有用的公式。这是已经编写了这种转换算法的人。对于MATLAB,您可能可以转换。 根据您的认真程度(可能并非如此),您还可以下载GIMP的源代码,并查看他们如何实现转换算法。他们的软件声称支持Lab空间。 但是,当转换回RGB时要小心。 Lab色彩空间可以表示超出sRGB范围的颜色。即使在Photoshop中,将图像转换回RGB(或CMYK)后,在实验室模式下看到的大多数内容也会被丢弃。 编辑:还值得考虑的是,如果您唯一的目标是在比RGB更能逼近人类色彩感知的色彩空间中使色彩变浅,那么您可能根本不需要大惊小怪。许多应用程序通过转换为HSL或HSV颜色空间来实现此目的。 (Photoshop称为HSV,HSB)。 优点是您可以简单地调整\“ Lightness \”或\“ Value \”值来更改颜色的强度(就像您在Lab色彩空间中调整\“ Luminance \”值一样),但是转换算法要简单得多(并且通常内置在您选择的语言的标准库中)。 例如,有关使用.NET语言编写的转换算法,请参见我对此问题的回答。     

要回复问题请先登录注册