将RGB转换为灰度/强度
将RGB转换为灰度/强度
当从RGB转换为灰度图像时,据说应该应用特定的通道R、G和B权重。这些权重是:0.2989、0.5870、0.1140。
据说这样做的原因是因为人类对这三种颜色的感知/敏感度不同。有时也说这些值用于计算NTSC信号。
然而,我在网上没有找到一个好的参考。这些值的来源是什么?
我在以前一个类似的问题的答案中找到了这个参考资料。它非常有帮助,这个页面有几个示例图像:
《颜色到灰度图像转换的感知评估》,作者是Martin Čadík,发表于2008年《计算机图形学论坛》(Computer Graphics Forum)
这个出版物探讨了几种生成不同结果灰度图像的方法:
- CIE Y
- Color2Gray
- Decolorize
- Smith08
- Rasche05
- Bala04
- Neumann07
有趣的是,它得出的结论是没有普遍适用的最佳转换方法,因为每种方法在输入方面表现得更好或更差也不同。
问题中的具体数字来源于CCIR 601(可以查看维基百科文章)。
如果你用稍微不同的数字/不同的方法将RGB->灰度转换,
在普通电脑屏幕下的正常光照条件下,你几乎看不到任何区别--试试吧。
这里还有一些关于颜色的链接:
维基百科亮度
Bruce Lindbloom 的杰出网站
Colin Ware的书“信息可视化”中关于颜色的第4章,ISBN 1-55860-819-2;
这是一个长链接到books.google.com的访问可能或者可能不会有效
cambridgeincolor:
出色的、写作精良的
“教程,讲述如何使用以概念为重点的视觉方法获取、解释和处理数字照片”
如果你遇到了“线性”VS“非线性”的RGB,
这里有一个关于这个老笔记的一部分。
再说一遍,在实践中你不会看到多大的区别。
### RGB -> ^gamma -> Y -> L*
在颜色科学中,通常的RGB值,如html rgb(10%,20%,30%),
被称为“非线性”的或
伽马校正。
“线性”值被定义为
Rlin = R^gamma, Glin = G^gamma, Blin = B^gamma
其中对于许多PC,伽马是2.2。
通常的R G B有时被写成R' G' B'(R' = Rlin ^(1 / gamma))
(纯粹主义者舌头点击),但是这里我会省略它们。
在CRT显示器上的亮度与RGBlin = RGB ^ gamma成比例,
因此CRT上的50%灰色相当暗:0.5 ^ 2.2 =最大亮度的22%。
(LCD显示器更复杂;
此外,某些显卡会补偿伽马。)
要从RGB获取名为L*
的亮度度量,
首先将R G B除以255,然后计算
Y = .2126 * R^gamma + .7152 * G^gamma + .0722 * B^gamma
这是XYZ颜色空间中的Y
,它是颜色“亮度”的度量。
(实际公式不是完全x^gamma,但接近;
第一次尝试使用x^gamma。)
最后,
L* = 116 * Y ^ 1/3 - 16
“... 希望实现感知均匀性[并]与人类对亮度的感知非常相似。” --
维基百科Lab颜色空间