如何计算具有相同感知亮度的RGB值
问题描述:
我试图用相同的感知亮度生成RGB颜色。如何计算具有相同感知亮度的RGB值
函数R * 0.2126 + G * 0.7152 + B * 0.0722被称为计算给定RGB颜色的感知亮度(或等效灰度颜色)。
假设我们使用区间[0,1]的所有RGB值,我们可以计算出以下:
- 黄色= RGB(1,1,0)=>亮度= 0.9278
- 蓝色= RGB(0,0,1)=>亮度= 0.0722
所以,为了使黄色的色调与蓝色一样暗淡,我可以简单地对每个RGB执行这种简单的计算组件:
- dim_yellow =黄色* 0.0722/0.9278
但是,这样做相反的事时,因而“缩放”向上蓝色到相同的感知亮度为原始黄色,B成分明显超过1,这无法显示在电脑屏幕上。
我想从多余的B组件中缺失的亮度可以“重新分配”到R和G组件,伪造更亮的蓝色。那么计算这些最终RGB值的最佳一般方法是什么?
我知道HSL和HSV,但他们没有做什么你建议。具有完全饱和度和值的蓝色色调仍然会看起来是“更暗”或“更暗淡”,然后是具有完全饱和度和值的黄色色调。所以你的答案不能解决我的问题 – Askaga
你是否尝试过像CIELAB这样的非线性空间? –