Colors 为什么灰度的工作方式是这样的?

Colors 为什么灰度的工作方式是这样的?,colors,rgb,hsl,hsv,Colors,Rgb,Hsl,Hsv,我的原始问题 我读到,要将RGB像素转换为灰度RGB,应该使用 r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11 我还阅读并了解到,g的权重更高,因为人眼对绿色更敏感。实现了这一点,我看到的结果与在Gimp这样的图像编辑器中将图像设置为“灰度”时得到的结果相同 在我读这篇文章之前,我设想将一个像素转换为灰度,将其转换为HSL或HSV,然后将饱和度设置为零(因此,移除所有颜色)。然而,当我这样做的时候,我得到了一个

我的原始问题

我读到,要将RGB像素转换为灰度RGB,应该使用

r_new = g_new = b_new = r_old * 0.3 + g_old * 0.59 + b_old * 0.11
我还阅读并了解到,
g
的权重更高,因为人眼对绿色更敏感。实现了这一点,我看到的结果与在Gimp这样的图像编辑器中将图像设置为“灰度”时得到的结果相同

在我读这篇文章之前,我设想将一个像素转换为灰度,将其转换为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人的主观调查


然而,当将图像转换为灰度时,为了达到“最佳”艺术效果,几乎肯定不会使用这些预定义的系数,但是调整每个通道的贡献,以产生特定图像的最佳输出。

看起来这些系数来自旧的CRT技术,并且不能很好地适应今天的显示器,来自:

系数0.299、0.587和 0.114正确计算的荧光粉为 在引入 1953年NTSC电视台。他们是 仍然适用于计算视频 luma将在下文第节中讨论 11然而,这些系数并不能准确地计算物体的亮度 当代监视器

但是,找不到正确的转换系数


另请参见

关于此主题的有趣文章。。。。“因为人眼无法通过颜色线性检测亮度”


在HSL/HSV中使用
s=0
并转换为RGB将导致
R=G=B
,这与执行
R_old*1/3+G_old*1/3+B_old*1/3
相同

要了解原因,请查看描述HSV->RGB转换的。饱和度
s
将为0,因此
C
X
也将为0。您将以
R\u 1、G\u 1、B\u 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
解决方案或其他两种方案之一(六角锥/双六角锥)


因此,毕竟,使用HSL/HSV只是意味着你必须决定先使用哪个公式,然后再转换为RGB灰度值只是隔离最后一个分量。

尽管这些转换系数存在,但没有任何东西能约束你使用它们。只要每个像素的总强度不变,每个通道的贡献可以是任何值,从0到100%不等

将图像转换为灰度的摄影师使用通道混合器来调整每个通道(RGB或CMYK)的级别。在您的图像中,有许多红色和绿色,因此可能需要(取决于您的意图)使这些通道在灰度强度中比在蓝色中表现得更高

这就是区分“科学”的图像转换和“艺术”的乐队组合的原因


另一个需要考虑的问题是每个波段中值的动态范围,并尝试在灰度图像中保留这些值。例如,增强阴影和/或高光可能需要增加蓝带的贡献。

OK,为了具体回答所问的问题,这是错误的,因为:s=0版本中灰色之间的亮度与原始图像中颜色之间的亮度不匹配。这可以通过花中心的茎(雄蕊?如果我记得三年级的话)明显地表现出来,在s=0的版本中没有那么明显。下面是给定系数的原始推导:另一篇利用s=0方法的伟大文章,尝试制作一个转换为灰度时完全消失的图像:这不是一个真正的编程问题,但我不确定它属于哪个网站。。。这实际上是一个艺术或科学的问题。这可能是真的,但我是在编写一个灰度转换函数的背景下提出这个问题的。