如何使用iPhone相机测量房间内可见的蓝光强度?

时间:2012-09-20 00:12:53

标签: iphone objective-c ios camera luminance

我看到用于测量像素的LUX亮度的算法是(obtained from here

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

我很想知道“蓝色”光谱中给定图像光线的强度,而不是纯亮度。如何做到这一点?只需在相机图像中采用每个像素的加权“蓝色”值并以某种方式平均/添加它们就可以了吗?

感谢您的投入!

2 个答案:

答案 0 :(得分:2)

亮度是每个区域的强度。

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

b

或者,如果您愿意:

b*0.114

另一方面,这取决于你的要求,但它可能在这条道路上的某个地方:

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

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

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

整个房间的亮度是......好吧,可能这里的重点是你假设它与相机阵列的亮度大致相同,所以假设它与最后一个值相同

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

图片的强度只是拍摄照片时相机阵列的强度。这可能比房间的强度更有用。

答案 1 :(得分:1)

@abamert已经给出了正确答案。我正在添加一些细节。

数字成像和视频中的术语luminance很常见,但不是最佳选择,因为它可能会与光度学术语混淆。更好的选择是luma。 OP链接的文章确实存在这种混乱(尽管实际上链接到维基百科上的光度术语条目,具有讽刺意味的是,恰好从注释开始不要与Luma混淆)。

LUX是发光强度的度量单位,除非您使用经过完美校准的设备,处理原始数据并且确定知道,否则您从像素数据获得的值无法与此类测量值相关联实际响应曲线。您没有从相机图像中获取LUX或蜡烛或任何精确的内容。

有几种颜色模型,每种模型可能有多个颜色空间。您的图像数据是RGB,但RGB是颜色模型,而不是颜色空间。有几个RGB颜色空间。

公式Y = R*0.299 + G*0.587 + B*0.114是根据Y颜色空间中的数据计算NTSC颜色空间中定义的CIE-RGB亮度的标准公式(请注意Y,R,G和B都是介于0和1之间的值。但是你的图像可能不在CIE-RGB空间,它可能在sRGB颜色空间中,所以你实际上只是得到一个没有标准定义颜色空间的值(你在某些感觉自己构成了自己的空间。)

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