直方图均衡化

直方图均衡化是图像处理领域中利用图像直方图进行对比度调整的方法。通过这种方法亮度可以更好的在直方图上分布。

灰度直方图是灰度级的函数,表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。

原理

假设原始图像灰度级范围为[0,L-1],$r_k$为第k级灰度,图像中该像素出现的个数为$n_k$。则图像概率密度为:

\begin{equation}P_{origin}(r_k)=\frac{n_k}{n},k \in \left[0,1,\ldots,L-1 \right]\end{equation}

其中n表示图像像素个数。

现在用t表示变换后的图像灰度,那么就是要求出函数$t=T(r)$使得$P_{target}(s_k)=c$,其中c为常数。首先变换函数T必须要满足下面条件:

  1. 在$ 0 \leq r \leq 1 $范围内为单调递增函数,保证图像的灰度级从黑到白的次序不变;
  2. 在$ 0 \leq r \leq 1 $内,有$ 0 \leq T(r) \leq 1 $,保证变换后的像素灰度在允许范围内;
  3. T的反函数$ T^-1 $同样应该满足上面两个条件;

通过概率统计的知识,我们容易得到关于$ P_{origin} $和$ P_{target} $之间的关系:

\begin{equation} P_{target}(s) = P_{origin}(r) \left | \frac{dr}{ds} \right | \end{equation}

这里给出一个变换函数形式如下:

\begin{equation} s=T(r)=(L-1) \int_{0}^{r}P_{origin}(\chi)d\chi \end{equation}

因为概率密度函数始终为正,且积分单调递增。当$r=L-1$的时候,$s=L-1$保证了灰度范围。满足上面的条件。下面把上诉函数代入密度函数关系式:

\begin{equation}\frac{ds}{dr}=\frac{dT(r)}{dr}=(L-1) \left | \int_{0}^{r}P_{origin}(\chi)d\chi \right | = (L-1)P_{origin}(r)\end{equation}

\begin{equation} P_{target}(s) = P_{origin}(r) \left | \frac{1}{(L-1)P_{origin}(r)} \right | = \frac{1}{L-1} \end{equation}

所以,函数T是我们预期的函数值,通过这个函数就可以对直方图进行均衡化。因为图像灰度为离散值,在实际处理前需要将将函数中积分形式等价替换为求和形式。