如何在C中调整OpenCV中的对比度?

我只是试图调整灰度图像中的对比度/亮度,用C中的Opencv突出显示该图像中的白色。我该怎么做? 是否有任何function在opencv中完成此任务?

原始图片:

在此处输入图像描述

修改后的图片

在此处输入图像描述

提前致谢!

我认为你可以通过两种方式调整对比度:

1) 直方图均衡:

但是当我用你的图像尝试这个时,结果并不像你预期的那样。 请查看以下内容:

在此处输入图像描述

2) 阈值处理

在这里,我将输入的每个像素值与任意值(我用了127 )进行比较。 下面是在opencv中具有内置function的逻辑。 But remember, output is Binary image, not grayscale as you did.

 If (input pixel value >= 127): ouput pixel value = 255 else: output pixel value = 0 

以下是我得到的结果:

在此处输入图像描述

为此,您可以使用阈值function比较function

3) 如果您必须将灰度图像作为输出,请执行以下操作

(代码在OpenCV-Python中,但对于每个函数,opencv.itseez.com中提供了相应的C函数)

 for each pixel in image: if pixel value >= 127: add 'x' to pixel value. else : subtract 'x' from pixel value. 

(’x’是任意值。)因此亮像素和暗像素之间的差异增大。

 img = cv2.imread('brain.jpg',0) bigmask = cv2.compare(img,np.uint8([127]),cv2.CMP_GE) smallmask = cv2.bitwise_not(bigmask) x = np.uint8([90]) big = cv2.add(img,x,mask = bigmask) small = cv2.subtract(img,x,mask = smallmask) res = cv2.add(big,small) 

以下是获得的结果:

在此处输入图像描述

您还可以查看OpenCV CLAHE算法。 它不是全局均衡直方图,而是将图像分割成图块并在局部均衡,然后将它们拼接在一起。 这可以提供更好的结果。

使用OpenCV 3.0.0中的图像:

 import cv2 inp = cv2.imread('inp.jpg',0) clahe = cv2.createCLAHE(clipLimit=4.0, tileGridSize=(8,8)) res = clahe.apply(inp) cv2.imwrite('res.jpg', res) 

给了一些非常好的东西

在CLAHE之后

在这里阅读更多相关内容,虽然它不是非常有用: http : //docs.opencv.org/3.1.0/d5/daf/tutorial_py_histogram_equalization.html#gsc.tab=0