【问题标题】:How can I measure the level of ambient light from an image?如何测量图像中的环境光水平?
【发布时间】:2011-03-18 05:56:06
【问题描述】:

我正在考虑制作一个应用程序,该应用程序使用相机来测量拍摄图像时存在的光量。一些有条件的行为会根据光线的多少而发生 - 即如果看起来很暗,则显示一条消息“看起来像就寝时间”。

我知道,由于曝光等原因,这对于实际存在的光量来说是一个很差的衡量标准,但它不需要非常准确。

我没有图像处理的经验,所以我什至不知道该问什么,或者什么是可行的。这可能吗?是否有任何 C 库可以做这样的事情?

【问题讨论】:

  • 你所说的“来自图像的环境光”是什么意思 图像不会发出环境光,通常它们是环境光的记录!
  • 您最好查看图像的元数据以找到使用的曝光。至少在自动曝光的情况下,典型的相机会根据需要改变快门速度和光圈,以将整体亮度保持在几乎恒定的水平。
  • @Fraser - 对,我希望澄清一点。感谢您对语义的帮助。 @Jerry Coffin - 将查看相机以查看它存储的元数据。谢谢指点。

标签: c objective-c image-processing


【解决方案1】:

首先随机想到,类似于阈值过滤器的东西,用于去除“对象”,从源图像中取出剩下的部分并再次对其进行阈值处理,计算白色和黑色像素,应该让您对亮与暗有一个非常粗略的概念。 Thresholding

【讨论】:

    【解决方案2】:

    可以通过使用相机的已知或假定gamma 将每个像素的每个颜色通道值转换为其强度来进行非常粗略的估计。然后将整个图像的强度相加。

    如果您希望水平接近人类观察到的水平,您将加权绿色通道强度较高而蓝色通道较低(因为我们的眼睛对绿色特别敏感,而对蓝色不敏感)。

    【讨论】:

    • 一个实际的公式在this answer
    • @wirefox:是的,但是请阅读该答案中所有广泛的 cmets。
    【解决方案3】:

    如果需要非常准确,您应该考虑使用一些回归技术,例如最小二乘法(特别是偏最小二乘法)。使用这些方法,您有一组训练数据(多次参考),它会比较和插值以找到一天中时间的近似值。

    如果不需要那么精确,您可以通过简单地计算与白色/黑色的平均像素距离来获得一个很好的近似值。如果相机具有自动曝光功能,您也可以将其考虑在内。

    【讨论】:

      猜你喜欢
      • 2020-09-05
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-02
      • 2012-10-20
      相关资源
      最近更新 更多