OpenCV 4.11.0
开源计算机视觉
加载中…
搜索中…
无匹配项
直方图 - 2:直方图均衡化

目标

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

理论

考虑一幅图像,其像素值仅限于某个特定的值范围。例如,较亮的图像的所有像素都将限制在较高的值。但是,良好的图像将具有来自图像所有区域的像素。因此,您需要将此直方图拉伸到两端(如下面的维基百科图像所示),这就是直方图均衡化所做的(简单来说)。这通常可以提高图像的对比度。

图像

我建议您阅读维基百科关于直方图均衡化的页面,以了解更多详细信息。它有非常好的解释和实际例子,读完之后你几乎可以理解所有内容。

OpenCV 中的直方图均衡化

我们使用函数:cv.equalizeHist (src, dst)

参数
src源 8 位单通道图像。
dst与 src 大小和类型相同的目标图像。

尝试一下

CLAHE(对比度受限自适应直方图均衡化)

自适应直方图均衡化中,图像被分成称为“块”的小块(OpenCV 中默认情况下 tileSize 为 8x8)。然后像往常一样对这些块中的每一个进行直方图均衡化。因此,在一个小区域内,直方图将限制在一个小的区域(除非有噪声)。如果有噪声,它会被放大。为了避免这种情况,应用了对比度限制。如果任何直方图 bin 超过指定的对比度限制(OpenCV 中默认为 40),则在应用直方图均衡化之前,这些像素将被裁剪并均匀地分布到其他 bin。均衡化后,为了去除瓦片边界处的伪影,应用双线性插值。

我们使用类:cv.CLAHE (clipLimit = 40, tileGridSize = new cv.Size(8, 8))

参数
clipLimit对比度限制的阈值。
tileGridSize直方图均衡化的网格大小。输入图像将被分成大小相等的矩形块。tileGridSize 定义行和列中的块数。
注意
不要忘记删除 CLAHE!

尝试一下