如何在opencv或numpy中进行对比度拉伸?

时间:2016-01-17 14:28:20

标签: python opencv numpy image-processing contrast

我正试图在我的Python 3应用程序中扩展opencv3 / numpy.ndarray图片的对比度。

我找到了normalize方法,但这似乎相反,例如在10到11的范围内按1到255。 在numpy,我发现没什么容易,但在opencv我遇到了convertScaleAbs function。 我给了它

alpha=255 / (upper_boundary - lower_boundary)

作为缩放和

beta=(- (lower_boundary * (255 / (upper_boundary - lower_boundary)))

作为delta,但是这会产生奇怪的结果,尽管黑色部分进入例如10和250。

我不确定我的数学是否正确。 我还在another question中看到了这个公式newValue = 255 * (oldValue - minValue)/(maxValue - minValue),但我无法将其应用于convertScaleAbs函数的比例和delta概念,对吗?

编辑: 我还使用normalizealpha=lower_boundary beta=upper_boundary尝试了and norm_type=cv2.NORM_MINMAX opencv函数,结果是我可以输入0到255之间的数字,但结果图像只有这些亮度值和对比度不太紧张!

这是一个最小的完整可验证示例:

import cv2
image = cv2.imread("Tux.png")
cv2.normalize(image, image, alpha=20, beta=200, norm_type=cv2.NORM_MINMAX)
cv2.namedWindow("TestWindow", cv2.WINDOW_AUTOSIZE)
cv2.imshow("Test", image)
cv2.waitKey(0)

我很感谢有关我可能忽略的简单功能或者我可以用来更轻松地(手动)执行此操作的任何提示!

0 个答案:

没有答案