直方图匹配
直方图均衡技术,可以自动地确定变换函数,而产生具有均匀直方图的输出图像。但是不同图像出现的问题不尽相同,有时根据图像的某种缺陷,我们需要得到处理后具有特殊直方图的图像。均衡化这样单一的方法显然不能成为万能钥匙。
直方图匹配,又称直方图规定化。与直方图均衡化不同,直方图均衡试图使输出图像具有一个平坦的直方图,而直方图匹配是为了得到一个特定的直方图。
基本原理
直方图规定化的基本思路是:对原图像直方图和目标直方图都做均衡化,变成相同的归一化的均匀直方图。然后以此均匀直方图为媒介,再对原图像做均衡化的逆运算。
设原图像和输出图像的灰度变量分别为
r
和
T(r)=(L−1)∫r0pr(w)dwG(z)=(L−1)∫z0pz(w)dw
由于两个式子都为均匀化变换,可得 T(r)=G(z) ,因此 z 满如下条件:
在实践中,一个困难是寻找 T(r) 和 G−1 的有意义的表达式。在处理离散变量时,问题可以大大简化。下面的方法仅为了得到一个近似的直方图。为方便起见,我们重写公式如下:
sk=T(rk)=(L−1)∑j=0kpr(rj)=L−1MN∑j=0knj,k=0,1,...,L−1
其中 MN 是图像的像素总数, nj 是具有灰度值 rj 的像素数, L 是图像中可能的灰度级数。类似地,对目标直方图随机变量的计算变换函数
对一个 q 值,有
实际操作过程中,我们不需要计算 G 的反变换。因为我们处理的图像灰度级是整数(如8比特图像的灰度级是0到255)。我们可以将
实现过程
- 计算原图像的直方图 pr(r) ,并寻找直方图均衡变换,得到 sk 并四舍五入为范围[0,L-1]内的整数。
- 对
q=0,1,...,L−1
计算变换
G
的所有值,其中
pz(zi) 是规定直方图的值。把 G 的值四舍五入为范围[0,L-1]内的整数,并存储在一个表中。 - 对每个值
s0,s1,...,sL−1 ,使用步骤2中存储的 G 值寻找相应的zq 值,以使 G(zq) 最接近 sk ,并存储这些 sk 到 zq 的映射。 - 对输入图像进行均衡化,然后使用步骤3找到的映射把该图像中的每个均衡后的像素值 sk 映射为直方图规定化后的图像中的相应值 zq ,形成直方图规定化后的图像。
计算例子
设输入为大小为64x64像素的3比特数字图像,其灰度分布、直方图值、均衡化后的值(四舍五入)为:
rk | nk | pr(rk) | sk=7∑kj=0pr(rj) |
---|---|---|---|
r0=0 | 790 | 0.19 | 1 |
r1=1 | 1023 | 0.25 | 3 |
r2=2 | 850 | 0.21 | 5 |
r3=3 | 656 | 0.16 | 6 |
r4=4 | 329 | 0.08 | 6 |
r5=5 | 245 | 0.06 | 7 |
r6=6 | 122 | 0.03 | 7 |
r7=7 | 81 | 0.02 | 7 |
设规定直方图为:
zq | pz(zq) | G(zq)=7∑qj=0pz(zj) |
---|---|---|
r0=0 | 0.00 | 0 |
r1=1 | 0.00 | 0 |
r2=2 | 0.00 | 0 |
r3=3 | 0.15 | 1 |
r4=4 | 0.20 | 2 |
r5=5 | 0.30 | 5 |
r6=6 | 0.20 | 6 |
r7=7 | 0.15 | 7 |
将所有的 sk 值映射到相应的 zq 值:
sk | → | zq |
---|---|---|
1 | → | 3 |
3 | → | 4 |
5 | → | 5 |
6 | → | 6 |
7 | → | 7 |
如图显示了变换过程:
虽然图(d)的最终结果并不完全与规定的直方图匹配,但达到了将灰度明确移向灰度级高端的目的。