题
我最初的问题
我读到它是为了将RGB像素转换为Greyscale RGB,应该使用
r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11
我也读了并理解 g
具有更高的体重,因为人眼对绿色更敏感。实现这一点,我看到结果与从GIMP这样的图像编辑器中的图像设置为“灰度”所获得的结果相同。
在阅读本文之前,我想象要将像素转换为Greyscale,将其转换为HSL或HSV,然后将饱和度设置为零(因此,删除所有颜色)。但是,当我这样做时,我的图像输出也完全不同,即使它也缺乏颜色。
如何 s = 0
与我阅读的“正确”方式完全不同,为什么“不正确”?
基于答案和其他研究的持续调查结果
看来要使用哪种亮度系数是一些辩论的主题。各种组合和绿色算法的结果不同。以下是电视标准等领域中使用的一些预设:
- ITU-R BT.601(NTSC?)定义的系数是
0.299r + 0.587g + 0.114b
- ITU-R BT.709(较新)定义的系数为
0.2126r + 0.7152g + 0.0722b
- 等于三分之一的系数,
(1/3)(rgb)
, ,等同于s = 0
这个 科学文章 详细介绍各种灰度技术及其对各种图像的结果,以及对119人的主观调查。
但是,当将图像转换为灰度时,为了达到“最佳”艺术效果,几乎可以肯定不会使用这些预定义系数,而是调整每个通道的贡献来为特定图像产生最佳输出。
解决方案
尽管存在这些转换系数,但没有任何帮助您使用它们。只要每个像素的总强度保持不变,每个通道的贡献就可以是任何东西,范围从0到100%。
将图像转换为灰度的摄影师使用通道混合器来调整每个通道的水平(RGB或CMYK)。在您的图像中,有许多红色和果岭,因此可能需要(根据您的意图),使这些通道在灰度强度中比蓝色更高。
这就是区别图像的“科学”转换与乐队的“艺术”组合。
另一个考虑因素是每个频段的动态值范围,并试图将它们保存在灰度图像中。例如,增强阴影和/或亮点可能需要增加蓝带的贡献。
其他提示
一篇关于此处主题的有趣文章。...“因为人眼无法与颜色线性地检测到亮度”。
使用 s = 0
在HSL/HSV中,转换为RGB导致 R = G = B
, ,和这样做一样 r_old * 1/3 + g_old * 1/3 + b_old * 1/3
.
要了解为什么,看看 Wikipedia页面 描述了转换HSV-> RGB。饱和 s
将是0,所以 C
和 X
也将是。你最终会 R_1,G_1,B_1
存在 (0,0,0)
然后添加 m
到达最终RGB值 (m,m,m)
= (V,V,V)
. 。 HSL相同,结果将是 (m,m,m)
= (L,L,L
).
编辑:好的,尽管这是一个不错的起点,但刚发现以上不是完整的答案。 RGB值都将是相同的 L
或者 V
, ,但这仍然取决于如何 L
和 V
最初是计算的,再次看到 维基百科. 。似乎您用于转换的程序/公式 1/3 * R + 1/3 * G + 1/3 * B
解决方案或其他两个(Hexcone/bi-hexcone)之一。
因此,毕竟,使用HSL/HSV仅意味着您必须确定以前要使用哪种公式,稍后将转换为RGB灰度值只是隔离最后一个组件。