目录
源代码github地址:
直方图均衡化
实验原理
直方图均衡化是一种图像增强技术,用于改善图像的对比度和视觉质量。它通过重新分配图像的像素值,使得图像的直方图在整个灰度范围内更均匀地分布,从而增强了图像的细节和可视化效果。
以下是直方图均衡化的几个主要作用:
-
提高对比度:直方图均衡化通过拉伸图像的亮度范围,将灰度级别均匀分布在整个范围内。这样可以增强图像的对比度,使得细节更加清晰和突出。
-
增强细节:直方图均衡化可以增强图像中的细节,尤其是在具有低对比度的区域。通过增强细节,图像的视觉质量得到了改善。
-
增强可视化效果:直方图均衡化可以改善图像的可视化效果。它可以使图像更加饱满、明亮,并提供更多的视觉细节。这对于图像展示和观看非常有用。
-
应用于图像预处理:直方图均衡化在图像预处理中被广泛应用。它可以增强图像的对比度和细节,有助于提高后续图像处理算法(如边缘检测、目标检测等)的性能。
需要注意的是,直方图均衡化可能会导致一些副作用,例如在图像中引入噪声或改变图像的整体外观。因此,在应用直方图均衡化之前,需要仔细考虑图像的特定需求和应用场景。
总的来说,直方图均衡化是一种重要的图像增强技术,可以改善图像的对比度、细节和可视化效果。它在计算机视觉、图像处理和计算机图形学等领域得到广泛应用。
灰度均衡化
实验方法
主要实验原理根据课件的内容实现:
-
首先,计算输入图像的总像素数,即图像的宽度乘以高度。
-
初始化用于存储灰度级别、灰度概率、灰度累积分布和均衡化后灰度值的数组。
-
遍历输入图像的每个像素,统计各个灰度级别的像素个数。
-
根据像素个数计算灰度级别的概率。
-
计算灰度级别的累积分布,即前一个灰度级别的累积分布加上当前灰度级别的概率。
-
根据累积分布计算均衡化后的灰度值,将其存储在数组中。
-
遍历输入图像的每个像素,根据原始灰度值查找对应的均衡化后的灰度值,并将其赋值给输出图像的对应位置。
-
返回直方图均衡化后的输出图像。
实验结果分析
原图:
直方图均衡化后的图:
很明显,我们可以发现直方图均衡化的效果:
-
提高对比度:直方图均衡化通过拉伸图像的亮度范围,将灰度级别均匀分布在整个范围内。这样可以增强图像的对比度,使得细节更加清晰和突出。
-
增强细节:直方图均衡化可以增强图像中的细节,尤其是在具有低对比度的区域。通过增强细节,图像的视觉质量得到了改善。
-
增强可视化效果:直方图均衡化可以改善图像的可视化效果。它可以使图像更加饱满、明亮,并提供更多的视觉细节。这对于图像展示和观看非常有用。
彩色图像直方图均衡化
实验方法
方法1:对RGB空间进行直方均衡化处理
处理方法与灰度均衡化类似,将RGB空间拆分分别进行均衡化处理
方法2:对HSI空间的I空间进行直方均衡化处理
由于直接对RGB空间会导致图像颜色发生改变,故尝试对HSI空间进行均衡化处理((只对亮度进行直方均衡化):
均衡化公式如下:
-
首先,将输入图像分离为H(色调)、S(饱和度)和I(亮度)三个通道。
-
将亮度通道赋值给变量
I_
,这是为了保持色调和饱和度通道不变。 -
对亮度通道
I_
进行处理。首先,根据条件判断(I < 0.5
和I > 0.5
),创建两个布尔型索引数组index1
和index2
,用于指示满足条件的像素位置。 -
创建一个与亮度通道
I
相同形状的全零数组I_
。 -
使用NumPy的幂函数
power
对满足条件的像素进行幂运算,根据条件将对应位置的像素值赋值给I_
数组。这里使用了pitas的理论,将亮度值小于0.5的像素进行平方运算,亮度值大于0.5的像素进行反向平方运算。 -
将处理后的亮度通道
I_
、不变的饱和度通道S_
和不变的色调通道H
合并成输出图像。
方法3:直接调库
主要目的是对比方法2的实现效果:
hsv_image = cv2.cvtColor(im, cv2.COLOR_BGR2HSV)
# 分离亮度、饱和度和色调通道
h, s, v = cv2.split(hsv_image)
# 对亮度通道执行直方图均衡化
equalized_v = cv2.equalizeHist(v)
# 合并均衡化后的亮度通道与饱和度、色调通道
equalized_hsv_image = cv2.merge([h, s, equalized_v])
# 将均衡化后的图像转换回RGB颜色空间
equalized_image = cv2.cvtColor(equalized_hsv_image, cv2.COLOR_HSV2BGR)
实验结果分析
原图:
方法1:
方法2:
直接调库:
方法1分析
- RGB 空间提供了显示彩色图像的直接方法,但它并不总是处理和分析的最佳选择。它的缺点之一是无法处理颜色的感知属性,例如强度、色调或饱和度。 H S I 颜色空间具有原色 H(色调)、S(饱和度)和 I(强度),直接对应于颜色的感知属性。
- 对RGB空间进行直方均衡化处理会导致颜色失真:直方图均衡是一个非线性过程。通道分割和单独均衡每个通道并不是对比度均衡的正确方法。均衡涉及图像的强度值而不是颜色分量。因此,对于简单的 RGB 彩色图像,不应该在每个通道上单独应用 直方图均衡化。相反,应该应用它以使强度值均衡而不干扰图像的色彩平衡。
方法2分析
对HSI空间进行均衡化处理的效果会比较好,保证了原来的颜色,同时对图像增强的效果还不错,图像的对比度增加;
但是由于参数难以调节,手动实现的HSI空间的直方均衡化和直接调用相关库实现出来的效果仍有差距,图像的细节颜色会发生混乱现象,需要后续继续优化对于HSI空间的均衡化处理。