4.1 灰度直方图的显示
灰度直方图是图像灰度级分布的函数,是对灰度分布的统计。灰度直方图将图像中所有像素点按照其灰度级的大小,统计每个值出现的频率。
我们需了解以下函数:
cv2.calcHist
函数用于计算图像的直方图。其中参数含义如下:
[img]:代表要计算直方图的图像。
[0]:这是一个表示要计算直方图的通道索引的列表。对于灰度图像,只有一个通道,所以索引为 0;对于彩色图像,通常有三个通道(RGB),索引为 0(蓝色通道)、1(绿色通道)和 2(红色通道)。这里指定 [0] 表示计算图像的第一个通道(在灰度图像中就是唯一的通道)的直方图。
None:这个参数是可选的掩码图像。传入 None,表示使用整个图像来计算直方图。
[256]:这是一个表示直方图的尺寸的列表。对于 8 位图像,灰度级别范围是 0 - 255,共 256 个级别,所以这里指定 [256] 表示将直方图分为 256 个区间,每个区间对应一个灰度级别。
[0, 255]:这是一个表示直方图的取值范围的列表。这里指定 [0, 255] 表示计算灰度级别从 0 到 255 的像素数量分布。
代码及运行结果如图2.25所示。


4.2 直方图均衡化
直方图增强主要是针对图像的像素值分布过于集中,从而导致图像对比度降低,清晰度不高的情况。因此在实验时先对图像进行灰度值压缩,然后利用直方图均衡化的方法实现图像增强。
基于前面的学习,我们可以知道:
img_h = cv2.add(img, 150):该句代码用于给图像提亮。
img_l = cv2.multiply(img, 0.2):该句代码用于使图像变暗。
以及cv2.calcHist
函数用于计算图像的直方图。
同时,我们需要了解以下函数:
cv2.equalizeHist函数用于对图像进行直方图均衡化。它会对图像进行处理,通过重新分布图像的像素值,使得图像的灰度分布更加均匀,从而增强图像的对比度。
代码及运行结果如图3.26所示。

