关于直方图均衡化一直想写一篇文章来简单的介绍这个原理。
对于给定的一张图像来说,所有像素点的分布可能在某个阈值内非常密集或者稀疏,为了更好的突出图像的对比度信息,我们尝试将像素的分布变得统一,换句话说就是让在同一阈值区间内像素点的个数尽量相同。
直方图均衡化的理论基础关于概率的分布函数。简单的讲对于连续型随机变量,分布函数等于等于随机变量在某一区间上对概率密度函数的积分。分布函数可以简单理解为累计发生的概率。对于离散型随机变量来说,分布函数就是每个离散点发生概率的累加。
在介绍了概率基础之后就来说明一下如何根据这个原理实现直方图均衡化。
1.首先计算整张图片的直方图
2.根据直方图求出每个像素点发生的概率
3.对应每个像素点的概率乘以动态范围(如:8bit=255),向下取整然后得到均衡化后的图像。
有很多博主进行了举例计算,后面我会陆续附上matlab,及python实现,以及近期一些其他直方图算法的研究。
import numpy
import pylab
import cv2
import matplotlib.pyplot as plt
def histeq(im, nbr_bins=65536):
print(im.shape, im.size)
img = numpy.zeros(im.shape,