我看到在 LUX 中测量像素亮度的算法是(从这里获得)
double luminance = r*0.299 + g*0.587 + b*0.114;
我有兴趣了解“蓝色”光谱中给定图片的光强度,而不是纯亮度。如何才能做到这一点?是否会简单地获取相机图像中每个像素的加权“蓝色”值并以某种方式平均/添加它们来解决问题?
谢谢您的意见!
亮度是单位面积的强度。
您发布的公式不是关于将红色、绿色和蓝色强度转换为总亮度,反之亦然;它只是对红色、绿色和蓝色亮度进行加权以获得总亮度。您已经获得了蓝色亮度,因此适用于您的相关公式是:
b
或者,如果您愿意:
b*0.114
另一方面,这取决于您要问什么,但它可能在这条路径上的某个地方:
每个像素的强度是该像素的亮度乘以像素的面积。
整个阵列的强度是所有这些单独强度的总和。
整个阵列的亮度是整个阵列的强度除以阵列的总面积,显然这也是微不足道的。
整个房间的亮度是……好吧,大概这里的重点是您假设它与相机阵列的亮度大致相同,因此假设它与最后一个值相同。
整个房间内任何平面的强度是亮度乘以该平面的面积,整个房间的强度是所有这些平面的总和,但这些可能对你不是很有用。
照片的强度就是您拍摄照片时整个相机阵列的强度。这可能比房间的强度更有用。
@abamert 已经给出了正确答案。我正在添加一些细节。
数字成像和视频中的术语luminance
很常见,但不是最佳选择,因为它可能会与光度学术语混淆。一个更好的选择是luma
。OP 链接到的文章正是这种混淆(尽管实际上链接到维基百科上的光度学术语条目,具有讽刺意味的是,它恰好以注释开始,不要与 Luma 混淆)。
LUX
是发光强度的度量单位,除非您使用经过完美校准的设备,使用原始数据并确定实际响应曲线,否则您从像素数据中获得的值不能与此类度量相关。您没有从相机图像中获得 LUX 或 Candles 或任何精确的东西。
有几种颜色模型,每个模型可能有多个颜色空间。您的图像数据采用 RGB 格式,但 RGB 是一种颜色模型,而不是颜色空间。有几个 RGB 颜色空间。
该公式是根据颜色空间中的数据计算 NTSC 颜色空间中定义Y = R*0.299 + G*0.587 + B*0.114
的亮度的标准公式(请注意,Y、R、G 和 B 都是介于 0 和 1 之间的值)。但是您的图像可能不在空间中,它可能在颜色空间中,因此您实际上只是获得了一个不存在于标准定义的颜色空间中的值(在某种意义上,您是在构建自己的空间)。Y
CIE-RGB
CIE-RGB
sRGB
这给我们带来了另一个重要的问题:我有兴趣了解给定图片的光在“蓝色”光谱中的强度,而不是纯亮度。如果您不准确定义对您来说蓝色光谱是什么,那将毫无意义。正如@abamert 所说,您已经从 RGB 图像中获得了一个 _ blue _ 值。那是一种蓝色,根据sRGB
它使用 D65 白点并具有 x=0.15 和 y=0.06(在CIE-XYZ
空间中)作为蓝色原色。这更容易计算,因为您已经拥有它。