• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 15:00:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap