确定RGB颜色亮度的公式

我正在寻找某种公式或算法来确定给定RGB值的颜色的亮度。 我知道它不能像将RGB值加在一起那样简单,并且有更高的总和更亮,但我对于从何处开始感到不知所措。


你的意思是亮度? 感知亮度? 亮度?

  • 亮度(某些色彩空间的标准):( (0.2126*R + 0.7152*G + 0.0722*B) [1]
  • 亮度(感知选项1):( (0.299*R + 0.587*G + 0.114*B) [2]
  • 亮度(感知选项2,计算较慢): sqrt( 0.241*R^2 + 0.691*G^2 + 0.068*B^2 )sqrt( 0.299*R^2 + 0.587*G^2 + 0.114*B^2 ) (感谢@MatthewHerbst)[3]

  • 我认为你要找的是RGB - > Luma转换公式。

    光度/数字ITU BT.709:

    Y = 0.2126 R + 0.7152 G + 0.0722 B
    

    数字国际电联BT.601(给予R和B组件更多权重):

    Y = 0.299 R + 0.587 G + 0.114 B
    

    如果你愿意交换性能的准确性,这个有两个近似公式:

    Y = 0.33 R + 0.5 G + 0.16 B
    
    Y = 0.375 R + 0.5 G + 0.125 B
    

    这些可以快速计算

    Y = (R+R+B+G+G+G)/6
    
    Y = (R+R+R+B+G+G+G+G)>>3
    

    我已经在接受的答案中比较了三种算法。 我在周期中生成颜色,只使用大约每400种颜色。 每种颜色都由2×2像素表示,颜色从最黑到最浅(从左到右,从上到下)排序。

    第一张照片 - 亮度(相对)

    0.2126 * R + 0.7152 * G + 0.0722 * B
    

    第二张照片 - http://www.w3.org/TR/AERT#color-contrast

    0.299 * R + 0.587 * G + 0.114 * B
    

    第3张图片 - HSP颜色模型

    sqrt(0.299 * R^2 + 0.587 * G^2 + 0.114 * B^2)
    

    第4张照片 - WCAG 2.0 SC 1.4.3相对亮度和对比度公式(请参阅@ Synchro的答案)

    根据一行中的颜色数量,图案有时会在第1张和第2张图片上出现。 我从未在第3或第4算法的图片上发现任何图案。

    如果我不得不选择,我会选择3号算法,因为它更容易实现,比第四个算法快33%。

    感知亮度算法比较

    链接地址: http://www.djcxy.com/p/15259.html

    上一篇: Formula to determine brightness of RGB color

    下一篇: Extract few substrings from one string using a single regex