问题描述
我正在尝试编写视频分析软件来检查是否符合 WCAG 2.0 扣押指南。但是,在 definition of 'general flash' 中,它声明了以下内容:
一般闪光被定义为相对亮度的相对变化最大相对亮度的 10% 或更多 (...)
我对“最大相对亮度”的使用感到困惑。没有指定我们在哪个上下文中考虑最大值。它是指 1.0 亮度吗?或者网页中达到的最大亮度?还是别的什么?
我找不到任何说明。我只是假设它指的是 1.0 亮度,但是,如果这个假设是错误的,我的代码会由于不正确的高阈值而在闪光检测中产生假阴性。
抱歉,如果我遗漏了一些明显的东西,或者这里问错了。
解决方法
最大相对亮度只是使用本答案末尾的公式得出的最大亮度。
使用“最大相对亮度”的原因是还有其他颜色空间,但由于这是网络,因此使用了 RGB 颜色空间。 (例如,您可以使用 CMYK 颜色空间并使用不同的计算。但最终结果是相同的,1 表示白色,0 表示黑色)。
10% 最大值是指最大亮度与最小亮度之间的差异(但最大亮度的 10% 作为差异而不是最小值的 10%,因为这会导致更小的差异)。
例如:-
- 如果最亮值的亮度为 0.9,则最暗点的最小亮度为 0.81(0.9 * 10% = 0.09,0.9 - 0.09 = 0.81)。
- 由于第二条规则,尽管方差大于 10%,但以下是可以接受的 - 最亮值 0.99,最暗值 0.8 - 这有大约 20% 的差异,但最暗值的相对亮度为 0.8,所以没问题。
- 如果最亮值的亮度为 0.9,但最暗的亮度为 0.72,那么这将要求每秒闪烁少于 3 次,因为差异为 20% (1 - (0.9 / 0.72) = 0.2 或 20%)
由于以下规则注释,第二个语句是可以的:
一般闪光被定义为一对相对亮度的相对变化为最大相对亮度的 10% 或更多,其中 较暗图像的相对亮度低于 0.80;并且其中“a一对相反的变化”是先增加后减少,或先减少后增加
有一个很好的代码笔解释了相对亮度方程(点 1 到 4):
https://codepen.io/bcdon/full/qBWwWyx
包含,因为您必须使用代码笔包含代码...这是使用 RGB 颜色空间的亮度公式。
L = 0.2126 * R + 0.7152 * G + 0.0722 * B
,
WCAG 2.0 有一个 wiki 页面Relative Luminance:
The relative brightness of any point in a colorspace,normalized to 0 for darkest black and 1 for lightest white.