ios - 查找从相机拍摄的图像的照度值
<p><p>我有一个应用程序可以计算给定照片的照度。</p>
<p>我的问题是:<code>我找不到计算这个照度指数(以勒克斯为单位)的方法</code></p>
<p>我可以用这个代码得到<code>luminosity</code>:</p>
<pre><code>UIImage* image = ;
unsigned char* pixels = ;
double totalLuminance = 0.0;
for(int p=0;p<image.size.width*image.size.height*4;p+=4) {
totalLuminance += pixels*0.299 + pixels*0.587 + pixels*0.114;
}
totalLuminance /= (image.size.width*image.size.height);
totalLuminance /= 255.0;
NSLog(@"Image.png = %f",totalLuminance);
</code></pre>
<p> <a href="http://b2cloud.com.au/tutorial/obtaining-luminosity-from-an-ios-camera" rel="noreferrer noopener nofollow">Source</a> </p>
<p>但结果在 <code>0 和 1</code> 之间,我想我不能用 <code>lux</code> 中的 <code>illuminance</code> 计算</p>>
<p>寻找堆栈溢出的答案我找到了这个答案 <a href="https://stackoverflow.com/a/2720635/839049" rel="noreferrer noopener nofollow">https://stackoverflow.com/a/2720635/839049</a>女巫给了我一个方向,但我不知道如何进行,因为我不知道如何处理曝光。</p>
<blockquote>
<p>.. you can just ignore the pixel data and just use the exposure information as a light meter. ...</p>
</blockquote>
<p>怎么样?有谁知道我该怎么做?
还是有更好的方法?</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>如果你从 Exif 数据中知道曝光值,那么总的场景照度可以计算为</p>
<pre><code>pow(2, Exposure)*(0.3 * Calibration);
</code></pre>
<p>不幸的是,校准取决于您所成像场景的物理特征。如果您有很多深色、低反射率的物体,则必须将常数设置得更高。</p>
<p>通常,曝光计算得出的结果是,您从公式中获得的平均照度,即所有 Y 值的总和除以像素数,约为 0.5(但这取决于相机的“大脑”:一些相机将场景划分为“区域”并对每个区域应用不同的权重,例如,即使这意味着使边缘变暗,它们也会尝试在中心区域获得 0.5;最新的相机集成了对比度值,以便从他们推断为“感兴趣的区域”)。</p>
<p>这意味着您的图像将始终被“缩放”,除非您以某种方式指示相机以固定速度拍照并停止设置,而不以任何方式进行补偿。如果这样做,您将能够使用平均像素亮度来确定总表观照度。</p>
<p>不过,您始终必须使用已知仪表校准结果。</p></p>
<p style="font-size: 20px;">关于ios - 查找从相机拍摄的图像的照度值,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/11563182/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/11563182/
</a>
</p>
页:
[1]