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