【问题标题】:Check Contrast of captured photos检查拍摄照片的对比度
【发布时间】:2015-10-12 03:44:13
【问题描述】:

我有关于 iOS 相机功能的入门级问题。为具有照片提交功能的应用程序工作,同时我需要检查照片的对比度以检查照片的清晰度。如果不在指定范围内,我将通过警报再次拍照。我正在过滤过去几个小时的 Google,但仍在搜索栏上,尚未找到任何有用的东西来检查照片的对比度。

【问题讨论】:

  • 我认为以前没有这样做过
  • 你尝试获取亮度或对比度
  • 如果可能的话,我需要对比度和亮度

标签: ios objective-c


【解决方案1】:

由于您正在拍摄照片,我猜您正在寻找一种方法来检测曝光过度/曝光不足的照片。

执行此操作的一种常见方法是计算图像的histogram。如果您的图像曝光不足,您应该会看到直方图的下(暗)端看起来“被裁剪”,例如

曝光不足

如果图像曝光过度,则会剪掉亮区。

曝光过度

理想情况下,图像在直方图的远端包含很少的像素: 平衡

要计算直方图,可以使用OpenCV或GPUImage

直方图均衡化

如果直方图被剪裁,则照片因曝光不足/过度曝光而遭受无法弥补的损害 - 量化可能丢弃了过多的图像数据。但是,如果不是,您可以使用直方图均衡化来标准化图像的对比度级别。 Here is an good document using OpenCV。你会失去一些色彩保真度,但这本质上是图像编辑软件中的“增强图像”滤镜所做的。

【讨论】:

  • 特别是我需要得到照片的对比度。直方图可以做到这一点吗?我验证了 GPUImage 没有关于获取对比度的内容
  • 首先,您必须定义对比度度量。直方图的宽度可能是对比度的一个很好的度量,使用某种宽度度量(也许是高斯拟合?)。请注意,如果直方图没有被裁剪,您可以轻松对其进行归一化(无需拒绝图像)。
【解决方案2】:

希望将 kCGImagePropertyExifDictionary 与

一起使用
  1. const CFStringRef kCGImagePropertyExifContrast 和 - kCGImagePropertyExifContrast 应用于图像的对比度。

  2. const CFStringRef kCGImagePropertyExifBrightnessValue - 亮度值。

在 iOS 4.0 及更高版本中可用apple reference link

可以帮助您从图像中计算亮度和对比度信息

Reference Link

【讨论】:

  • 有趣的是,我不知道 EXIF 元数据具有亮度和对比度。你知道这些值是什么意思吗?
  • 关于这些的内容不多,而是从图像本身中提取 EXIF 数据,而不是将其放入数据库中。这需要 jpg 文件,因为 png 似乎不起作用。
  • "kCGImagePropertyExifDictionary" 在 x 和 y 中只有色彩空间和像素尺寸,而不是亮度和对比度
  • 可能是这些值是后处理提示,如方向?能够非破坏性地调整亮度/对比度。
猜你喜欢
  • 1970-01-01
  • 2015-01-13
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多