直方图均衡化(Histogram Equalization)是一种实用性极高的直方图修正技术。
直方图均衡化又称为灰度均衡化,是指通过某种灰度映射使输入图像转换为在每一灰度级上都有近似相同的像素点数的输出图像,即输出图像的直方图是均匀的。在经过均衡化处理后的图像中,像素将占有尽可能多的灰度级且十分均匀。因此这样的图像将具有较高的对比度和较大的动态范围。
matlab 图像处理工具箱提供了直接用于直方图均衡化的函数 histeq()。本文我们不使用该函数,而是自己实现直方图的均衡化。
直方图均衡化的数学本质是一种映射或者变换。
对于离散灰度级,变换公式如下:
DB=f(DA)=DmaxA∑i=0DAHi=Dmax∑i=0DAHiA
DA、DB
分别表示变换前和变换后的灰度值,式中
Hi
表示第
i
级灰度的像素个数,
I = imread('pout.tif');
[h, w] = size(I);
[cnts, ~] = imhist(I);
pdf = cnts / h / w;
cdf = cumsum(pdf);
I = uint8(255*cdf(I)+.5);
imhist(I)