直方图均衡化是使图像直方图变得平坦的 *** 作。直方图均衡化能够有效地解决图像整体过暗、过亮的问题,增加图像的清晰度。
具体流程如下所示。其中S是总的像素数,Zmax是像素的最大取值(8位灰度图像为255),h(i)为图像像素取值为 i 及 小于 i 的像素的总数。
二. python实现直方图均衡化 *** 作局敬
import cv2
import numpy as np
import matplotlib.pyplot as plt
# histogram equalization
def hist_equal(img, z_max=255):
H, W = img.shape
S = H * W * 1.
out = img.copy()
sum_h = 0.
for i in range(1, 255):
ind = np.where(img == i)
sum_h += len(img[ind])
z_prime = z_max / S * sum_h
out[ind] = z_prime
out = out.astype(np.uint8)
return out
# Read image
img = cv2.imread("../head_g_n.jpg",0).astype(np.float)
# histogram normalization
out = hist_equal(img)
# Display histogram
plt.hist(out.ravel(), bins=255, rwidth=0.8, range=(0, 255))
plt.show()
plt.savefig("out_his.png")
# Save result
cv2.imshow("result", out)
cv2.imwrite("out.jpg", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
三. 实验结果:
可以看到,直方图均衡化后的图像看起来比原来的图像更加清晰。对于图像亮度整体偏暗或者偏轿尺亮的图像,我们可以采用直方图均衡化的方法处理图像,使得它们看桐帆慎上去更加清晰。
四. matlab 实现图像直方图均衡化:
可以参考一篇优秀的博文: https://blog.csdn.net/Ibelievesunshine/article/details/79961027
五. 参考内容:
https://www.cnblogs.com/wojianxin/p/12510797.html
https://blog.csdn.net/Ibelievesunshine/article/details/104922449
如果一幅图像拥有全部可能的灰度级,并且像素值的灰度均匀分布,那么这幅图像就具有高对比度和多变的灰度色调,灰度级丰富且覆盖范围较大。在外观上,这样的图像具有更启李丰富的色彩,不会过暗或过亮。图13-22展示了对一幅图像进行直方图均衡化前后的对比,左图是原始图像,比较暗;右图是均衡化后的图像,色彩比较均衡。
在OpenCV的官网上,对图像均衡化(即直方图均衡化)前后的直方图进行了对比,如图13-23所示。其中,左图是原始图像的直方图,可以看到让盯灰度级集中在中间,图像中没有较暗和较亮的像素点;右图是对原图均衡化后的直方图,像素分布更均衡。
直方图均衡化的主要目的是将原始图像的灰度级均匀地映射到整个灰度级范围内,得到一个灰度级分布均匀的图像。这种均衡化,既实现了灰度值统计上的概率均衡,也实坦旁和现了人类视觉系统(Human Visual System, HVS)上的视觉均衡。
直方图均衡化的算法主要包括两个步骤:
OpenCV使用函数cv2.equalizeHist()实现直方图均衡化。
【例13.11】使用函数cv2.equalizeHist()实现直方图均衡化。
首先在直方图的修整,有两种方法,一种是直方图均衡化,另外一种是直方图规定化,用起来的话第一种方法用的比较多,这里着重说一下第一种:直方图均衡化.
我们引入直方图,很大程度上是可以根据直方图的形态来去判断图像的质量,比如根据下图所示,会很快发现一张图片是过亮还是过暗,这篇文章会说一下直汪汪正方图均衡化的原理,至于实现,以后有机会再说吧.
1.直方陵慧图均衡化
直方图均衡化是将原图像通过某种变换,得到一幅灰度直方图为均匀分布的新图像的方法。
直方图均衡化方法的基本思想是对在图像中像素个数多的灰度级进行展宽,而对像素个数少的灰度级进行缩减。从而达到清晰图像的目的。
一些理论的东西我们不谈,直接用一个例子来说一下,会更容易理解:
假设有一幅图像,共有64×64个像素,8个灰度级,各灰度级概率分布见下表 ,试将其直方图均匀化。
解题步骤:
1:确定图像的灰度级
在实际情况下,如果我们的图像是彩色,需要将其转换为灰度图像,其中的灰度级一般是0-255,这个题的灰度级只有8级,需要注意下
2:计算原始直方图的概率
统计每一个灰度在原始图像上的像素所占总体的比例,记为Pi
3:计算直方图概率的累加值S(i)
直到最后一个灰度级,总和为1
4: 根据公式求取像素映射关系.
这里的pix是指的灰度级,也就是(最大灰度级-最小灰度级)*累加概率+0.5后取整数
5: 灰度映射
找到了原图像和均衡化图像灰度的对应关系,对原图进行 *** 作,将每个像素映射成新的像素
此时图像均衡化已经完成,当然你也可以再次统计灰度概率,观察一下结困悔果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)