解决方案
在问题中的特定数字是从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标准值不是现代显示器。
这些价值观的来源是什么?
发布的系数的“来源”是 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?