python-opencv Tutorials 一码人翻译(24)图像处理---- --直方图---- 直方图均衡化

目标

在本节中,

我们将学习直方图均衡的概念,并使用它来改善图像的对比度。

理论

考虑一个图像,其像素值仅局限于某些特定的值范围。对于eg来说,更亮的图像会将所有像素都限制在高值中。但是一个好的图像会有来自图像的所有区域的像素。因此,你需要将这个直方图拉伸到两端(如下图所示,从维基百科中给出),这就是直方图均衡所做的(用简单的词)。这通常会改善图像的对比度。

我建议你阅读维基百科上关于直方图均衡的页面,了解更多关于它的细节。它有一个很好的解释,用了一些例子,这样你在读完之后就能理解所有的东西。相反,这里我们将看到它的Numpy实现。在那之后,我们将看到OpenCV功能。

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt

img = cv.imread('wu.jpg',0)

hist,bins = np.histogram(img.flatten(),256,[0,256])

cdf = hist.cumsum()
cdf_normalized = cdf * float(hist.max()) / cdf.max()

plt.plot(cdf_normalized, color = 'b')
plt.hist(img.flatten(),256,[0,256], color = 'r')
plt.xlim([0,256])
plt.legend(('cdf','histogram'), loc = 'upper left')
plt.show()

 

图像

你可以看到直方图在更亮的区域。我们需要完整的频谱。为此,我们需要一个转换函数,它将明亮区域中的输入像素映射到整个区域的输出像素。这就是直方图均衡的作用。

现在我们找到最小的直方图值(不包括0)并应用在wiki页面中给出的直方图均衡方程。但我在这里使用了Numpy的蒙面数组概念数组。对于屏蔽数组,所有操作都是在非屏蔽元素上执行的。你可以从面具阵列的Numpy文档中了解到更多信息。

cdf_m = np.ma.masked_equal(cdf,0)
cdf_m = (cdf_m - cdf_m.min())*255/(cdf_m.max()-cdf_m.min())
cdf = np.ma.filled(cdf_m,0).astype('uint8')




img2 = cdf[img]

所以现在你可以用不同的光条件来拍摄不同的图像,把它均匀化并检查结果。

当图像的直方图被限制在一个特定的区域时,直方图均衡是很好的。在有大强度变化的地方,直方图覆盖了一个很大的区域,即明亮和暗的像素都存在,这是行不通的。请在额外的资源中检查这些链接。

CLAHE(对比有限的自适应直方图均衡)

我们刚刚看到的第一个直方图均衡化,考虑了图像的全局对比。在很多情况下,这不是一个好主意。例如,下图显示了一个输入图像及其在全球直方图均衡化之后的结果

在直方图均衡化后,背景对比得到了改善。但是比较两幅图像中的雕像的脸。由于过于明亮,我们失去了大部分的信息。这是因为它的直方图并不局限于我们在以前的案例中看到的特定区域(尝试绘制输入图像的直方图,你会得到更多的直觉)。

为了解决这个问题,我们使用了自适应直方图均衡化。在这个过程中,图像被分成小块,称为“tiles”(在OpenCV中默认为8x8)。然后这些块中的每一个都像往常一样被平均化。所以在一个小区域,直方图只会局限于一个小区域(除非有噪音)。如果有噪音,它就会被放大。为了避免这种情况,采用对比限制。如果任何直方图都高于指定的对比度限制(默认值为40),那么在应用直方图均衡之前,这些像素就会被剪切并均匀地分布到其他的容器中。在均衡化之后,要在tile边界中删除工件,应用双线性插值。

下面的代码片段显示了如何在OpenCV中应用CLAHE:

import numpy as np
import cv2 as cv

img = cv.imread('tangwei.jpg',0)

# create a CLAHE object (Arguments are optional).
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)




cv.imwrite('clahe_2.jpg',cl1)
cv.imshow('dst1',cl1)
cv.imshow('dst2',img)
cv.waitKey(0)
cv.destroyAllWindows()

猜你喜欢

转载自blog.csdn.net/qq_41905045/article/details/81563436