3.4 直方图规定化
直方图规定化也是一种借助直方图变换来增强图像的方法,它通过将原始图像的直方图转换为某种期望的直方图来获得预期的增强效果。
3.4.1 原理和步骤
直方图均衡化的优点是能够自动增强整幅图像的对比度,但具体增强效果不易控制,总是得到全局均衡化的直方图。在实际应用中,有时需要变换直方图使之成为某个特定的形状,以有选择地增强某个灰度值范围内的对比度,这时可以采用比较灵活的直方图规定化方法。一般来说,通过正确地选择规定化的直方图(增强函数),可获得比直方图均衡化更符合要求的效果。直方图规定化主要有3个步骤(这里设M和N分别为原始图像和规定图像中的灰度级数,并且只考虑N≤M的情况)。
(1)与直方图均衡化类似,对原始图像的直方图进行灰度均衡化:
(2)规定需要的直方图,并进行能使其均衡化的变换:
(3)反转步骤(2)中的变换并作用于步骤(2)的结果,即将原始直方图中各灰度的统计值对应映射到规定的直方图中,也就是将所有pf(fi)对应映射到pu(uj)中。
下面借助一个具体的例子来说明。设一幅原始图像的直方图如图3-10(a)所示,而需要的规定化直方图如图3-10(b)所示,它们对应的累积直方图可分别由式(3-11)和式(3-12)算得,并且分别如图3-10(c)和图3-10(d)所示。要实现规定化映射,就要将原始累积直方图在步骤(3)中转化成尽可能接近规定化累积直方图的形状。这种转化可以采取不同的策略,将在3.4.2节中讨论。
图3-10 直方图规定化
例3-10 直方图规定化效果示例
图3-11所示为直方图规定化效果示例。
图3-11 直方图规定化效果示例
图3-11(a)为原始图像,与图3-9(a)相同。在例3-9中,直方图均衡化的结果为图3-9(c),主要改变是整幅图像对比度的增加,但在一些较暗的区域,仍有些细节不太清楚。在本例中,利用如图3-11(b)所示的规定化函数对原始图像进行直方图规定化,结果如图3-11(c)所示,对应的直方图如图3-11(d)所示。由于这里的规定化函数在高灰度区的值较大,所以与图3-9(c)相比,直方图规定化的结果比直方图均衡化的结果更亮,较暗区域中的一些细节更为清晰。将图3-11(d)与图3-9(d)相比,从直方图来看,图3-11(d)中高灰度值一侧更为密集。
3.4.2 单映射规则和组映射规则
在离散空间中,在直方图规定化的步骤(3)中采用什么样的对应规则很重要,因为有取整误差的影响。
一种常用的方法是,先从小到大依次找到能使式(3-13)最小的k和l:
然后将pf(fi)逐个对应到pu(uj)中去。由于这里的每个pf(fi)是一一对应过去的,可以称为单映射规则(SML)。这种方法简单直观,但有时会有较大的取整误差。
另一种常用的方法是使用组映射规则(GML)。设有一个整数函数I(l),l=0,1,…,N-1,满足0≤I(0)≤…≤I(l)≤…≤I(N-1)≤M-1,要确定能使式(3-14)最小的I(l):
如果l=0,则将i从0到I(0)的pf(fi)一起对应到pu(u0)中去;如果l≥1,则将i从I(l-1)+1到I(l)的pf(fi)都对应到pu(uj)中去。
例3-11 单映射规则和组映射规则示例
单映射规则和组映射规则可借助图示的方法来解释。将累积直方图画成一个长条,其中每段对应原始直方图中的一项。这里仍利用图3-10中的数据。
先考虑单映射规则,如图3-12所示。单映射是从原始累积直方图向规定化累积直方图进行的,所以如果要将某些原始累积直方条映射到规定化累积直方条上时,需要按最短距离选择(取尽可能竖直的线)。据此,原始累积直方图中的0.10、0.15和0.30这3项都映射到规定化累积直方图的0.30这一项上,注意0.50根据式(3-13)也映射到规定的0.30上(见实线),而不是映射到0.75上(见虚线);接下来,0.7映射到0.75上,0.85也映射到0.75上(见实线),而不是映射到1.00上(见虚线);最后,0.90和1.00都映射到1.00上。
图3-12 单映射规则示例
直方图规定化使用的组映射是从规定化累积直方图向原始累积直方图映射的,如图3-13所示,在对规定化累积直方条与原始累积直方条建立映射关系时,需要按最短距离选择(取尽可能竖直的线)。我们仍利用图3-10中的数据。根据式(3-14),规定化累积直方图中的0.30包括了原始累积直方图中的0.10、0.15和0.30这3项;0.75包括了0.50和0.70这2项;1.00包括了0.85、0.90和1.00这3项。直观来看,用组映射方法得到的映射线比较垂直,这表明规定化累积直方图和原始累积直方图比较一致。
图3-13 组映射规则示例
上述两种方法的运算步骤和结果总结在表3-2中(其中,符号“→”代表映射)。
表3-2 直方图规定化计算列表
注:表中步骤6S~8S对应单映射规则,步骤6G~8G对应组映射规则。
例3-12 单映射规则和组映射规则对比
将例3-11在两种情况下得到的直方图进行比较,如图3-14所示。其中,图3-14(a)为用单映射规则得到的结果,与图3-10(b)的差距较大;图3-14(b)为用组映射规则得到的结果,基本与图3-10(b)一致。
图3-14 直方图规定化结果对比
最后讨论一下单映射规则和组映射规则的误差问题。映射产生的误差取决于两个直方图之间的差别,这个差别可用各映射间数值的差值来表示,对各差值取绝对值并求和就可表示误差。一般来说,这个和越小,映射效果越好,在理想情况下,这个和为0。
两个规则在连续情况下都能给出精确的规定化结果,但在离散情况下的精确程度通常不一样。当把某个pf(fi)对应到pu(uj)中时,运用单映射规则可能产生的最大误差是pu(uj)/2,而运用组映射规则可能产生的最大误差是pf(fi)/2。因为N≤M,所以必有pf(fi)/2≤pu(uj)/2,也就是说,组映射规则的期望误差不会大于单映射规则的期望误差。另外,由图3-12和图3-13可以看出,单映射规则是一种统计有偏的映射规则,因为一些对应灰度级会被有偏地映射到接近计算开始时的灰度级;而组映射规则是统计无偏的。实际情况是,使用组映射规则总会得到比单映射规则更接近规定化直方图的结果,并且在很多情况下,组映射规则产生的误差要远小于单映射规则产生的误差。仍以上述数据为例,对单映射规则来说,这个和为|0.50-0.30|+|0.35-0.45|+|0.15-0.25|=0.40;而对组映射来说,这个和为|0.30-0.30|+|0.40-0.45|+|0.30-0.25|=0.10。两相比较,两种映射规则的优劣是很明显的。