为了讨论方便起见,以 \(r\)\(s\) 分别表示原图像灰度和经直方图均衡化后的图像灰度,先把图像灰度值放缩到 \(0\)\(1\) 之间。直方图均衡化,本质上是找一个变换函数 \(T\) 来实现灰度变换,使得各个灰度值的点数除了 \(0\) 外,高度尽可能相等。这个变换记为

\[s=T(r) \tag{1} \]

式中,\(T(r)\) 应当满足以下两个条件:

  • \(0≤r≤1\) 时,\(T(r)\) 为单调递增函数;(此条件保证了均衡化后图像的灰度级从黑到白的次序不变)
  • \(0≤r≤1\) 内有 \(0≤T(r)≤1\)。(此条件保证了均衡化后图像的像素灰度值在允许的范围内)
    上式逆变换关系为:

\[r=T^{-1} (s) \tag{2} \]

式中,\(T^{-1} (s)\)\(s\) 同样满足上述的两个条件。

由概率论可知,如果已知随机变量 \(r\) 的概率密度是 \(p_r(r)\),而随机变量 \(s\)\(r\) 的函数,则 \(s\) 的概率密度 \(p_s(s)\) 可以由 \(p_r (r)\) 求出。假定随机变量 \(s\) 的分布函数用 \(F_s (s)\) 表示,根据分布函数的定义有

\[F_s (s)=\int_{-\infty}^s p_s (s)ds =\int_{-\infty}^r p_r (r)dr \tag{3} \]

\(3\)的积分上限 \(s\)\(r\) 满足式\(2\)
根据概率密度函数是分布函数的导数,上式两边对 \(s\) 求导可得:

\[p_s (s)=\frac{dF_s (s)}{ds} =\frac{d\left[\int_{-\infty}^r p_r (r)dr\right]}{ds} =p_r (r)\frac{dr}{ds}=p_r (r) \frac{dr}{d[T(r)]} \tag{4} \]

从上式可以看出,通过变换函数 \(T(r)\) 可以控制图像灰度级的概率密度函数 \(p_s (s)\),从而改善图像的灰度层次,这就是直方图均衡化的理论基础。
因此要做直方图均衡化,就是希望 \(p_s (s)\) 是均匀分布的概率密度函数。

由概率论知识可知,对于区间 \([a,b]\) 上的均匀分布,其概率密度函数等于 \(1/(b-a)\)。 对于归一化的图像,有 \(p_s (s)=1/(1-0) =1\)

\[p_s (s)ds=p_r (r)dr \tag{5} \]

\[ds=p_r (r)dr \tag{6} \]

\[s=T(r)=\int_0^r p_r (r)dr \tag{7} \]

上式就是我们所求的变换函数 \(T(r)\)。它表明当变换函数 \(T(r)\) 是原图像直方图的累积分布概率时,能达到直方图均衡化的目的。

对于灰度级为离散的数字图像,用频率来代替概率,则变换函数 \(T(r_k)\) 的离散形式可以表示为:

\[s_k=T(r_k)=\sum_{i=0}^k p_r (r_i) = \sum_{i=0}^k n_i/N \tag{8} \]

式中,\(0≤r_k≤1,k = 0,1,2,...,L-1\)(注:这里的 \(r_k=k/(L-1)\),表示归一化后的灰度级;\(k\) 表示归一化前的灰度级)。由公式\(8\)可以知道,均衡化后各像素的灰度级 \(s_k\) 可直接由原图像的直方图算出来。需要说明的是,这里的 \(s_k\) 也是归一化后的灰度级,其值在 \(0\)\(1\) 之间;有时需要将其乘以 \(L-1\) 再取整,使其灰度级范围在 \(0\)\(L-1\) 之间,与原图像一致。