OpenCV  4.10.0
开源计算机视觉
正在加载...
正在搜索...
没有匹配项
直方图 - 2:直方图均衡

目标

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

理论

考虑这样一个图像,其像素值仅限于某个特定的值范围。例如,较亮的图像中的所有像素都限于高值。但一张好图像应该包含图像中所有区域的像素。因此,您需要将该直方图拉伸到两端(如下图所示,来自维基百科),而这正是直方图均衡所做的(用简单的话来说)。这通常会提高图像对比度。

image

我建议您阅读维基百科上的直方图均衡页面,以了解更多详细信息。它有很好的解释和详细的例子,以便您在阅读后几乎能理解所有内容。

OpenCV 中的直方图均衡

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

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

试试看

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

自适应直方图均衡中,图像被分成称为“图块”的小块(在 OpenCV 中,默认情况下图块大小为 8x8)。然后,通常对这些块中的每一个执行直方图均衡。因此,在较小的区域中,直方图将限于较小的区域(除非有噪声)。如果存在噪声,它将被放大。为了避免这种情况,将应用对比度限制。如果任何直方图柱状图高于指定的对比度限制(在 OpenCV 中默认为 40),则在应用直方图均衡之前,这些像素将被剪裁并均匀分布到其他柱状图中。均衡之后,应用双线性插值以去除图块边框中的伪影。

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

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

尝试