确定图像是否需要在OpenCV中自动对比

Aru*_*iRC 10 opencv image-processing

OpenCV的是工作在褪色/低对比度的图像大的方便cvEqualizeHist()函数.然而,当给出已经高对比度的图像时,结果是低对比度的图像.我明白了 - 直方图是均匀分布的.

问题是 - 如何了解低对比度图像和高对比度图像之间的差异?

我正在操作灰度图像并正确设置它们的对比度,以便对它们进行阈值处理不会删除我应该提取的文本(这是一个不同的故事).建议欢迎 - 尤其是如何查看图像中的大多数像素是否为浅灰色(这意味着要执行均衡hist)请帮忙!

编辑:感谢大家提供了许多有益的答案.但标准偏差计算足以满足我的要求,因此我将其作为我查询的答案.

mpe*_*kov 6

如果您正在调整对比度,以便稍后可以进行阈值处理,则可以在使用Ohtsu方法自适应地设置阈值时避免对比度调整步骤.

如果您仍然想要找出图像对比度,请继续阅读.

虽然有许多不同的方法来计算"对比度".通常,这些指标在本地应用而不是整个图像,以使结果对图像内容更敏感:

  • 将图像划分为相邻的非重叠邻域.
  • 选择近似于图像特征大小的邻域大小(例如,如果您的主要特征是水平文本,则使邻域足够高以捕获2行文本,并且同样宽).
  • 将度量单独应用于每个邻域
  • 阈值度量结果以分隔低和高方差块.这样可以防止诸如页面的大的空白区域使对比度估计偏差.

从那里,您可以使用许多功能来确定对比度:

  • 高度量块与低度量块的比例
  • 高度量块意味着
  • 高度量块和低度量块之间的强度距离(使用均值,模式等)

与单独的全局图像方差相比,这可以作为图像对比度的更好指示.原因如下:

替代文字 (stddev:50.6)

替代文字 (stddev:7.9)

这两幅图像完全形成鲜明对比(灰色背景只是让它显而易见,它是一个图像),但它们的标准偏差(以及方差)完全不同.


Pau*_*l R 5

您可以只使用图像的简单统计测量来确定图像是否具有足够的对比度.图像的方差可能是一个很好的起点.如果方差低于某个阈值(根据经验确定),那么您可以将其视为"低对比度".