0

我看到在 LUX 中测量像素亮度的算法是(从这里获得

double luminance = r*0.299 + g*0.587 + b*0.114;

我有兴趣了解“蓝色”光谱中给定图片的光强度,而不是纯亮度。如何才能做到这一点?是否会简单地获取相机图像中每个像素的加权“蓝色”值并以某种方式平均/添加它们来解决问题?

谢谢您的意见!

4

2 回答 2

2

亮度是单位面积的强度。

您发布的公式不是关于将红色、绿色和蓝色强度转换为总亮度,反之亦然;它只是对红色、绿色和蓝色亮度进行加权以获得总亮度。您已经获得了蓝色亮度,因此适用于您的相关公式是:

b

或者,如果您愿意:

b*0.114

另一方面,这取决于您要问什么,但它可能在这条路径上的某个地方:

每个像素的强度是该像素的亮度乘以像素的面积。

整个阵列的强度是所有这些单独强度的总和。

整个阵列的亮度是整个阵列的强度除以阵列的总面积,显然这也是微不足道的。

整个房间的亮度是……好吧,大概这里的重点是您假设它与相机阵列的亮度大致相同,因此假设它与最后一个值相同。

整个房间内任何平面的强度是亮度乘以该平面的面积,整个房间的强度是所有这些平面的总和,但这些可能对你不是很有用。

照片的强度就是您拍摄照片时整个相机阵列的强度。这可能比房间的强度更有用。

于 2012-09-20T00:39:33.600 回答
1

@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 之间的值)。但是您的图像可能不在空间中,它可能在颜色空间中,因此您实际上只是获得了一个不存在于标准定义的颜色空间中的值(在某种意义上,您是在构建自己的空间)。YCIE-RGBCIE-RGBsRGB

这给我们带来了另一个重要的问题:我有兴趣了解给定图片的光在“蓝色”光谱中的强度,而不是纯亮度。如果您不准确定义对您来说蓝色光谱是什么,那将毫无意义。正如@abamert 所说,您已经从 RGB 图像中获得了一个 _ blue _ 值。那是一种蓝色,根据sRGB它使用 D65 白点并具有 x=0.15 和 y=0.06(在CIE-XYZ空间中)作为蓝色原色。这更容易计算,因为您已经拥有它。

于 2012-09-20T02:57:08.163 回答