主题:  请教RGB转化为灰度模式,以及饱和度调节的算法

萝卜.net

职务:版主
等级:3
金币:26.4
发贴:943
#12007/1/28 15:27:58
今天用photoshop的时候发现,将图像转换为灰度模式,得到的效果和将图像用饱和度调节到0的效果不同。如图1

进一步发现,用饱和度调节的时候,亮度和饱和度相同,色相不同的色彩,将其饱和度降至0,得到的灰度是相同的。饱和度降低和去色功能效果一致。
但是转换为灰度模式,却发现不同色相,相对应的灰阶不同,特别是饱和度较高更加明显。比如蓝、品、红色相转换为灰度就会偏深,而黄、绿、青色相转换后就偏浅。如图2
又发现,将图像转化为LAB模式后,将AB通道隐藏,得到L通道的效果和灰度模式相同。

这是为什么?photoshop是不是在先将图像转换为LAB后,保留L通道就得到了灰度模式?那么RGB到L通道的算法和饱和度改变的算法有什么区别?

图1

图片如下:


图2

图片如下:



极端个人主义者

职务:普通成员
等级:3
金币:7.0
发贴:416
#22007/1/28 17:12:57
具体的算法不知道。
关文涛写的书里面提到灰度和明度不是一回事,但他没有深入下去讲怎么个不是一回事法。一个美国的ps专家在她的书里面讲到把彩色图像转化为黑白图像时写道:RGB转换为灰度的设置大约是将30%的红通道,59%的蓝通道,11%的绿通道值混合成为灰度图。但奇怪的是她并没有提到去色命令,我试了一下,去色命令和饱和度为零时的情况是一样的,这就证明它们的算法是一样的。回到关文涛将的那句灰度和明度的区别,这大概就是区别的所在。
另外,lab模式的L通道和转为灰度并不是完全一样的,有时候某个通道有杂色,那么灰度的图就会因为刚才那个公式而出现相应的杂色,而L通道时没有的。

图片如下:

比较三张图,可以看到灰度模式最暗对比最强,lab亮度比较高对比不那么强,去色也比较暗对比比较小。总结起来我也说不出个所以然,希望有行家指点。

编辑历史:[此帖最近一次被 guanyang 编辑过(编辑时间:2007-01-28 17:18:10)]


萝卜.net

职务:版主
等级:3
金币:26.4
发贴:943
#32007/1/28 22:06:56
谢谢guanyang的回复,你的这几条信息提醒了我:

1.RGB转换为灰度的设置大约是将30%的红通道,59%的蓝通道,11%的绿通道值混合成为灰度图
这种算法我猜测是用色彩心理学测量得到的.不同的色相给人的明度感的确不同.但具体在RGB色阶上的换算还需要讨论.

2.lab模式的L通道和转为灰度并不是完全一样的
又试了一下,发现lab的L通道表现要比灰度浅,但是第一条所说的色相的比例是接近的,估计AB通道的隐藏多少造成了损失.估计灰度和明度相关,但不完全一致,灰度也要受AB通道影响.

3.去色命令和饱和度为零时的情况是一样的
这和我的结论一致.这个算法比较容易猜测,我猜是RGB三个通道最高和最低的数值的平均值,就等于去色(或去饱和度)之后的灰阶

欢迎其他朋友参与讨论



晶林树

职务:版主
等级:5
金币:20.0
发贴:718
#42007/1/29 6:55:40
去色和饱和度为0只是保留了HSB的B值.
而转灰度及LAB模式的L通道是保留了L值,算法也就是 305911.在PS中渐变影射也是基于灰度的映射.
我想是否可以这样理解:HSB是平面B是半径,同一半径B值当然相同.LAB是在HSB的平面上有加了一个L轴.
以上纯属个人理解



萝卜.net

职务:版主
等级:3
金币:26.4
发贴:943
#52007/1/29 12:15:02
gaoxiguo在上个帖子中说
引用:
去色和饱和度为0只是保留了HSB的B值.
而转灰度及LAB模式的L通道是保留了L值,算法也就是 305911.在PS中渐变影射也是基于灰度的映射.
我想是否可以这样理解:HSB是平面B是半径,同一半径B值当然相同.LAB是在HSB的平面上有加了一个L轴.
以上纯属个人理解

谢谢晶晶的回复。
第一,不知道你所说的饱和度为0是保留了HSB的B值具体是怎么做到的?我理解HSB只是色彩的表达方法,并非特定的色彩模式或者色彩空间。因为HSB表达方法非常直观,便于理解,因此在配色的时候常用它来作为调色方法。但是色彩最终输出的时候,要定义色彩模式,或者是RGB,或者是CMYK,或者是LAB,却没有HSB色彩模式。因此在ps的模式子菜单也没有HSB项。所以,HSB不能作为单独的通道输出,也就不能像RGB和LAB一样可以隐藏和显示某通道了。
第二,目前主流的色立体理论是建立在孟塞尔色立体的基础上修正完善的。一般用半径代表饱和度S,用圆周代表色相H,用高度代表亮度B。



萝卜.net

职务:版主
等级:3
金币:26.4
发贴:943
#62007/1/29 12:36:52
今天在网上看到了懵懂斋的文章,不愧是ps专家,对我启发很大。这里我引入了一个例子:


先做一个全色相的渐变

图片如下:



然后增加一个灰阶垂直渐变,图层模式为亮度

图片如下:



这里显示的色谱,不仅有全色相,更显示了不同色相的亮度对比,并且有明显的分界线。
懵懂斋的解释说,RGB的加色混合中,间色要比被混合的原色亮度高。

这样,就有两个因素参与色相的灰度运算
1.不同原色的明度比例:R:G:B=30:59:11
2.RGB混合后,得到的间色要比被混合的明度高。



萝卜.net

职务:版主
等级:3
金币:26.4
发贴:943
#72007/1/29 12:43:02
貌似已经有了答案,见下贴。我还再研究。
bbs.chinaddu.com/thread-396818-1-1.html



晶林树

职务:版主
等级:5
金币:20.0
发贴:718
#82007/1/29 23:39:38
孟塞尔色立体中明度是轴向值,可感觉随饱和度的增减明亮度也有变化, 便把饱和度偷换了.在PS中明度B亮度L一直搞不太清楚

图片如下:

图片如下:

图片如下:

图片如下:



萝卜.net

职务:版主
等级:3
金币:26.4
发贴:943
#92007/1/30 9:44:29
我理解,色相饱和度工具的明度(L)和HSB色彩表示法的B是两个概念。
色相饱和度工具的数值都是相对的。比如L,范围从-100到100,100是白,-100是黑,0是原色彩。不同色彩L的单位跨度是不同的。
而HSB的B是绝对的。每个色彩都有独立的B值。