学习opencv时了解到直方图均衡,查阅相关博客虽然有代码实现,但我不太明白原理,在回头看了数字图像处理相关介绍后有了一定程度的理解,现搬运一番。
直方图均衡是图像灰度变换的一种方法,达到的效果即是通过拉伸像素强度分布范围从而增强了图像对比度。把原图的灰度直方图分布变换为近似的均匀分布。
核心概念就在灰度的变换函数:
r代表原图的像素灰度值,s即为变换后灰度。
图像灰度级可作为区间[0,L-1]内的随机变量,则令原图中的灰度分布的概率密度为Pr(r),变换后概率密度为Ps(s)。
由概率密度特点可得
(1)
(ds移到左边,在[0,L-1]范围内积分得到概率为1)
从而只要决定了变换函数T(r),就能得到变换后灰度分布的概率密度。
(2)
该函数有两个主要特点:
1.单调递增,即从原灰度r映射到s值是一一对应的,不会有多个灰度级映射到同一灰度上,便可求逆变换。
2.从形式上可知函数的定义域和值域范围均为[0,L-1]。 不会发生灰度值越界情况。
更神奇的事情在于,将该累计分布函数带入(1)式,得到
即,变换后的灰度是在[0,L-1]内服从均匀分布的随机变量,与原图像的灰度分布没有关系。
无论原图像灰度的概率分布是怎么样的千奇百怪,经过T(r)的变换后都成了一致的豆腐块。
这也就是equalization的含义。不过在图像处理中,灰度分布是离散的,所以经过
(3)
变换后值也是离散的,之能是近似于均匀分布。公式(3)也就是灰度映射的方法。