我写了一篇关于直方图均衡化和直方图规定化的文章,直接push了代码和实验结果,没有讲原理。想看那篇文章请点击下面:

https://blog.csdn.net/macunshi/article/details/79804547
<https://blog.csdn.net/macunshi/article/details/79804547>

这里我们尽量不用数学符号公式等,而用简单易懂的方式来把直方图均衡化的原理讲一下。其过程可以用下面一个表来展示:

 



是不是看不懂了?没关系,我们一点点来。

(1)确定图像的灰度级


我们要处理的图像是灰度图像,如果是彩色的,需要先转化成灰度图像,然后确定图像的灰度级有多大,一般就是8位的图像,灰度级为0-255,上标示例中的是3位的,灰度级为0-7。

(2)计算原始直方图分布概率p(i)

也就是统计每一个灰度在整个图像中像素个数的占比,总和为1。记第i个灰度的直方图分布概率为p(i)。

(3)计算直方图概率累计值s(i)

这里s(0)=p(0);

      s(1)=p(0)+p(1);

      s(i)=p(0)+p(1)+……+p(i)    where(i>1)。

(4)根据公式求取像素映射关系

ss(i)=int{[max(pix)-min(pix)]*s(i)+0.5}

其中,pix指原图像中的灰度值,需要求取原图像中的最大灰度值减去最小灰度值。

而有的均衡化理论中是(2^n-1)-0,也就是该灰度级中的最大值减去灰度最小值。ss(i)是第i灰度级所对应的均衡化图像中的灰度级。

(5)灰度映射

上一步找到了原图像和均衡化图像灰度的对应关系,对原图进行操作,将每个像素映射成新的像素即可。

此时图像均衡化已经完成,当然你也可以再次统计灰度概率,观察一下结果。

直方图反映了图像的清晰程度,当直方图均匀分布时,图像最清晰。由此,我们利用直方图达到了使图像清晰的目的。

 

后续再写直方图规定化的计算过程,传送门如下:

https://blog.csdn.net/macunshi/article/details/79819263
<https://blog.csdn.net/macunshi/article/details/79819263>