如何使用OpenCV更改图像的对比度?

时间:2011-12-30 14:44:34

标签: image-processing opencv emgucv

我想看看某个蒙版区域中图像的对比度,如果太大则会减少它。是否有内置功能可以帮助我解决这个问题?如果没有,我应该考虑什么样的算法?我假设我会查看/更改像素值以使它们更接近平均值,也许平均距离平均值可以很好地衡量初始对比度?

如果相关,我正在使用EmguCV。

3 个答案:

答案 0 :(得分:5)

如果您使用的是OpenCV,则无需直接从图像中提取直方图。

如果要通过直方图均衡来调整图像的对比度,OpenCV具有equalizeHist功能。

但是请注意,调整图像的对比度时,直方图均衡并不总是您想要的。如果你想进行对比度拉伸(一种非常简单但有效的算法),你只需要找到图像的最小和最大灰度(像素值),并对每个图像像素应用以下点操作:

newValue = 255 * (oldValue - minValue)/(maxValue - minValue)

我假设每个像素的取值范围为0-255。此外,minValue和maxValue对应于输入图像中的最小和最大灰度值。

答案 1 :(得分:2)

对比度在图像处理中有点不精确 - 但通常你会通过拉伸/压缩histogram

来做到这一点

答案 2 :(得分:1)

像马丁说的那样,你想通过操纵灰色分布颜色值来修改图像。通用解决方案是您在直方图上应用的曲线,您可以在The Gimp中使用此类曲线。有关如何使用OpenCV应用基本图像处理和直方图操作函数的示例,您可以查看mango