【发布时间】:2011-03-15 12:33:45
【问题描述】:
我原来的问题
我读到将 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
此scientific article 详细介绍了各种灰度技术及其对各种图像的结果,以及对 119 人的主观调查。
但是,当将图像转换为灰度时,为了获得“最佳”艺术效果,几乎可以肯定不会使用这些预定义系数,而是调整每个通道的贡献以产生特定图像的最佳输出。
【问题讨论】:
-
这不是一个真正的编程问题,但我不确定它属于哪个站点......这确实是一个艺术或科学问题。
-
这可能是真的,但我是在编写一个进行灰度转换的函数的上下文中问这个问题的。