Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何使用OpenCV更改图像的对比度?_Image Processing_Opencv_Emgucv - Fatal编程技术网

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

Image processing 如何使用OpenCV更改图像的对比度?,image-processing,opencv,emgucv,Image Processing,Opencv,Emgucv,我想查看某个遮罩区域中图像的对比度,如果对比度太大,则降低对比度。是否有内置函数可以帮助我实现这一点?如果不是,我应该看什么样的算法?我假设我会观察/改变像素的值,使它们更接近平均值,也许平均距离是衡量初始对比度的一个好方法 如果相关的话,我会使用EmguCV。对比度在图像处理中是一个有点不精确的术语-但通常你会通过拉伸/压缩来实现这一点,就像Martin所说的,你想通过操纵灰度值和颜色值的分布来修改图像。通用解决方案是应用于直方图的曲线,您可以在Gimp中使用这些曲线。有关如何使用OpenCV

我想查看某个遮罩区域中图像的对比度,如果对比度太大,则降低对比度。是否有内置函数可以帮助我实现这一点?如果不是,我应该看什么样的算法?我假设我会观察/改变像素的值,使它们更接近平均值,也许平均距离是衡量初始对比度的一个好方法


如果相关的话,我会使用EmguCV。

对比度在图像处理中是一个有点不精确的术语-但通常你会通过拉伸/压缩来实现这一点,就像Martin所说的,你想通过操纵灰度值和颜色值的分布来修改图像。通用解决方案是应用于直方图的曲线,您可以在Gimp中使用这些曲线。有关如何使用OpenCV应用基本图像处理和直方图处理功能的示例,您可以查看

如果使用OpenCV,则不需要直接从图像中提取直方图

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

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

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

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

谢谢各位-看起来我可能会想要获取边缘较重的直方图并对其进行均衡。