图像均衡化

参考链接:

https://www.cnblogs.com/qiqibaby/p/5321509.html

blog.163.com/sunhuan315@126/blog/static/38117190200992531224611/

一、基本介绍

图像均衡化得目的是为了提高图像的对比度。对于灰度分布比较集中的图(整体太暗或者太亮),可以起到均衡作用(有明有暗)。

看两张来自网上的灰度分布图,对比一下。

图1.1  图片链接(http://blog.csdn.net/xiajun07061225/article/details/6910129)

右上和右下就是灰度的分布变化结果。灰度分布直方图的横轴表示灰度等级,

纵轴表示该灰度等级下的像素点数。这个要理解好。

二、数学解释

0. 前提:常见的灰度像素范围是 [0, 255],在这里需要先归一化到 [0, 1]。

1. 假设原图的灰度为 r [归一化到0-1],直方图均衡化后的结果是 s [结果是0-1],直方图均衡化操作 T(),得到数学表达式:2. 当然不是任意的变换T都可以拿来做 直方图均衡化。

需要满足两个要求(直观上就可以理解)

    #1 在 r 的区间上,T需要是一个单调递增函数。因为这可以保证,变换后的结果,像素之间的明暗关系不会错(原来比我暗的还比我暗,原来比我亮的还比我亮);

    #2 s 的取值范围要和 r 相同。因为,要是超过了,255以上就存不了了,那就麻烦了。

所以,T的选择之一,就是“累加概率密度函数”。大家的选择,群众的眼睛。

解释一下:p是概率密度,这个公式可以参考《概率统计》

但是,总所周知,像素是离散的,怎么可以积分嗯呢?那就求和咯。于是,得

解释一下:P是每级灰度的概率(见下一个公式),这里的 k 就是 r

解释一下:n 是像素总和;nk 是第 k 级灰度范围捏的像素点数;

L 就是划分的级数;

综合以上各式,得

解释一下:(公式有问题)公式中的 k 就是 r ,

P的下角标r忽略之,P(r) 表示灰度为 r 的概率。

3. 算法的大致过程

#1 计算灰度图像的直方图分布,得到每个级别灰度的概率。

#2 根据公式计算每个像素的新值。

三、代码

OpenCV的实现

cv::equalizeHist(src, dst);

自己造轮子

https://www.cnblogs.com/qiqibaby/p/5321509.html

原文地址:https://www.cnblogs.com/alexYuin/p/7923012.html