直方图均衡化
直方图是图像中像素强度分布的图形表达方式。它统计了每一个强度值所具有的像素个数。
直方图均衡化是通过拉伸像素强度分布范围来增强图像对比度的一种方法。
通过上图可以看到像素主要集中在中间的一些强度值上。直方图均衡化要做的就是 拉伸 这个范围(绿圈圈出来的部分) 少有像素分布
其上的 强度值,对其应用均衡化后,得到中间图所示的直方图。
原理:
均衡化指的是把一个分布(给定的直方图)映射 到另一个分布(一个更宽更统一的强度值分布),所以强度值分布会在整个范围内展开。
要想实现均衡化的效果,映射函数应该是一个 累积分布函数 (cdf),对于直方图
,它的
累积分布
是:
要使用其作为映射函数,我们必须对最大值为255(或者用图像的最大强度值)的累积分布
进行归一化。同上例,累积分布函数为:
最后我们使用一个简单的映射过程来获得均衡化后像素的强度值:
在 Opencv Python 实现
1. 拉伸