最近在学习图像对比度增强,其中一个基本的方法就是图像均衡化,了解并按照大佬的例子写了下自己的彩色图像的均衡化代码,于是记录下学习的结果.
图像直方图均衡化的介绍
直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图的分布来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度。原始图像由于其灰度分布可能集中在较窄的区间,造成图像不够清晰。例如,过曝光图像的灰度级集中在高亮度范围内,而曝光不足将使图像灰度级集中在低亮度范围内。采用直方图均衡化,可以把原始图像的直方图变换为均匀分布(均衡)的形式,这样就增加了像素之间灰度值差别的动态范围,从而达到增强图像整体对比度的效果。换言之,直方图均衡化的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并,从而增大对比度,使图像清晰,达到增强的目的。
更详细的介绍可见:(26条消息) 【图像处理算法】直方图均衡化_桂哥317的博客-CSDN博客_直方图均衡化
图像直方图均衡化方法流程:
1.统计出图像的直方图.
2.计算出各个灰度值像素的概率hist[i](i=1:256),每个灰度值的个数除以所有像素点的个数,即归一化 .
3.计算sumhist[i](i=1:256),sumhist[i]为前i个灰度值的分布概率hist[i]的总和.
例: sumhist[4] = hist[1] + hist[2] + hist[3] + hist[4]
4.将sumhist乘上灰度级(通常为255),再四舍五入
5.将原图像各个灰度值转换成sumhist[i]创建出新图像.
Python图像均衡化代码
import matplotlib.pyplot as plt
import