直方图均衡化的数学原理

首先从一个概率问题说起

设随机变量XX, YY,
其中XX服从参数为θ\theta的指数分布,即XX的概率密度函数为

f(x)={1θexθ,x>00,Otherwisef(x)= \begin{cases} \frac{1}{\theta}e^{-\frac{x}{\theta}}, &x>0 \\[2ex] 0, &\text{Otherwise} \end{cases}

并且YYXX满足关系

y=g(x)=1exθy=g(x)=1-e^{-\frac{x}{\theta}}

求解YY的概率密度函数

该题目是典型的求解随机变量的函数的分布的问题,随便找一本概率论课本,书上都会提供这样的公式:

fY(y)={fX[h(y)]h(y)α<y<β0Otherwisef_Y(y)= \begin{cases} f_X[h(y)]|h'(y)| &\alpha<y<\beta \\[2ex] 0 &\text{Otherwise} \end{cases}

其中:

α=min{g(),g()},β=max{g(),g()}\alpha=min\{g(-\infty), g(\infty)\},\beta=max\{g(-\infty),g(\infty)\}

采用此公式可以求解如下:
y=g(x)=1exθy=g(x)=1-e^{-\frac{x}{\theta}}可得

x=h(y)=θln(1y)x=h(y)=-\frac{\theta}{ln(1-y)}

因为x>0x>0,所以

fY(y)=fX[h(y)]h(y)=fX[h(y)]h(y)=1θexθ[dxdy(θln(1y))]=1θeθln(1y)θθ1y=1θeln(1y)θ1y=1yθθ1y=1\begin{aligned} f_Y(y) & = f_X[h(y)]|h'(y)| \\[2ex] & = f_X[h(y)]h'(y) \\[2ex] & = \frac{1}{\theta}e^{-\frac{x}{\theta}}[\frac{dx}{dy}(-\frac{\theta}{ln(1-y)})] \\[2ex] & = \frac{1}{\theta}e^{-\frac{-\frac{\theta}{ln(1-y)}}{\theta}}\frac{\theta}{1-y} \\[2ex] & = \frac{1}{\theta}e^{ln(1-y)}\frac{\theta}{1-y} \\[2ex] & = \frac{1-y}{\theta}\frac{\theta}{1-y} \\[2ex] & = 1 \end{aligned}

并且

α=min{g(),g()}=0,β=max{g(),g()}=1\alpha=min\{g(-\infty),g(\infty)\}=0,\beta=max\{g(-\infty),g(\infty)\}=1

故可得随机变量YY的分布函数为:

fY(y)={1,0<x<10,Otherwisef_Y(y)= \begin{cases} 1, &0<x<1 \\[2ex] 0, &\text{Otherwise} \end{cases}


在上题中,变换y=g(x)=1exθy=g(x)=1-e^{-\frac{x}{\theta}}将服从指数分布的随机变量X转化为服从均匀分布的随机变量YY

了解过直方图均衡化的看客,在这里估计心中有数了。若设图像灰度级为随机变量XX,则图像直方图近似随机变量XX的概率密度函数(大数定律?)。图像直方图均衡化目的是将图像直方图变得更加均匀,实际上是通过某种变换,将非均匀分布的随机变量XX变换为均匀分布随机变量YY。如上题,若一副图像的灰度级满足指数分布,则通过变换y=g(x)=1exθy=g(x)=1-e^{-\frac{x}{\theta}}即可将其变为均匀分布,以达到直方图均衡化的目的。

变换函数的寻找

很明显,图像灰度级的分布一般不是指数分布,我们需要寻找对于任意灰度级分布都能将其变换为均匀分布的变换函数。
设原始图像灰度级为随机变量XX,变换后的图像灰度级为随机变量YY。观察变换公式:

fY(y)=fX[h(y)]h(y),α<y<βf_Y(y)=f_X[h(y)]|h'(y)|,\alpha<y<\beta

直接令fY(x)=k,0<k<1f_Y(x)=k,0<k<1为均匀分布,可求得

h(y)=dxdy=kfX[h(y)]=kfX(x)|h'(y)|=|\frac{dx}{dy}|=|\frac{k}{f_X[h(y)]}|=|\frac{k}{f_X(x)}|

其中fX(x)f_X(x)为随机变量X的概率密度函数,满足fX(x)0f_X(x)\ge0,故

dxdy=kfX(x)\frac{dx}{dy}=\frac{k}{f_X(x)}

利用反函数求导法则,可得

dydx=fX(x)k\frac{dy}{dx}=\frac{f_X(x)}{k}

此时采用积分即可求得变换函数

0ydy=0xfX(x)kdxy=g(x)=1k0xfX(x)dx\begin{aligned} \int_0^ydy &=\int_0^{x}\frac{f_X(x')}{k}dx '\\[2ex] \Rightarrow y&=g(x)=\frac{1}{k}\int_0^{x}f_X(x')dx' \end{aligned}

该式即为直方图均衡化的所用的变换函数
最后有一个小问题,即该式没有考虑图像的灰度级的个数。对于灰度级总个数为L的图像,其均衡化图像所服从的均匀分布函数应为f(x)=1/(L1)f(x)=1/(L-1),结合上面推导过程可知k=1/(L1)k=1/(L-1);此时也可以知道0<x,y<L10<x,y<L-1。故最终的结论应为:

若灰度级个数为LL的图像的灰度分布服从随机变量XX,其概率密度函数为fX(x)f_X(x)
则通过变换:

y=g(x)=(L1)0xfX(x)dx,0<x<L1y=g(x)=(L-1)\int_0^xf_X(x')dx',0<x<L-1

得到的变换图像的灰度分布服从均匀分布,其概率密度函数为fY(y)=1/(L1)f_Y(y)=1/(L-1)

应用方法

当然实际的图像灰度不是连续的,而是一级一级跳变。一般而言,一幅灰度级个数为LL的灰度图像,上述变换可改写为:

y=g(x)=(L1)t=0xHX(t)y=g(x)=(L-1)\sum_{t=0}^{x}H_X(t)

HX(t)H_X(t)即为原始图像的灰度直方图。
可以看出,该式通过累加原始图像直方图,来建立原始图像灰度级随机变量XX和均衡化图像灰度级随机变量YY的映射。此时对原始图像的每一个样本(即每一个像素)进行映射,即可得到其对应的均衡化图像。这里不再赘述其详细步骤,随便找一本数字图像处理教程都会有相关内容。

0%