我最初的问题

我读到它是为了将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)。在您的图像中,有许多红色和果岭,因此可能需要(根据您的意图),使这些通道在灰度强度中比蓝色更高。

这就是区别图像的“科学”转换与乐队的“艺术”组合。

另一个考虑因素是每个频段的动态值范围,并试图将它们保存在灰度图像中。例如,增强阴影和/或亮点可能需要增加蓝带的贡献。

其他提示

一篇关于此处主题的有趣文章。...“因为人眼无法与颜色线性地检测到亮度”。

http://www.scantips.com/lumin.html

看来这些系数来自旧的CRT技术,并且不太适应当今的显示器 颜色常见问题解答:

系数为0.299、0.587和0.114适当计算的亮度,适用于1953年在NTSC电视引入时具有现代磷光器的监测器。它们仍然适合在下面的第11节中讨论。但是,这些系数没有准确地计算这些系数。当代监视器的亮度。

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

也可以看看 RGB到单色转换

使用 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,所以 CX 也将是。你最终会 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, ,但这仍然取决于如何 LV 最初是计算的,再次看到 维基百科. 。似乎您用于转换的程序/公式 1/3 * R + 1/3 * G + 1/3 * B 解决方案或其他两个(Hexcone/bi-hexcone)之一。

因此,毕竟,使用HSL/HSV仅意味着您必须确定以前要使用哪种公式,稍后将转换为RGB灰度值只是隔离最后一个组件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top