赞
踩
直方图均衡化是一种图像增强技术,用于改善图像的对比度和视觉质量。它通过重新分配图像的像素值,使得图像的直方图在整个灰度范围内更均匀地分布,从而增强了图像的细节和可视化效果。
以下是直方图均衡化的几个主要作用:
提高对比度:直方图均衡化通过拉伸图像的亮度范围,将灰度级别均匀分布在整个范围内。这样可以增强图像的对比度,使得细节更加清晰和突出。
增强细节:直方图均衡化可以增强图像中的细节,尤其是在具有低对比度的区域。通过增强细节,图像的视觉质量得到了改善。
增强可视化效果:直方图均衡化可以改善图像的可视化效果。它可以使图像更加饱满、明亮,并提供更多的视觉细节。这对于图像展示和观看非常有用。
应用于图像预处理:直方图均衡化在图像预处理中被广泛应用。它可以增强图像的对比度和细节,有助于提高后续图像处理算法(如边缘检测、目标检测等)的性能。
需要注意的是,直方图均衡化可能会导致一些副作用,例如在图像中引入噪声或改变图像的整体外观。因此,在应用直方图均衡化之前,需要仔细考虑图像的特定需求和应用场景。
总的来说,直方图均衡化是一种重要的图像增强技术,可以改善图像的对比度、细节和可视化效果。它在计算机视觉、图像处理和计算机图形学等领域得到广泛应用。
主要实验原理根据课件的内容实现:
首先,计算输入图像的总像素数,即图像的宽度乘以高度。
初始化用于存储灰度级别、灰度概率、灰度累积分布和均衡化后灰度值的数组。
遍历输入图像的每个像素,统计各个灰度级别的像素个数。
根据像素个数计算灰度级别的概率。
计算灰度级别的累积分布,即前一个灰度级别的累积分布加上当前灰度级别的概率。
根据累积分布计算均衡化后的灰度值,将其存储在数组中。
遍历输入图像的每个像素,根据原始灰度值查找对应的均衡化后的灰度值,并将其赋值给输出图像的对应位置。
返回直方图均衡化后的输出图像。
原图:
直方图均衡化后的图:
很明显,我们可以发现直方图均衡化的效果:
提高对比度:直方图均衡化通过拉伸图像的亮度范围,将灰度级别均匀分布在整个范围内。这样可以增强图像的对比度,使得细节更加清晰和突出。
增强细节:直方图均衡化可以增强图像中的细节,尤其是在具有低对比度的区域。通过增强细节,图像的视觉质量得到了改善。
增强可视化效果:直方图均衡化可以改善图像的可视化效果。它可以使图像更加饱满、明亮,并提供更多的视觉细节。这对于图像展示和观看非常有用。
处理方法与灰度均衡化类似,将RGB空间拆分分别进行均衡化处理
由于直接对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
合并成输出图像。
主要目的是对比方法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:
直接调库:
对HSI空间进行均衡化处理的效果会比较好,保证了原来的颜色,同时对图像增强的效果还不错,图像的对比度增加;
但是由于参数难以调节,手动实现的HSI空间的直方均衡化和直接调用相关库实现出来的效果仍有差距,图像的细节颜色会发生混乱现象,需要后续继续优化对于HSI空间的均衡化处理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。