|
|
1
532
根据您的需要,方法可能会有所不同。以下是计算亮度的3种方法:
[编辑:添加使用命名css颜色的示例,按每个方法排序。] |
|
|
2
331
我认为您正在寻找的是RGB-> Luma 光度/数字 ITU BT.709
数字的 ITU BT.601 (赋予R和B组件更大的权重):
如果您愿意以精度换取性能,则此近似公式有两个:
这些可以通过以下方式快速计算:
|
|
|
3
116
我已经比较了公认答案中的三种算法。我在循环中生成了颜色,其中只使用了大约每400种颜色。每种颜色由2x2像素表示,颜色从最暗到最亮(从左到右,从上到下)排序。 第一张照片- Luminance (relative)
第二张照片- http://www.w3.org/TR/AERT#color-contrast
第三张照片- HSP Color Model
第四幅画- WCAG 2.0 SC 1.4.3 relative luminance 和 contrast ratio 公式(见 @Synchro's 答复 here )
|
|
|
4
111
“已接受”答案不正确且不完整@jive-dadson 和 @EddingtonsMonkey 回答,并表示支持 @nils-pipenbrinck 正在链接或引用错误、无关、过时或已损坏的来源。 简要地:
以下是正确和完整的答案:因为这条线索在搜索引擎中出现的频率很高,我添加这个答案是为了澄清关于这个主题的各种误解。
是光的线性测量,光谱加权用于正常视觉,但不用于光的非线性感知。它可以是一个相对的衡量标准,
Y
比如在CIEXYZ,或者
L
2.
感知亮度
是一种感知属性,它没有“物理”度量。但是,某些颜色外观模型确实具有 ,通常表示为 “Q” 用于感知亮度,与感知亮度不同。 ( 伽马射线
确定可感知的亮度
,首先将gamma编码的RGB图像值转换为线性亮度(
要查找亮度,请执行以下操作:…因为很明显它在什么地方丢了。。。 第一步:将所有sRGB 8位整数值转换为十进制0.0-1.0
第二步:将gamma编码的RGB转换为线性值。例如,sRGB(计算机标准)要求功率曲线约为V^2.2,但“精确”转换为:
第三步:
使用上述函数的伪代码:
要找到可感知的亮度:第四步:
L*是从0(黑色)到100(白色)的值,其中50是感知的“中灰色”。L*=50相当于Y=18.4,换句话说,是一张18%的灰色卡片,代表摄影曝光的中间部分(Ansel Adams V区)。 参考资料:
|
|
|
5
66
对于典型的计算机材料,颜色空间是sRGB。sRGB的正确数字约为0.21、0.72和0.07。sRGB的Gamma是一个复合函数,它近似于1/(2.2)的幂运算。这里是C++的全部内容。
|
|
|
6
14
我建议您选择W3C标准推荐的公式,而不是在这里提到的随机选择公式中迷失方向。 WCAG 2.0 SC 1.4.3 relative luminance contrast ratio 公式。它生成的值适用于评估WCAG合规性所需的比率,如 this page
|
|
|
7
11
我发现 this code |
|
|
8
10
要补充所有其他人所说的话: 所有这些方程在实践中都很有效,但如果需要非常精确,则必须首先将颜色转换为线性颜色空间(应用逆图像gamma),然后对原色进行加权平均,如果要显示颜色- 在深灰色中,ingnoring gamma和doing Right gamma之间的亮度差异高达20%。 |
|
9
8
this formulation for RGB=>HSV 只使用v=MAX3(r,g,b)。换句话说,您可以使用 最大限度 属于(r,g,b)作为HSV中的V。 我在第575页的 Hearn & Baker 这也是他们计算“价值”的方式。
|
|
|
10
5
|
|
|
11
2
|
|
|
12
1
|
|
|
13
1
|
|
|
14
1
Jive Dadson的反gamma公式在Javascript中实现时需要删除半调整,即函数gam_sRGB的返回值需要为return int(v*255);不返回整数(v*255+.5);半调整四舍五入,这可能导致R=G=B上的值过高,即灰色三元组。R=G=B三元组上的灰度转换应产生等于R的值;这是这个公式有效的一个证明。 看见 Nine Shades of Greyscale |
|
|
15
1
接近但明显不同于长期确定的ITU系数。我想知道,对于每个观察者来说,这些系数是否会有所不同,因为我们的眼睛视网膜上可能有不同数量的视锥细胞和视杆细胞,特别是不同类型视锥细胞之间的比例可能会有所不同。
国际电联BT.709:
是的,我大概有正常的色觉。 |
|
|
16
0
HSV的“V”可能就是您所寻找的。MATLAB有一个rgb2hsv函数,前面引用的维基百科文章中充满了伪代码。如果RGB2HSV转换不可行,则精度较低的模型将是图像的灰度版本。 |
|
|
18
0
为了用R确定颜色的亮度,我将RGB系统颜色转换为HSV系统颜色。
在我的脚本中,出于其他原因,我以前使用十六进制系统代码,但您也可以从RGB系统代码开始
|
|
|
19
-1
为清楚起见,需要使用平方根的公式
不
|
|
20
-2
请定义亮度。如果你想知道这种颜色有多接近白色,你可以使用它 Euclidean Distance from(255,255,255) |