计算亮度时的常数k是多少



我想用RGB值计算图像的亮度,但公式中有一个常数k,我不知道它是什么,这是文档中的公式:

"在计算亮度(L(时,CIE Y乘以常数值"k",其中k可以是相机的常数,也可以是基于场景中选定区域的测量值为场景确定的。

L=k*(02127红色+07151绿色+0722*蓝色((cd/m²(

这是指向文档的链接:https://faculty.washington.edu/inanici/Publications/LRTPublished.pdf强调文本

简短回答

你把一些只针对一个名为";"光球";并且该数学不适用于一般亮度使用。

完整答案

你说:

使用RGB值计算图像的亮度

你是什么意思?某个给定像素的亮度?或者RMS平均亮度?或

AND:您的图像位于哪个颜色空间(个人资料(?

我将假设你的图像是sRGB,每像素8位。但它可能是P3或Adobe98,或其他任何数量的。。。我要展示的数学是sRGB。

1( 转换为浮点

每个8位0-255 sRGB颜色通道必须转换为0.0-1.0

let rF = sR / 255.0;
let gF = sG / 255.0;
let bF = sB / 255.0;

2( 转换为线性

转移曲线aka";γ";必须删除。对于sRGB;准确的";方法是:

function sRGBtoLin(chan) {
return (chan > 0.04045) ? Math.pow(( chan + 0.055) / 1.055, 2.4) : chan / 12.92
}

3( 计算亮度

现在,将每个线性化的通道乘以适当的系数,并将它们相加以获得亮度。

let luminance = sRGBtoLin(rF) * 0.2126 + sRGBtoLin(gF) * 0.7152 + sRGBtoLin(bF) * 0.0722;

奖金:安迪的堕落和肮脏版本

这里有一个替代方案,它仍然非常准确,但更简单,性能更好。将每个通道提高到2.2的幂,然后乘以系数,求和:

let lum = (sR/255.0)**2.2*0.2126+(sG/255.0)**2.2*0.7152+(sB/255.0)**2.2*0.0722;

如果您还有其他问题,请告诉我。。。

相关内容

  • 没有找到相关文章

最新更新