如果一副图像的像素占有很多的灰度级而且分布均匀,那么这样的图像往往有高对比度和多变的灰度色调。直方图均衡化就是一种能仅靠输入图像直方图信息自动达到这种效果的变换函数。它的基本思想是对图像中像素个数多的灰度级进行展宽,而对图像中像素个数少的灰度进行压缩,从而扩展像原取值的动态范围,提高了对比度和灰度色调的变化,使图像更加清晰。(百度百科)
from skimage import io
im=io.imread('a.jpg')
#io.imshow(im)
#把二维图像转化为一位数组,用hist函数画出函数图像。
detail=im.reshape(im.size,1)
import matplotlib.pyplot as plt
plt.hist(detail, 256, normed=False, facecolor='black', alpha=1)
plt.show()
#统计每个灰度值的数量和比例
ston=[0]*256
P=[0]*256
S=[0]*256
for row in im:
for line in row:
ston[line]+=1
for i in range(0,256):
P[i]=ston[i]/im.size
#print(P)
#print (ston)
#直方图均衡化
sum_s=P[0]
S[0]=P[0]*255
for i in range(1,256):
sum_s=sum_s+P[i]
S[i]=sum_s*255
for row in range(0,im.shape[0]):
for line in range(0,im.shape[1]):
im[row][line]=int(S[im[row][line]])
details=im.reshape(im.size,1)
plt.hist(details, 256, nor
python 图像处理 直方图均衡化
最新推荐文章于 2024-07-29 16:45:15 发布
本文深入探讨了Python中图像处理的一种重要技术——直方图均衡化。直方图均衡化能有效提升图像的对比度,通过改变像素的分布,使图像亮度层次更加丰富。文中详细解释了直方图的概念,并提供了使用OpenCV库进行直方图均衡化的实例代码,帮助读者理解和应用这一技术。
摘要由CSDN通过智能技术生成