当从 RGB 转换为灰度时,据说应该对 R、G 和 B 通道应用特定的权重。这些权重是:0.2989、0.5870、0.1140。

据说这是因为人类对这三种颜色的感知/感受不同。有时也有人说这些是用于计算 NTSC 信号的值。

但是,我在网上没有找到这方面的良好参考。这些价值观的来源是什么?

另请参阅之前的这些问题: 这里这里.

有帮助吗?

解决方案

在问题中的特定数字是从CCIR 601(见下面的维基百科链接)。

如果您转换RGB - >灰度略有不同的数字/不同的方法, 你不会看到一个正常的电脑屏幕上的所有太大的区别 在正常照明条件下 - 尝试

下面是一般彩色一些更多的链接:

亮度

的布鲁斯Lindbloom 优秀网站

书中由Colin洁具,“信息可视化”,ISBN上彩色章4 1-55860-819-2; 这漫长的链接洁具在 books.google。 COM 可以或可以不工作

cambridgeincolor : 优秀的,写得很好 “关于如何获得教程,解释和处理数码照片 使用视觉导向方法,强调在概念过程“

如果你碰上“线性”与“非线性” RGB, 这里是一个旧注的一部分,对自己这一点。 重复,在实践中,你不会看到太大的区别。


RGB - > ^γ - >ý - > L *

在色彩学,公共RGB值,如HTML RGB(10%,20%,30%), 被称为“非线性”或 伽马校正的。 “线性”的值被定义为

Rlin = R^gamma,  Glin = G^gamma,  Blin = B^gamma

其中伽马为2.2的许多个人电脑。 通常的R G B有时写为R 'G' B '(R'= RLIN ^(1 /伽马)) (较真舌头点击),但在这里我会掉落”。

在CRT显示器上的亮度正比于RGBlin = RGB ^γ, 所以在CRT 50%灰色是很暗:0.5 ^ 2.2 = 22最大亮度的%。 (LCD显示器更为复杂; 此外,某些图形卡补偿伽马。)

要得到亮度的来自RGB称为L*措施, 通过255第一除法R G B,并计算

Y = .2126 * R^gamma + .7152 * G^gamma + .0722 * B^gamma

这是在Y XYZ色空间;它是彩色的“亮度”的度量。 (真正的公式是不完全的x ^γ,但接近; 坚持使用的x ^伽马用于第一通。)

最后,

L* = 116 * Y ^ 1/3 - 16
     

“...渴望的知觉均匀性[和]密切亮度的人类感知相匹配。” -   的 Lab颜色空间

其他提示

我发现,此出版物在答案参考先前的类似的问题。这是非常有益的:

http://cadik.posvete.cz/color_to_gray_evaluation/

它显示了不同的方法“吨”与不同的结果,以产生灰度图像!

下面有一些代码在C转换RGB为灰度。 用于RGB到灰度级转换的实际权重是0.3R + 0.6G + 0.11B。 这些权重的arent绝对关键的,所以你可以和他们一起玩。 我已经让他们0.25R + 0.5G + 0.25B。它产生一个稍深的图像。

注意:下面的代码假定XRGB 32位像素格式

unsigned int *pntrBWImage=(unsigned int*)..data pointer..;  //assumes 4*width*height bytes with 32 bits i.e. 4 bytes per pixel
unsigned int fourBytes;
        unsigned char r,g,b;
        for (int index=0;index<width*height;index++)
        {
            fourBytes=pntrBWImage[index];//caches 4 bytes at a time
            r=(fourBytes>>16);
            g=(fourBytes>>8);
            b=fourBytes;

            I_Out[index] = (r >>2)+ (g>>1) + (b>>2); //This runs in 0.00065s on my pc and produces slightly darker results
            //I_Out[index]=((unsigned int)(r+g+b))/3;     //This runs in 0.0011s on my pc and produces a pure average
        }

检查出的颜色FAQ 这些信息。这些值来自我们在显示器使用RGB值的标准化。实际上,根据颜色常见问题解答,您所使用的值是过时的,因为他们是和用于原始NTSC标准值不是现代显示器。

这是一篇关于如何得出这些数字(或类似数字)的论文:

https://web.archive.org/web/20160303201512/http://www.cis.rit.edu/mcsl/research/broadbent/CIE1931_RGB.pdf

这些价值观的来源是什么?

发布的系数的“来源”是 NTSC 规范,可以在 雷克601电视的特点.

“最终来源”是 CIE 大约 1931 年关于人类色彩感知的实验。人类视觉的光谱响应并不均匀。实验导致基于感知的三刺激值的加权。我们的 L、M 和 S 锥体1 对我们分别识别为“红色”、“绿色”和“蓝色”的光波长敏感,这就是三色原色的来源。2

线性光3 sRGB(和 Rec709)的光谱权重为:

* 0.2126 + G * 0.7152 + B * 0.0722 = 是

这些特定于 sRGB 和 Rec709 色彩空间,旨在表示计算机显示器 (sRGB) 或 HDTV 显示器 (Rec709),并在 ITU 文件中详细介绍 雷克709 并且 BT.2380-2 (10/2018)

脚注 (1) 视锥细胞是眼睛视网膜的颜色检测细胞。
(2) 然而,所选择的三色刺激波长并不位于每种视锥细胞类型的“峰值”,而是选择三色刺激值,使得它们对特定视锥细胞类型的刺激显着多于其他视锥细胞类型,即刺激的分离。
(3) 在应用系数之前,您需要对 sRGB 值进行线性化。我在中讨论这个 这里是另一个答案。

这些值从因人而异,尤其是人谁是色盲。

是所有这真的必要,人类感知和CRT VS LCD会有所不同,但R G B强度不,为什么不L = (R + G + B)/3并设置新的RGB到L,L,L?

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