计算 UIImage 的“亮度”的好方法?

Posted

技术标签:

【中文标题】计算 UIImage 的“亮度”的好方法?【英文标题】:Good way to calculate 'brightness' of UIImage? 【发布时间】:2010-10-21 23:25:02 【问题描述】:

我正在编写一个应用程序,它将提供 iPhone 相机拍摄的图像的 OCR。我想在执行 OCR 分析之前测试图像以查看是否有足够的照明。有人有什么想法吗?

【问题讨论】:

可能有点难,首先想到的是迭代每个像素并计算亮度值,然后生成一些统计数据,如“最暗区域”、“最亮区域”、“整体亮度”等。 您可能还需要为图像的对比度设置一些规则,而不是简单的照明测量。转换为灰度并计算亮度值的直方图将为您提供一个良好的开端。从那里,您可以使用标准偏差、偏度和其他度量来确定图像是否可能符合您的标准。 @warrenm:通常为每个通道计算单独的直方图然后转换为灰度并计算一个直方图会更便宜。 显然在 iphone 上进行图像分析有点挑战。相机返回的未压缩图像约为 8mb(它是一个 UIImage 对象),要使用它,您必须制作一个副本(因为 UIImage 是不可变的) - 因此需要约 16mb 的内存。 :// 【参考方案1】:

最灵活的方法是为红绿蓝颜色通道生成直方图,然后用它来确定平均亮度、中值亮度、黑/白点、对比度或其他自定义函数。

使用CGBitmapContextCreate 创建由您创建的缓冲区支持的位图上下文,将图像绘制到其中,然后遍历缓冲区中的每个像素以填充直方图。

【讨论】:

以上是关于计算 UIImage 的“亮度”的好方法?的主要内容,如果未能解决你的问题,请参考以下文章

用于 OCR 的 iOS UIImage 二值化 - 处理具有不同亮度的图像

为啥我无法使用 UISlider 降低亮度?

iOS 图像处理-调整图像亮度

使用 UISlider 将 UIImage 更改回原始图像的问题

将 UIImage 保存为不同的名称

从 CMSampleBuffer 转换为 UIImage 对象