OGeek|极客世界-中国程序员成长平台

标题: ios - 查找从相机拍摄的图像的照度值 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 15:00
标题: ios - 查找从相机拍摄的图像的照度值

我有一个应用程序可以计算给定照片的照度。

我的问题是:我找不到计算这个照度指数(以勒克斯为单位)的方法

我可以用这个代码得到luminosity:

UIImage* image = [UIImage imageNamed"image.png"];
unsigned char* pixels = [image rgbaPixels];
double totalLuminance = 0.0;
for(int p=0;p<image.size.width*image.size.height*4;p+=4) {
  totalLuminance += pixels[p]*0.299 + pixels[p+1]*0.587 + pixels[p+2]*0.114;
}
totalLuminance /= (image.size.width*image.size.height);
totalLuminance /= 255.0;
NSLog(@"Image.png = %f",totalLuminance);

Source

但结果在 0 和 1 之间,我想我不能用 lux 中的 illuminance 计算

>

寻找堆栈溢出的答案我找到了这个答案 https://stackoverflow.com/a/2720635/839049女巫给了我一个方向,但我不知道如何进行,因为我不知道如何处理曝光。

.. you can just ignore the pixel data and just use the exposure information as a light meter. ...

怎么样?有谁知道我该怎么做? 还是有更好的方法?



Best Answer-推荐答案


如果你从 Exif 数据中知道曝光值,那么总的场景照度可以计算为

pow(2, Exposure)*(0.3 * Calibration);

不幸的是,校准取决于您所成像场景的物理特征。如果您有很多深色、低反射率的物体,则必须将常数设置得更高。

通常,曝光计算得出的结果是,您从公式中获得的平均照度,即所有 Y 值的总和除以像素数,约为 0.5(但这取决于相机的“大脑”:一些相机将场景划分为“区域”并对每个区域应用不同的权重,例如,即使这意味着使边缘变暗,它们也会尝试在中心区域获得 0.5;最新的相机集成了对比度值,以便从他们推断为“感兴趣的区域”)。

这意味着您的图像将始终被“缩放”,除非您以某种方式指示相机以固定速度拍照并停止设置,而不以任何方式进行补偿。如果这样做,您将能够使用平均像素亮度来确定总表观照度。

不过,您始终必须使用已知仪表校准结果。

关于ios - 查找从相机拍摄的图像的照度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563182/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4