gpt4 book ai didi

ios - 查找从相机拍摄的图像的照度值

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:14:37 24 4
gpt4 key购买 nike

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

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

我可以用这段代码得到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. ...

怎么样?有谁知道我该怎么做?或者有更好的方法吗?

最佳答案

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

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

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

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

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

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com